[問題] 請問bootloader的中斷向量是做啥用的

看板LinuxDev作者 (stellvia)時間14年前 (2011/08/24 22:57), 編輯推噓5(5011)
留言16則, 4人參與, 最新討論串1/1
就是我剛開始接觸bootloader 看到bootloader最前面都會有中斷向量表 但這些中斷向量似乎都沒有用到 因為一開始就 b reset 然後我又看了 這些中斷卻又真的有實作 那這些中斷是什麼時候被用到呢? ps.請問這些中斷與entry-armv.S 這裡有關聯嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.75.78

08/26 13:37, , 1F
一開始就b reset是因為只要你的機器一上電或是開關復位
08/26 13:37, 1F

08/26 13:39, , 2F
就算是一種中斷, 其他中斷向量的用途當然是等到中斷控
08/26 13:39, 2F

08/26 13:40, , 3F
制器發送中斷訊號再予以觸發
08/26 13:40, 3F

08/26 15:30, , 4F
cpu發生exception的時候就會用到了...
08/26 15:30, 4F

08/27 20:35, , 5F
我要問的是這些中斷處理怎麼被mapping到kernel裡面
08/27 20:35, 5F

08/27 20:36, , 6F
因為bootlader stage2 load kernel to ram 之後
08/27 20:36, 6F

08/27 20:36, , 7F
不就relase了 那 bootloader裡面定義的中斷跟kernel有
08/27 20:36, 7F

08/27 20:36, , 8F
有什麼關聯?
08/27 20:36, 8F

08/28 01:27, , 9F
以ARMx來說,放向量表的位址是固定的...
08/28 01:27, 9F

08/28 01:41, , 10F
kernel會搬移向量表放在0xFFFF0000,可參考trap_init()
08/28 01:41, 10F

08/28 01:51, , 11F
以你的問題來說,uboot跟kernel兩邊的中斷向量不是同一個~
08/28 01:51, 11F

08/28 01:54, , 12F
至於一開始就b reset是因為ARM上電後的第一條指令位址是0
08/28 01:54, 12F

08/28 01:55, , 13F
一個32bit的位址當然放不下所有的reset指令,所以只能存
08/28 01:55, 13F

08/28 01:56, , 14F
一條指令叫b reset,跳轉到別的地方去初始化~
08/28 01:56, 14F

08/28 22:30, , 15F
補充一下,cpu上電後第一條指令並不一定都在0x0,這是可以在
08/28 22:30, 15F

08/28 22:30, , 16F
ic設計時去決定的...
08/28 22:30, 16F
文章代碼(AID): #1ELH5WN5 (LinuxDev)
文章代碼(AID): #1ELH5WN5 (LinuxDev)