完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1 个讨论
|
|
你好,
这是受C55x c编译器只能寻址16bit地址(64K)的限制, 解决方法见下面的FAQ. In C55x, why does a long pointer fail when incremented over a 64k boundary? Problem: When a long pointer is incremented and crosses over a 64k boundary (ie, an address which is a multiple of 0x0001_0000) why isn't the upper 7 bits of the address modified? It appears the address just wraps around the same 64k block of memory. Solution: Even when the large memory, which supports 23-bit pointers, is used the compiler does not calculate the offset from the base address correctly when crossing a 64k page boundary. For example, if you have a pointer which starts at 0x2f000 and increment the pointer to pass address 0x2ffff, instead of becoming 0x30000 the address will wrap around and become 0x20000. The same is true for arrays, which should not span a 64k page boundary. A workaround is to manually check for a boundary change and keep track of what the next page should be. #pragma DATA_SECTION(gMp3, "ERAM") int gMp3[200000]; int *p; unsigned long int nextPage; unsigned long i; nextPage = (((unsigned long int)gMp3 & 0x7F0000) >> 16) + 1; for ( i = 0; i < 200000; i++)[ *p++ = 0x0000; /* IMPORTANT: need this to manage page boundries manually. */ if (((unsigned long int)p & 0xFFFF) == 0) [ p = (int *)(nextPage++ << 16); ] |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
404 浏览 0 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
930 浏览 1 评论
537 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
413 浏览 1 评论
969 浏览 0 评论
63浏览 3评论
CC3100BOOST使用CC3200lunchXL进行烧录
912浏览 2评论
156浏览 2评论
198浏览 2评论
176浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 22:20 , Processed in 0.808127 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号