LPC1788存储不够的问题总结

来源:本站
导读:目前正在解读《LPC1788存储不够的问题总结》的相关信息,《LPC1788存储不够的问题总结》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《LPC1788存储不够的问题总结》的详细说明。
简介: LPC1788具有片上512K rom用来运行程序,片上96K SRAM。本人的工程样板还使用了EMC外挂了Nandflash、Norflash和SDRAM。自从工程开始做我就认为片上512K ROM足够使用,就很放心,谁知道在工程接近结尾的时候,突然有一天编译报错,说空间不够了,顿时傻眼了,要知道我还有些功能没实现呢,而且还有后期的升级之类的需要空间啊。

存储的问题已经解决。

LPC1788具有片上512K rom用来运行程序,片上96K SRAM。本人的工程样板还使用了EMC外挂了Nandflash、Norflash和SDRAM。自从工程开始做我就认为片上512K ROM足够使用,就很放心,谁知道在工程接近结尾的时候,突然有一天编译报错,说空间不够了,顿时傻眼了,要知道我还有些功能没实现呢,而且还有后期的升级之类的需要空间啊。Keil的优化等级我开到2级了,还是不行,看来得调整方案了,于是就有了后面一些问题。

首先参照其他高级点ARM芯片的方法,上电BOOTLOADER,把app拷贝到SDRAM运行,可是上网查资料有些说1788不像ARM9那样适合在SDRAM跑程序。据说效率很低,跑起来很慢,我没试过不死心,就决定要尝试一下。而且得知,我这工程情况,向量表偏移最远只能到片内SRAM,到不了片外,所以我把向量表设置在SRAM靠近尾端部分。在bootloader跳转前配置MPU,而且进入APP后,不能再初始化SDRAM,否则导致程序复位再次进入bootloader。

我从bootloader跳转到app后,稍等一两秒的时间,然后又会复位重启。我观察了拷贝的向量表,并和app的MAP文件对比,是正确的向量。

后来我调整了思路,先不让app在SDRAM运行,裁剪app使其可以放进片上rom,也就是说,先在rom内bootloader跳转。结果一试居然成了,app顺畅的运行起来了。我再修改app工程配置里的rom地址到SDRAM,结果还是之前一样,bootloader不成功。看来问题不是app的问题,而是bootloader的问题了。

APP在rom内就可以跳转执行,在SDRAM里就不能跳转执行。对比两者的区别,发现在APP在SDRAM的情况,多了一个MPU配置,这是手册明确要求的。现在问题明确了,MPU配置的嫌疑最大。又是一番研究资料,中间不细说。最后发现MPU使能寄存器里也需要使能背景映射。把背景映射一开,bootloader可以成功跳转SDRAM里的app了。

程序是可以跳转了,但是app在SDRAM里运行,果然是慢的要死,龟速啊,果然跟网上其他人反映的一样。这下我有点绝望了,这效果肯定不能用在产品上的。我又把目光盯上了Norflash,大家的普遍意见是,此flash贵,产品使用这个都是土豪。但是为了打开目前困境,我也只能试试了。这里方法同之前SDRAM的方法一样,app里工程配置里,ROM地址改为Norflash里。当然之前的MPU也要增加一个Norflash的块配置。

这次顺利实现了跳转,程序运行效果说实话跟SDRAM里不相上下。估计问题是还是EMC的性能问题吧。一个EMC总线外接NORFLASH+NANDFLASH+SDRAM。明显总线竞争啊,一个时刻只能操作一种存储,执行SDRAM时候,NORFLASH就得停,反之亦然,这样总体估计也快不到哪里去吧。最后我还是得回归到ROM去,优化一下代码,实在不行去掉操作系统,emwin是肯定要的。挤压点空间出来,争取把项目搞完。

提醒:《LPC1788存储不够的问题总结》最后刷新时间 2024-03-14 00:54:07,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《LPC1788存储不够的问题总结》该内容的真实性请自行鉴别。