轉自:http://blog.csdn.net/qdlovecsj/article/details/6856641
三、關於中斷提示:超級終端提示Dummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf
論壇裡面有人求助,看了貼說要把MMU加進去,是這樣做的,在Main.c中包含標頭檔#include "mmu.h" 把
mmu.c和mmu.h加到工程中,接著在主函數中調用MMU_Init();初始化MMU,好像就解決了,不過自己也不知道為什麼要這樣做,呵呵。
模擬的時候,你的程式是運行在sdram裡面的,也就是0x3000_0000處開始運行
你的中斷向量表通過模擬器已經放在了0x3000_0000處,
開啟mmu是為了把0x3000_0000地址處的值對應到0x0的地方,
因為你的中斷向量表是儲存在0x0開始的地方,當中斷髮生時的第一時間
CPU會去0x0地方查中斷向量表看是發生了什麼中斷,是reset還是IRQ還是FIQ還是取資料終止或取指令終止
按鍵外部中斷是IRQ中斷,然後CPU會去IRQ開始的地方找到你的中斷服務函數,這個時候輪到了你的中斷服務函數啟動並執行時間了
所以你不開啟MMU就不會進入中斷服務函數
還有一種方法就是燒寫一個簡單的小程式到nandflash的block 0,這個小程式要包含中斷向量表
當你上電的時候block 0的東西被CPU複製到了叫作stepping stone的地方,他的地址也是0
這個時候你模擬你的程式,不開啟mmu也是可以找到中斷服務函數了,因為你有中斷向量表了 三、關於中斷提示:超級終端提示Dummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf
論壇裡面有人求助,看了貼說要把MMU加進去,是這樣做的,在Main.c中包含標頭檔#include "mmu.h" 把
mmu.c和mmu.h加到工程中,接著在主函數中調用MMU_Init();初始化MMU,好像就解決了,不過自己也不知道為什麼要這樣做,呵呵。
模擬的時候,你的程式是運行在sdram裡面的,也就是0x3000_0000處開始運行
你的中斷向量表通過模擬器已經放在了0x3000_0000處,
開啟mmu是為了把0x3000_0000地址處的值對應到0x0的地方,
因為你的中斷向量表是儲存在0x0開始的地方,當中斷髮生時的第一時間
CPU會去0x0地方查中斷向量表看是發生了什麼中斷,是reset還是IRQ還是FIQ還是取資料終止或取指令終止
按鍵外部中斷是IRQ中斷,然後CPU會去IRQ開始的地方找到你的中斷服務函數,這個時候輪到了你的中斷服務函數啟動並執行時間了
所以你不開啟MMU就不會進入中斷服務函數
還有一種方法就是燒寫一個簡單的小程式到nandflash的block 0,這個小程式要包含中斷向量表
當你上電的時候block 0的東西被CPU複製到了叫作stepping stone的地方,他的地址也是0
這個時候你模擬你的程式,不開啟mmu也是可以找到中斷服務函數了,因為你有中斷向量表了