• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (picer2012)




Re: gld 如何引用外部定義
#1
初級會員
初級會員


感謝提供測試方式。

發表於: 2023/1/12 11:24
頂部


gld 如何引用外部定義
#2
初級會員
初級會員


請教如何讓 .gld 檔能夠引用外部定義?

例如在 ABC.h 內含 #define XYZ 2

如何在 .gld 內實現如底下判斷式

  #if XYZ > 1
    ...
  #else
    ...
  #endif

發表於: 2023/1/11 13:22
頂部


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


參照:

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
但因為結果還是異常, 所以在返回前一版本的時候就沒加回來了
我會在最新版本再加回來, 這樣確實比較保險

發表於: 2021/8/19 13:35
頂部


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


參照:

GodBlessU wrote:
email給您了~


已回寄給了, 謝謝您!

發表於: 2021/8/19 9:39
頂部


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


參照:

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


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

發表於: 2021/8/18 16:07
頂部


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


參照:

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 預設跳轉一致

發表於: 2021/8/18 15:47
頂部


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


參照:

GodBlessU wrote:
可以麻煩確認一下透過Bootloader來更新OTA區 : 0x10000 ~ 0x1FFFF之後, 可以透過Target Memory View比對一下MCU的OTA區的flash內容與 OTA區的hex file內容是否相同.

如果燒錄不完整或是不正確, 即使有跳轉到OTA應用程式, 接下來也可能會動作異常.


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

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

發表於: 2021/8/18 13:21
頂部


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


參照:

GodBlessU wrote:
建議您先將Bootloader + OTA 應用程式透過MPLAB X IDE -> Loadable功能將兩個專案的hex file合併後燒錄到MCU, 看是否可以正常運作.

p.s.: 先撇開Bootloader燒錄OTA區塊後是否正常的問題


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

發表於: 2021/8/18 13:10
頂部


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


參照:

Ryang wrote:
可以確定一下 Bootloader 執行完後,程式的控制權有交到你的 AP 程式並且是從你所設定的 0x10000 位址開始執行程式?


Hello,
感謝回覆
可以確定, 因為我有在 APP 額外加燈號測試, 確實有進 0x10000 且有繼續往下執行一小部份
甚至都透過燈號知道執行到哪邊就會異常
我將那行程式註解掉, 重新編譯執行, 它就在註解掉的下一行會異常
而且不管下一行是不是副程式或簡單的 if 判斷式都會異常,
就算在 APP 開頭將中斷全關掉, 也不能正常跑完開頭不需要進中斷的那部份程式

我寫一個簡單新的 APP,功能是由 Timer 2 每 0.1 秒中斷反向 Led
這個新 APP.h + 相同 Bootloader.h 在 0x1000 能正常, 偏移改 0x10000 也正常能閃燈

原本的 APP 是比較大, 但也不過佔用全部不到 1/4 的 PFM

發表於: 2021/8/18 12:34
頂部


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


參照:

GodBlessU wrote:
Hello,

在Bootloader程式的起始要將中斷向量重新對映到應用程式的新位址, 請參考下面程式.


asm ("psect intcode,global,reloc=2,class=CODE,delta=1");
asm ("GOTO 0x10008");

asm ("psect intcodelo,global,reloc=2,class=CODE,delta=1");
asm ("GOTO 0x10018");


Hello,
感謝回覆
我上面有說了喔, 我有重新定定義偏移重置位置, 也包含兩區各自的中斷偏移位置
這些都在 Bootloader 裡面有設置好了
而且程式有由 Bootloader 運作移交給 0x10000 (更新區的起始) 並往下執行一小段程式
這一小段程式其實也沒有進中斷, 就算我關掉 GIE 等也是一樣異常

發表於: 2021/8/18 11:46
頂部



(1) 2 3 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
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/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------