會員登陸
網站導航
最新下載
- 2020 Winter Eli... (Mon, 09-Dec-2019)
- Microchip 搭載 ... (Thu, 21-Nov-2019)
- 創客們看過來,... (Thu, 21-Nov-2019)
- 2019第八屆台灣... (Tue, 17-Sep-2019)
- 2019 (秋)嵌入式... (Tue, 17-Sep-2019)
- Microchip 2019 ... (Wed, 10-Jul-2019)
- 2019 Summer Eli... (Mon, 10-Jun-2019)
- ATWINC1500 RTC ... (Mon, 29-Apr-2019)
- APP-ESS18-1A An... (Wed, 24-Apr-2019)
- 2019春EDF限量特... (Mon, 22-Apr-2019)
訪問統計 (自2012/5/3)
|
正在流覽:
1 名訪客
|
PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
中級會員 
註冊日期: 2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82 HP : 0 / 120 MP : 16 / 4243
|
各位前輩好, 小弟用了很久一直怪怪才發現這個問題, 一直解決不了, 請各位前輩幫幫忙, 相關資訊誠如下: ----------- Device:PIC16F15354 (Code Size:000h ~ FFFh) MPLAB X IDE Ver: 5.20 XC8 Compiler Ver: v2.05 Configuration Bits onfiguration Bits 設定: 問題敘述如下: 當我的程式大小低於50%時一切正常 Program的 Start Address -> End Adress 用IPE查看HEX File 但是當程式超過50%, 程式結尾應是到807h左右 結果Program Code的時候, 直接寫到尾部?(FFFh) 用IPE查看HEX File 問題大致誠如上, 困擾小弟一陣子了, 也正在尋求解決之道, 請各位前輩幫忙, 感激不盡
10月29日 11:42:20
pgferic 於 2019年10月29日 12:02:12
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
資深會員 
註冊日期: 2007/06/05 21:45
所屬群組:
註冊會員
文章: 1034
等級: 28; EXP: 39 HP : 0 / 684 MP : 344 / 25070
|
用起來有問題嗎?
看起來怪怪... 也許是bug
10月29日 22:57:41
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
中級會員 
註冊日期: 2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82 HP : 0 / 120 MP : 16 / 4243
|
Dear jason680,
我也有把問題PASS到原廠, 看來應該是XC8 Compiler 的問題 當Code Size超過PAGESIZE(0x800)的時候就會出問題
我也試過 PIC16F1936 & PIC16F1789 倒是都沒有這個問題
所以應該是BUG沒錯, 目前就是在等原廠的回覆中,
謝謝
Regards,
10月30日 11:10:08
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
版主 
註冊日期: 2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者 註冊會員 MICROCHIP
文章: 14874
等級: 73; EXP: 63 HP : 1089 / 1815 MP : 4958 / 82924
|
這種編譯方式確實不好,如果程式能夠正常執行就不算是 Bug,只能說有待改進。
可否使用 XC8 的函數絕對定址方式將部分的函數的定址強制設定在 0x800 以後再看一下編譯的成果。
附加檔案:
擷取.JPG (60.03 KB)
10月31日 10:39:48
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
資深會員 
註冊日期: 2006/02/10 09:49
所屬群組:
註冊會員
文章: 308
等級: 16; EXP: 41 HP : 0 / 385 MP : 102 / 15586
|
Dear pgferic: 在我看來,沒有問題啊 只是XC8 在配置記憶體不是線性爾已 如果PAGE 沒被占滿 XC8 會從 每一個PAGE 的最高處放主程式(Main) XC8 把程式碼放在HEF 區域並沒有問題,你又沒有宣告HEF 被占用。 你可以兩個方式來保留 HEF 區域
1 . 規劃一塊記憶題放在HEF const char RomImage[128]@ 0x1F00={ 0x00,...}; 2 . 直接告訴 XC8 不要 使用 HEF Project propertics-> XC8 linker -> ROM ranges 填入 default, -0F80-0FFF
Specify ROM ranges The compiler initially knows about on-chip ROM only. If external ROM is available then this can be specified via this option. Areas of on-chip ROM that must be reserved can also be listed. Examples: 0-7FF,1000-1FFF ignore on-chip ROM, use only specified ranges; default,3000-3FFF use default on-chip ROM, plus an additional range; default,-7F0-7FF use default ROM, but reserve 16 bytes at 7F0.
注 1 & 2 可以並用
10月31日 13:49:18
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
中級會員 
註冊日期: 2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82 HP : 0 / 120 MP : 16 / 4243
|
感謝 Ryang大, dginlon 大的回覆,
我再試試看這個方法, 之前就是城市跑不起來才發現這個問題
測試之後再把狀況回覆, 感激不盡
10月31日 15:47:02
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
資深會員 
註冊日期: 2006/02/10 09:49
所屬群組:
註冊會員
文章: 308
等級: 16; EXP: 41 HP : 0 / 385 MP : 102 / 15586
|
Sorry const char RomImage[128]@ 0xF80={ 0x00,...};
10月31日 15:50:21
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
版主 
註冊日期: 2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者 註冊會員 MICROCHIP
文章: 14874
等級: 73; EXP: 63 HP : 1089 / 1815 MP : 4958 / 82924
|
引用: pgferic 寫道: 感謝 Ryang大, dginlon 大的回覆,
我再試試看這個方法, 之前就是城市跑不起來才發現這個問題
測試之後再把狀況回覆, 感激不盡
你是說程式碼超過 50% 後編譯完成後程式執行會錯? 如此,這真的是問題了。可以私下將整個專案用 e-mail 傳給我試試。 richard.yang@microchip.com
11月01日 10:22:11
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
中級會員 
註冊日期: 2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82 HP : 0 / 120 MP : 16 / 4243
|
非常感謝各位前輩的指導, 使用dginlon 大的方法測試之後知道了使用上的問題在哪邊了,非常感激, 測試結果大致如下 --------------------------------------- 1. XC8編譯PIC16F15354這顆MCU(或是系列)在占滿一個page後(超過50%),主程式會從底部寫上來(含HEF區域)
2. 超過50%的程式, 必須要把 Storage Area Flash關閉, 程式才可以正常執行, Configuration Bits onfiguration Bits 的 SAFEN = OFF, WRTSAF = OFF
3. 超過50%的程式, 若要使用SAF區域(SAFEN = ON), 必須要手動告知XC8不可使用該區域(使用dginlon 大的方法), 程式方可正常執行
誠如以上 我的狀況就是第3點,
真的是非常感謝 Ryang大, dginlon大 小弟又學到了
Best regards,
11月02日 01:20:39
|
|
|
Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤 |
|
版主 
註冊日期: 2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者 註冊會員 MICROCHIP
文章: 14874
等級: 73; EXP: 63 HP : 1089 / 1815 MP : 4958 / 82924
|
感謝 pgferic 網友的的心得與經驗的分享。
11月04日 10:17:44
|
|
您無法在此發表文章
您可以在此觀看文章
您無法回覆文章
您無法編輯自己的文章
您無法刪除自己的文章
您無法發起投票調查
您無法在此投票
您無法上傳附加檔案
您無法不經審核直接發表文章
|
搜尋
Microchip連結
網頁捷徑
2020 Winter Elite 報名
教育訓練
其它網站連結
|