• slider image 325
  • slider image 326
  • slider image 327
  • slider image 328
  • slider image 329
  • slider image 330
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#19
資深會員
資深會員


查看用戶資訊
如版主之前所建議, 可以將Bootloader Loadable Application code,使用MPLAB X IDE + PICKit 4來執行Debug mode去trace 應用程式碼執行到哪裡(可搭配disassembly觀察)

發表於: 8/19 15:52
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#18
初級會員
初級會員


查看用戶資訊
參照:

Ryang wrote:
我替同事 Ken 來 po 出他的建議回覆:

看了一下您的PIC18F27Q10的Bootloader與Application, 以下是我的建議.

1. 下面是Bootloader remapped 中斷向量到Application. 建議從Bootloader跳轉到App時, 要將Stack Pointer初始化後再下Goto

Stack pointer初始化 如附圖所示須將 STKPTR = 0x00 將堆疊指標歸零。


Hello,
感謝您提供的建議
先前測試時, 參考 MCC 的 Bootloader 在 Goto App 前有加過 STKPTR = 0x00 & BSR = 0x00
但因為結果還是異常, 所以在返回前一版本的時候就沒加回來了
我會在最新版本再加回來, 這樣確實比較保險

發表於: 8/19 13:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#17
版主
版主


查看用戶資訊
我替同事 Ken 來 po 出他的建議回覆:

看了一下您的PIC18F27Q10的Bootloader與Application, 以下是我的建議.

1. 下面是Bootloader remapped 中斷向量到Application. 建議從Bootloader跳轉到App時, 要將Stack Pointer初始化後再下Goto

Stack pointer初始化 如附圖所示須將 STKPTR = 0x00 將堆疊指標歸零。

Attach file:



jpg  擷取.JPG (60.92 KB)
16_611dd7712112e.jpg 911X421 px

發表於: 8/19 12:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#16
初級會員
初級會員


查看用戶資訊
參照:

GodBlessU wrote:
email給您了~


已回寄給了, 謝謝您!

發表於: 8/19 9:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#15
資深會員
資深會員


查看用戶資訊
email給您了~

發表於: 8/18 16:31
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#14
初級會員
初級會員


查看用戶資訊
參照:

GodBlessU wrote:
或是您可以提供Bootloader與OTA application專案, 我可以幫忙看一下.


感謝您, 是否方便用 Line 聯繫您? 若可以, 請將 Line ID 寄至
picer2012@gmail.com

發表於: 8/18 16:07
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#13
初級會員
初級會員


查看用戶資訊
參照:

Ryang wrote:
參照:
有的, 上述的加載 Bootloader.h 就是透過 MPLAB X IDE 做的(編譯結合與燒錄)
然後我有再測試將 APP.h 透過 Bootloader 去寫入 OTA 區塊, 會得到同樣異常的結果


看起來你應該是直接燒錄程式後就執行功能的測試。
不知道你有沒有用除錯的工具測試過。

有興趣想問一下,你的 APP 載入到 0x10000 的位址後,請問你有在 X IDE 下的 Program Memory 視窗 先確認一下的程式碼嗎? 或許你可以看一下 Disassembly 所顯示的程式。

你也可以將游標先指到 0x10000 的位址後再按老鼠右鍵將 PC Counter 設在此位址後,用單步執行或全速執行的方式來單獨驗證 0x10000 的應用程式是不是可以正確執行。

如果只是單純的靠 Bootloader 載入 APP 的話,有問題時比較不好分析的。建議還是要使用開發工具或者也可以使用 Simulator 來確認。


Hello,
我有在 Program Memory 比對一小部分頭尾程式, 沒看到不一致(同 Hex File 比對)

我不是單純靠 Bootloader 載入 APP
做幾次由 Bootloader 寫入都相同異常, 就基本不再用 Bootloader 寫 APP, 畢竟這動作較耗時

使用 Debug 模式去看程式跑到哪邊是可以, 但是我覺得與實際燒錄執行有出入。
實際燒錄用燈號來表示程式執行 ”經過/沒經過” 的地方與 Debug 停止處不符合。

而且我透過 X IDE 做結合 / 編譯 / 燒錄, 期間只有設置 Codeoffset 不一樣
程式佔用也不足 OTA 更新區 的 30%
問題是 Codeoffset 0x1000 會正常, 設置 Codeoffset 0x10000 會不正常
當然設置 Codeoffset 0x10000 的時候也要讓 Bootloader 預設跳轉一致

發表於: 8/18 15:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#12
資深會員
資深會員


查看用戶資訊
或是您可以提供Bootloader與OTA application專案, 我可以幫忙看一下.

發表於: 8/18 15:39
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#11
版主
版主


查看用戶資訊
參照:
透過 Target Memory Views 跟 Hex File 要人工比對的話
不管透過 IDE 結合編譯燒錄還是由 Bootloader
由於資料有大於 20K Bytes, 有點難度 0.0
我稍微比較頭尾是一致的

另外我燒錄不只一次, 也有換不同顆的 MCU, 應該不會次次都燒錄失敗或不完全


不用全部比對,只要先確認 APP 有載入 0x10000 的位址即可,在過來用除錯工具對你的 APP 來除錯,當然是先執行看看其功能是否正確,如有問題再詳細檢查原因為何?

當然這時候暫時可以忽略 Bootloader 的跳轉,直接執行 0x10000 的程式碼。

發表於: 8/18 13:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 無關中斷,使用 Codeoffset 會使程式運作不正常
#10
版主
版主


查看用戶資訊
參照:
有的, 上述的加載 Bootloader.h 就是透過 MPLAB X IDE 做的(編譯結合與燒錄)
然後我有再測試將 APP.h 透過 Bootloader 去寫入 OTA 區塊, 會得到同樣異常的結果


看起來你應該是直接燒錄程式後就執行功能的測試。
不知道你有沒有用除錯的工具測試過。

有興趣想問一下,你的 APP 載入到 0x10000 的位址後,請問你有在 X IDE 下的 Program Memory 視窗 先確認一下的程式碼嗎? 或許你可以看一下 Disassembly 所顯示的程式。

你也可以將游標先指到 0x10000 的位址後再按老鼠右鍵將 PC Counter 設在此位址後,用單步執行或全速執行的方式來單獨驗證 0x10000 的應用程式是不是可以正確執行。

如果只是單純的靠 Bootloader 載入 APP 的話,有問題時比較不好分析的。建議還是要使用開發工具或者也可以使用 Simulator 來確認。

發表於: 8/18 13:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://mu.microchip.com/page/tmu
http://www.microchip.com.tw/modules/tadnews/page.php?ncsn=2&nsn=41
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
https://page.microchip.com/APAC-PrefCenters-TW.html
https://www.youtube.com/user/MicrochipTechnology
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
https://www.microchip.com/development-tools/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源