• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users






PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#1
中級會員
中級會員


查看用戶資訊
各位前輩好,

小弟用了很久一直怪怪才發現這個問題, 一直解決不了, 請各位前輩幫幫忙, 相關資訊誠如下:
-----------
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
縮圖


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

發表於: 2019/10/29 11:42

Edited by pgferic on 2019年10月29日 12:02:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#2
資深會員
資深會員


查看用戶資訊
用起來有問題嗎?

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

發表於: 2019/10/29 22:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#3
中級會員
中級會員


查看用戶資訊
Dear jason680,

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

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

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

謝謝

Regards,

發表於: 2019/10/30 11:10
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#4
版主
版主


查看用戶資訊
這種編譯方式確實不好,如果程式能夠正常執行就不算是 Bug,只能說有待改進。

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

Attach file:



jpg  (0.00 KB)


發表於: 2019/10/31 10:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#5
資深會員
資深會員


查看用戶資訊
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 可以並用

發表於: 2019/10/31 13:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#6
中級會員
中級會員


查看用戶資訊
感謝 Ryang大, dginlon 大的回覆,

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

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

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


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#7
資深會員
資深會員


查看用戶資訊
Sorry
const char RomImage[128]@ 0xF80={ 0x00,...};

發表於: 2019/10/31 15:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#8
版主
版主


查看用戶資訊
參照:

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

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

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


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

發表於: 2019/11/1 10:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#9
中級會員
中級會員


查看用戶資訊
非常感謝各位前輩的指導,
使用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,

發表於: 2019/11/2 1:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F15354 Code Size超過50%後 Program Flash定址錯誤
#10
版主
版主


查看用戶資訊
感謝 pgferic 網友的的心得與經驗的分享。

發表於: 2019/11/4 10:17
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.

[進階搜尋]