Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
管理員
|
你是用SAME54-XPlained PRO EVB? 可以把你的專案寄給我試試, 另外提供你目前使用的環境
1. Windows 版本 2. MPLAB X IDE 版本 3. DFP 版本 4. CMSIS 版本 5. XC32 版本 6. Harmony3 版本 我有另外寄e-mail到你的Yahoo信箱了, 如果有公司的E-mail可以改用公司的E-Mail寄給我比較不會退件
發表於: 2020/5/25 13:33
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
新會員
|
參照:
一樣,我用你給的ld檔一樣沒有變更RAM的配置。
發表於: 2020/5/25 11:50
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
管理員
|
真奇怪, 我的就可以, 把我的.ld 跟 .map寄給你看一下
這檔案用7z壓縮的, 要用7z解壓縮, 不能在Windows直接點用winzip解壓縮 Attach file: Link only for registered users
發表於: 2020/5/25 11:07
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
新會員
|
參照:
感謝!Libra. 這部分有我有做,就是因為這樣,但還是無法變更所以才很納悶! 如圖: Attach file: (0.00 KB)
發表於: 2020/5/25 10:12
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
管理員
|
你改過的.ld要在X IDE的專案中, 加到Linker File底下, Compiler才會引用到, 不是Copy過來而已
Linker Files\ 按右鍵 -> Add Existing Item
發表於: 2020/5/25 8:26
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
新會員
|
參照:
是的,CAN的傳送接收都正常。 但一定址就會出問題。 參照:
以下為ld檔修改的內容:
#ifndef RAM_LENGTH
依照一樣的方式,並未造成任何變更。
1. RAM Data-Memory Usage
這是使用定址的異常狀況: 這是不使用定址的傳送與接收: ID=0x469 ID=0x111 Attach file: (0.00 KB) (0.00 KB) (0.00 KB) (0.00 KB)
發表於: 2020/5/22 16:52
Edited by Gordon0010 on 2020年05月22日 17:12:31
Edited by Gordon0010 on 2020年05月22日 17:17:34 |
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
管理員
|
所以如果使用自動變數就會正常?
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
在程式中沒人管的區段, 就任憑自己去處置了 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; 更動記憶體配置可能造成不可預期的結果, 請務必小心謹慎後果自負. Attach file: (0.00 KB)
發表於: 2020/5/22 15:45
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
新會員
|
感謝 Libra及Adam 。
我另外多加的了一些Module,確實可以用的位址確實往後移了。
1. RAM Data-Memory Usage
_0cfed8405ec77515 Can0MessageRAM _0cfed8985ec77515 Can1MessageRAM 也將定址位址往後移,但是通訊還是有問題,data傳送內容一樣為0x00,ID也是為0x00。 假如,修改linker script是否可以將.bss的位址調整, 空出SRAM一部分專用。 要如何修改linker script(我知道這很麻煩,拜託幫幫忙!) 修改後的linker檔案(*.ld)要如何加入編輯, 我按照文件的方式後,看起來還是使用原本的script。
發表於: 2020/5/22 15:01
|
|||
|
Re: ATSAME54P20A--定址
|
||||
---|---|---|---|---|
管理員
|
看起來是Compiler強佔民房了, 目前不知道實際的用途,
但確實是拿了0x20000000的位置, 放了一些東西.... 0x20000000的位置, 看起來使用無望.. makefile
.bss (NOLOAD) :
.map
.bss 0x20000000 0x0
發表於: 2020/5/22 12:02
|
|||
|