金牌会员
- 积分
- 1887
- 金钱
- 1887
- 注册时间
- 2012-10-28
- 在线时间
- 353 小时
|
楼主 |
发表于 2015-9-16 20:22:16
|
显示全部楼层
回复【7楼】龙之谷:
---------------------------------
aMemory = (U32 *)EXT_SRAM_ADDR + ((1*1024*1024) - ((100*1024) )) ; // 这样也不行,
非要搞成如下才可以
static U32 *aMemory;
aMemory = (U32 *)EXT_SRAM_ADDR + ((1*1024*1024) - ((100*1024) / 4 )) ; // 这个地址计算的对不对啊 ??, 这个地方也要 /4 (1)
// 外部sram 大小 是 1*1024*1024
// 分配最后 100KByte 是 100*1024
/* Assign memory to emWin */
GUI_ALLOC_AssignMemory(aMemory, ((100*1024) / 4 ) ); // 这个地方貌似要 /4 才可以,是什么情况啊 ???
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
我不明白是上面的括号1里面,
((1*1024*1024) - ((100*1024) / 4 ) 这个1m字节的最大寻址范围是0x6800 0000 + 这个1mbyte/2的地址,但是除以4后,那不是少了一半了啊 ????
按照外部sdram的读写地址计算,多大寻址范围是 0x6800 0000 + 0x8 0000 = 0x68080000 - 0x32000(100KByte的地址) = 0x6804E000
如果 0x80000 - 0x32000 / 4 = 0x13800 那么最终外部sdram的寻址范围就变成了 0x6800 0000 + 0x13800 这个了 |
|