會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客





PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
中級會員
註冊日期:
2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82
HP : 0 / 120
MP : 16 / 4234
離線
各位前輩好,

小弟用了很久一直怪怪才發現這個問題, 一直解決不了, 請各位前輩幫幫忙, 相關資訊誠如下:
-----------
Device:PIC16F15354 (Code Size:000h ~ FFFh)
MPLAB X IDE Ver: 5.20
XC8 Compiler Ver: v2.05

Configuration Bits onfiguration Bits 設定:
Open in new window



問題敘述如下:
當我的程式大小低於50%時一切正常

Open in new window

Program的 Start Address -> End Adress
Open in new window

用IPE查看HEX File
Open in new window



但是當程式超過50%, 程式結尾應是到807h左右
Open in new window


結果Program Code的時候, 直接寫到尾部?(FFFh)
Open in new window


用IPE查看HEX File
Open in new window


問題大致誠如上, 困擾小弟一陣子了, 也正在尋求解決之道,
請各位前輩幫忙, 感激不盡

10月29日 11:42:20

pgferic 於 2019年10月29日 12:02:12
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 1033
等級: 28; EXP: 38
HP : 0 / 684
MP : 344 / 25011
離線
用起來有問題嗎?

看起來怪怪...
也許是bug

10月29日 22:57:41
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
中級會員
註冊日期:
2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82
HP : 0 / 120
MP : 16 / 4234
離線
Dear jason680,

我也有把問題PASS到原廠, 看來應該是XC8 Compiler 的問題
當Code Size超過PAGESIZE(0x800)的時候就會出問題

我也試過 PIC16F1936 & PIC16F1789 倒是都沒有這個問題

所以應該是BUG沒錯, 目前就是在等原廠的回覆中,

謝謝

Regards,

10月30日 11:10:08
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14865
等級: 73; EXP: 62
HP : 1089 / 1815
MP : 4955 / 82763
離線
這種編譯方式確實不好,如果程式能夠正常執行就不算是 Bug,只能說有待改進。

可否使用 XC8 的函數絕對定址方式將部分的函數的定址強制設定在 0x800 以後再看一下編譯的成果。

附加檔案:



jpg  擷取.JPG (60.03 KB)
16_5dba4974a1fd3.jpg 978X304 px

10月31日 10:39:48
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
資深會員
註冊日期:
2006/02/10 09:49
所屬群組:
註冊會員
文章: 308
等級: 16; EXP: 41
HP : 0 / 385
MP : 102 / 15556
離線
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
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
中級會員
註冊日期:
2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82
HP : 0 / 120
MP : 16 / 4234
離線
感謝 Ryang大, dginlon 大的回覆,

我再試試看這個方法, 之前就是城市跑不起來才發現這個問題

測試之後再把狀況回覆, 感激不盡

10月31日 15:47:02
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
資深會員
註冊日期:
2006/02/10 09:49
所屬群組:
註冊會員
文章: 308
等級: 16; EXP: 41
HP : 0 / 385
MP : 102 / 15556
離線
Sorry
const char RomImage[128]@ 0xF80={ 0x00,...};

10月31日 15:50:21
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14865
等級: 73; EXP: 62
HP : 1089 / 1815
MP : 4955 / 82763
離線
引用:

pgferic 寫道:
感謝 Ryang大, dginlon 大的回覆,

我再試試看這個方法, 之前就是城市跑不起來才發現這個問題

測試之後再把狀況回覆, 感激不盡


你是說程式碼超過 50% 後編譯完成後程式執行會錯?
如此,這真的是問題了。可以私下將整個專案用 e-mail 傳給我試試。
richard.yang@microchip.com

11月01日 10:22:11
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
中級會員
註冊日期:
2007/12/04 23:08
所屬群組:
註冊會員
文章: 49
等級: 5; EXP: 82
HP : 0 / 120
MP : 16 / 4234
離線
非常感謝各位前輩的指導,
使用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
轉換PDF檔 列印


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14865
等級: 73; EXP: 62
HP : 1089 / 1815
MP : 4955 / 82763
離線
感謝 pgferic 網友的的心得與經驗的分享。

11月04日 10:17:44
轉換PDF檔 列印






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

[進階搜尋]


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