會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





bootloader 及 endapplication 的 JUMP 問題
新會員
註冊日期:
1月13日 17:42:39
所屬群組:
註冊會員
文章: 17
等級: 2; EXP: 86
HP : 0 / 46
MP : 5 / 66
離線
您好.

我在 endapplication 中會設定某個GPIO為High,
jump 回 bootloader , 這個GPIO 要維持為High,
請問有什麼方式可做到??


我在endapplication 中
asm ("pagesel " str(0x05));
asm ("goto " str(0x05));
可跳回 bootloader ,
但GPIO 似乎會被重新 Initial 而變回LOW...

請問 goto 回bootloader
是不是 PIN 都會被initial?
是不是 PIN 都會被initial?
RAM 也會被清為初始狀態?

6月19日 17:03:04
轉換PDF檔 列印


Re: bootloader 及 endapplication 的 JUMP 問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 15078
等級: 73; EXP: 94
HP : 1094 / 1823
MP : 5026 / 86297
離線
I/O 在 Bootloader 被改變,有可能是執行了 C 的初始程式將接腳設回輸入功能。
在 C 裡面有一個用於變數的保留字 "persistent" 可以防止 C 的初始程式去改變其內容或清零。不過 persistent 的宣告我沒用在I/O的設定上。

persistent – 為一個特殊的保留字,用來告訴編譯器該變數在重新啟動時(startup)無須被清除為零。一般而言,使用此方式所宣告的變數會被存放在另外的節區。

建議可以使用 PK3 等除錯工具使用 Data 的 Pass Counter 去 trace 該腳位的位準變化停下程式的執行。檢查從應用程式跳回 Bootloader 後在哪裡被清零了。找出這一段程式後在 Bootloader 中加入一個冷開機或是熱開機的判斷來決定 Bootloader 初始程式的執行。

關於除錯的一些方法可以參考一下教育訓練教材: PIC101 裡的 Page 102 的說明。如貼圖:

一般從 APP 要跳回 Bootloader 的 0x0000 可以用 Reset 的指令,這樣會比較有完整的重置 Bootloader,萬一堆疊沒有歸零的話用此方式可將堆疊歸零,I/O 回到初始的設定。

附加檔案:



jpg  擷取.JPG (78.38 KB)
16_5ef0378543d27.jpg 791X600 px

6月22日 12:50:09
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project