看板 ASM 關於我們 聯絡資訊
我說清楚一點好了: 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
zstar:沒有非常懂您的意思... 不過keil C 會先排有設定的 function 08/10 18:04
zstar:其他的就依照 function code size 大排到小,一個接一個排 08/10 18:05
zstar:您前一篇文章裡,GAP 的好像都在整數位置: 2800H, 3000H... 08/10 18:08
zstar:似乎有 link directive 在作用。去掉它們,func就會連起來了 08/10 18:10
ast9869:你說去掉它們是什麼意思呢?感謝Z大拔刀相助:) 08/10 21:35
※ 編輯: ast9869 來自: 123.110.225.153 (08/10 22:13)
zstar:一定有一些設定導致編譯器把 function 放在 800H 邊界上 08/10 22:28
zstar:找出那些設定(ex. link檔)取消掉,code space就不會斷斷續續 08/10 22:29
ast9869:找到了,謝謝z大的指點。 08/10 22:29