新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2015-3-16
- 在线时间
- 0 小时
|

楼主 |
发表于 2015-5-15 11:15:14
|
显示全部楼层
回复【2楼】 正点原子 : 感謝回覆!!
---------------------------------
回复【3楼】 simms01 : 感謝回覆!!
---------------------------------
我使用原子哥的例程(串口IAP實驗) 修改為 SD(SDIO Mode) IAP,已經可以由SD Card更新APP Firmware,
後來想增加串口接收Bin file再存入SD Card內,
修改後已可接收大約9K字節數 (#define USART_REC_LEN 9*1024 //定義最大接收字節數 9K)
超過9K則會顯示內存空間不足: ..\OBJ\test.axf: Error: L6220E: Execution region RW_IRAM1 size (66048 bytes) exceeds limit (65536 bytes). ....
故而想使用外部SRAM儲存串口接收的數據,
修改為外部內存設定:
1)存檔函數緩衝修改:
......
f_test=(FIL*)mymalloc(SRAMEX,sizeof(FIL)); //SRAMEX外部SRAM
databuf=mymalloc(SRAMEX,strxlen); //SRAMEX外部SRAM
.......
2)usart.c 修改
.......
//u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X68000000)));//接收緩衝
........
3)malloc.c修改
.......
//內存池(4字節對齊)
__align(4) u8 mem1base[MEM1_MAX_SIZE]; //內部SRAM內存池
__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68020000))); //外部SRAM內存池
//內存管理表
u16 mem1mapbase[MEM1_ALLOC_TABLE_SIZE]; //內部SRAM內存池MAP
u16 mem2mapbase[MEM2_ALLOC_TABLE_SIZE] __attribute__((at(0X68020000+MEM2_MAX_SIZE))); //外部SRAM內存池MAP
//內存管理參數
......
可以接收打樣出串口數據(但數據末端會多出數十個不正確的字節),而且存檔後為0byte,無內容....
我不確定item 2 & 3 外部內存池設定是否正確!!
故要麻煩原子哥幫忙指點一下.....TKS!
IAP程式使用方法:
1)按住Key_up開機,進入IAP程式 , 若沒按住Key_up開機直接進入APP程式.
2)若0:\Bin\opel.bin有程式,則再按下Key_up則更新APP程式
3)可接收串口資料,目前先存於0:\opel.bin ,若日後測試可以接收大字節數(3~4萬個吧)的Bin file時再修改到0:\Bin\ ,後續想修改為接收ATK-RM04 WIFI模塊 串口Data....
|
|