Re: ATSAME54P20A--定址

作者 Libra 於 2020年05月22日 15:45:25
所以如果使用自動變數就會正常?
uint8_t Can0MessageRAM[CAN0_MESSAGE_RAM_CONFIG_SIZE];
uint8_t Can1MessageRAM[CAN1_MESSAGE_RAM_CONFIG_SIZE];

.bss是在linker file中去指定的
SAME54的Global Linker file在(XC32 v2.40之後只有64bit)
C:\Program Files\Microchip\xc32\v2.40\pic32c\lib\proc\ATSAME54P20A\ATSAME54P20A.ld

這裡不可以改它, 如果你要修改時, 要把它Copy到你的專案下, 然後在你的專案下的\Linker Files中加進來


ATSAME54P20A.ld中
RAM_ORIGIN 0x20000000
RAM_LENGTH 0x40000
決定了Compiler可以管理的SRAM起始位置及大小
當然也可以去改變它後, 得到這樣的結果

RAM Data
-Memory Usage
section                    address  length
[bytes]      (dec)  Description
-------                 ----------  -------------------------  -----------
.
bss                    0x20010000            0xc          12  Uninitialized data
.bss.can1Obj            0x2001000c           0x28          40   
.bss.can0Obj            0x20010034           0x28          40


在程式中沒人管的區段, 就任憑自己去處置了
uint32_t *Can0MessageRAM = (uint32_t *)(0x20000000U);
uint32_t *Can1MessageRAM = (uint32_t *)(0x20000040U);
((uint8_t*)Can0MessageRAM)[0] = 0x12;
((uint8_t*)Can0MessageRAM)[1] = 0x34;
((uint8_t*)Can1MessageRAM)[0] = 0x56;
((uint8_t*)Can1MessageRAM)[1] = 0x78;

更動記憶體配置可能造成不可預期的結果, 請務必小心謹慎後果自負.

附加檔案:



jpg  SAME54-CAN.jpg (42.92 KB)
67979_5ec781769ea92.jpg 288X198 px

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=11&topic_id=22894&post_id=80683