Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
初級會員
|
參照:
Hello, 感謝您提供的建議 先前測試時, 參考 MCC 的 Bootloader 在 Goto App 前有加過 STKPTR = 0x00 & BSR = 0x00 但因為結果還是異常, 所以在返回前一版本的時候就沒加回來了 我會在最新版本再加回來, 這樣確實比較保險
發表於: 2021/8/19 13:35
|
|||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
版主
|
我替同事 Ken 來 po 出他的建議回覆:
看了一下您的PIC18F27Q10的Bootloader與Application, 以下是我的建議. 1. 下面是Bootloader remapped 中斷向量到Application. 建議從Bootloader跳轉到App時, 要將Stack Pointer初始化後再下Goto Stack pointer初始化 如附圖所示須將 STKPTR = 0x00 將堆疊指標歸零。
發表於: 2021/8/19 12:00
|
|||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
初級會員
|
參照:
已回寄給了, 謝謝您!
發表於: 2021/8/19 9:39
|
|||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
資深會員
|
email給您了~
發表於: 2021/8/18 16:31
|
|||
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
|
||||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
初級會員
|
參照:
感謝您, 是否方便用 Line 聯繫您? 若可以, 請將 Line ID 寄至 picer2012@gmail.com
發表於: 2021/8/18 16:07
|
|||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
初級會員
|
參照:
Hello, 我有在 Program Memory 比對一小部分頭尾程式, 沒看到不一致(同 Hex File 比對) 我不是單純靠 Bootloader 載入 APP 做幾次由 Bootloader 寫入都相同異常, 就基本不再用 Bootloader 寫 APP, 畢竟這動作較耗時 使用 Debug 模式去看程式跑到哪邊是可以, 但是我覺得與實際燒錄執行有出入。 實際燒錄用燈號來表示程式執行 ”經過/沒經過” 的地方與 Debug 停止處不符合。 而且我透過 X IDE 做結合 / 編譯 / 燒錄, 期間只有設置 Codeoffset 不一樣 程式佔用也不足 OTA 更新區 的 30% 問題是 Codeoffset 0x1000 會正常, 設置 Codeoffset 0x10000 會不正常 當然設置 Codeoffset 0x10000 的時候也要讓 Bootloader 預設跳轉一致
發表於: 2021/8/18 15:47
|
|||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
資深會員
|
或是您可以提供Bootloader與OTA application專案, 我可以幫忙看一下.
發表於: 2021/8/18 15:39
|
|||
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
|
||||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
版主
|
參照:
透過 Target Memory Views 跟 Hex File 要人工比對的話 不用全部比對,只要先確認 APP 有載入 0x10000 的位址即可,在過來用除錯工具對你的 APP 來除錯,當然是先執行看看其功能是否正確,如有問題再詳細檢查原因為何? 當然這時候暫時可以忽略 Bootloader 的跳轉,直接執行 0x10000 的程式碼。
發表於: 2021/8/18 13:39
|
|||
|
Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
|
||||
---|---|---|---|---|
版主
|
參照:
有的, 上述的加載 Bootloader.h 就是透過 MPLAB X IDE 做的(編譯結合與燒錄) 看起來你應該是直接燒錄程式後就執行功能的測試。 不知道你有沒有用除錯的工具測試過。 有興趣想問一下,你的 APP 載入到 0x10000 的位址後,請問你有在 X IDE 下的 Program Memory 視窗 先確認一下的程式碼嗎? 或許你可以看一下 Disassembly 所顯示的程式。 你也可以將游標先指到 0x10000 的位址後再按老鼠右鍵將 PC Counter 設在此位址後,用單步執行或全速執行的方式來單獨驗證 0x10000 的應用程式是不是可以正確執行。 如果只是單純的靠 Bootloader 載入 APP 的話,有問題時比較不好分析的。建議還是要使用開發工具或者也可以使用 Simulator 來確認。
發表於: 2021/8/18 13:28
|
|||
|