情況:
1.實際的BOOTLOADER 編譯后的代碼長度只有15K
2,設置20K FLASH
MEMORY { FLASH?(rx)?:?ORIGIN?=?0x00000000,?LENGTH?=?20K RAM?(xrw)?:?ORIGIN?=?0x20000000,?LENGTH?=?64K }
3.? 在程序中有兩個長的USB用的 RAM DMA 緩沖區(qū) 每個16K長度
? ?在LD 文件中,無特別指出這個 DMADATA段在哪里?
_
_attribute__?((aligned(16)))?UINT8?LONG_Databuf1[?16384?]??__attribute__((section(".DMADATA")));?/*?端點2數(shù)據(jù)發(fā)送緩沖區(qū)?*/ __attribute__?((aligned(16)))?UINT8?LONG_Databuf2[??16384?]??__attribute__((section(".DMADATA")));?/*?端點2數(shù)據(jù)發(fā)送緩沖區(qū)?*/
編譯后,連接提示 DMADATA 段不適合FLASH 長度,? 這個DMADATA 段是RAM的跟FLASH有什么關系?
4.? 把 DMA段的屬性去掉,改為如下,編譯 及l(fā)ink都正常了,程序運行也正常
__attribute__?((aligned(16)))?UINT8?LONG_Databuf1[?16384?]?;/*?端點2數(shù)據(jù)發(fā)送緩沖區(qū)?*/ __attribute__?((aligned(16)))?UINT8?LONG_Databuf2[??16384?];?/*?端點2數(shù)據(jù)發(fā)送緩沖區(qū)?*/ 這樣問題來了??__attribute__((section(".DMADATA")));有什么用呢??會不會影響USB的接收發(fā)送