作者ast9869 (甘願為妳~)
看板ASM
標題Re: [問題] Keil C 的 .m51 ,code memery ***GAP***
時間Sun Aug 10 16:04:22 2008
我說清楚一點好了:
main.c
=============
func1()
func2()
USB.c
=============
USB_Func1();
USB_Func2();
ICE.c
=============
ICE_Main();
ReturnHost();
ICE_SNL200.c
=============
InitSNL200();
RunSNL200();
今天我想把它 link 成:
-------------------------------C:0x0000
?PR?*?MAIN
?PR?*?USB
-------------------------------C:0x2000
?PR?ICE_MAIN?ICE(0x2000)
?PR?*?ICE
?PR?*?ICE_SNL200
?CO?ICE
?CO?ICE_SNL200
-------------------------------C:0xFFFF
於是,我在BL51 設定
CODE(?PR?*?ICE(0x2000), ?PR?*?ICE_SNL200, ?CO?ICE, ?CO?ICE_SNL200)
發現BL51 會按照function的位置排列,導致 ***GAP***會變多
有沒有辦法0x2000之後,BL51也可以很Smart的幫你排列Code,而不要按照func位置排呢?
--
█████████████████
█ ████████████████
█████████████████
█ ████████████████
█████████████████
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.225.153
1F:推 zstar:沒有非常懂您的意思... 不過keil C 會先排有設定的 function 08/10 18:04
2F:→ zstar:其他的就依照 function code size 大排到小,一個接一個排 08/10 18:05
3F:推 zstar:您前一篇文章裡,GAP 的好像都在整數位置: 2800H, 3000H... 08/10 18:08
4F:→ zstar:似乎有 link directive 在作用。去掉它們,func就會連起來了 08/10 18:10
5F:→ ast9869:你說去掉它們是什麼意思呢?感謝Z大拔刀相助:) 08/10 21:35
※ 編輯: ast9869 來自: 123.110.225.153 (08/10 22:13)
6F:推 zstar:一定有一些設定導致編譯器把 function 放在 800H 邊界上 08/10 22:28
7F:→ zstar:找出那些設定(ex. link檔)取消掉,code space就不會斷斷續續 08/10 22:29
8F:→ ast9869:找到了,謝謝z大的指點。 08/10 22:29