作者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