[問題] 關於mcu bootloader

看板C_and_CPP作者 (高進)時間6年前 (2018/06/20 18:46), 編輯推噓6(6013)
留言19則, 7人參與, 6年前最新討論串1/1
小弟使用工具爲keilc5 晶片爲silicon f380 Bootloader code 放在 0x0000-0x13ff Application code 放在 0x1400-0xff00 想請問一開始在 bootloader code 判斷進application code 時我該怎麼做才能讓程式跑 到0x1400的位置開始執行application code -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.69.77 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1529491600.A.8CA.html

06/20 20:06, 6年前 , 1F
要先把cpu上的pc register指到application code的起點
06/20 20:06, 1F

06/20 20:06, 6年前 , 2F
,這個就要用組語寫了
06/20 20:06, 2F

06/20 23:00, 6年前 , 3F
可以做個function pointer指向0x1400再呼叫即可
06/20 23:00, 3F

06/21 00:25, 6年前 , 4F
goto
06/21 00:25, 4F

06/21 09:02, 6年前 , 5F
要確定一下mcu的reset中斷向量表的位置是不是就是app
06/21 09:02, 5F

06/21 09:02, 6年前 , 6F
起始位置(有的mcu是在中斷向量表的最後一個位置),是
06/21 09:02, 6F

06/21 09:02, 6年前 , 7F
的話讓pc直接指向此位置。可以用組語做,就要去看mcu
06/21 09:02, 7F

06/21 09:02, 6年前 , 8F
的組語用法。用c做的話,宣告一個type void,讓他等於
06/21 09:02, 8F

06/21 09:02, 6年前 , 9F
起始位址,再讓改變數變成函數var();就跳過去了。
06/21 09:02, 9F

06/21 09:41, 6年前 , 10F
樓上大大說的都是一些常用的方式,另外有些compiler
06/21 09:41, 10F

06/21 09:42, 6年前 , 11F
也支援goto *((void *)jump_addr);的用法
06/21 09:42, 11F

06/21 09:45, 6年前 , 12F
請問指標函數能指向main嗎,因我的application 內也有個mai
06/21 09:45, 12F

06/21 09:45, 6年前 , 13F
n
06/21 09:45, 13F

06/21 11:39, 6年前 , 14F
bootloader沒辦法拿到app的symbol吧?我覺得不行
06/21 11:39, 14F

06/21 12:57, 6年前 , 15F
如果你的中斷向量表中有一組 可以直接指到main 兩個不
06/21 12:57, 15F

06/21 12:57, 6年前 , 16F
一樣的中斷向量表 就要指到中斷向量reset的位置
06/21 12:57, 16F

06/22 08:12, 6年前 , 17F
並非指向main這個symbol而是指向main的地址,通常在a
06/22 08:12, 17F

06/22 08:12, 6年前 , 18F
pp起始地址+4的地方吧
06/22 08:12, 18F

06/26 10:02, 6年前 , 19F
感謝
06/26 10:02, 19F
文章代碼(AID): #1RAZ2GZA (C_and_CPP)