本帖最后由 jshzp 于 2019-6-21 21:08 编辑
我的工程中,需要读写U盘中的一个指定文件名的二进制文件,文件不到100KB。另外还需要完成一些其它的简单功能。
电路板已经做好了,没有外扩RAM,只是使用了STM32F429IGT6片内的256KB内存。
在移植阿波罗开发板的U盘例程时,发现在去掉液晶、SPIFLASH、文本支持等无关代码,
编译后,ZI_data从原来的33MB只是减少到了约30MB,这远超过了F429片内的256KB内存。
之前画PCB时,以为256KB足够了。。。
例程里面30MB的变量,是做什么用途的?如果只是读取指定的二进制bin文件,能压缩吗?
除了增加块外存芯片,重新做电路板,还有别的办法吗?感谢指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你这个这么大的文件,只能分段读取,分次处理。压缩和解压这个比较麻烦,数据的完整性自己写没法保证完整性。
U盘里要读的文件不大,只有几十KB。原子的U盘例程编译下来后太大了,ZI_data有30MB,不知道是什么变量开得这么大。。。
感谢回复!map中看到有个约28兆的变量,如下
Base Addr Size Type Attr Idx E Section Name Object
0xc01f4000 0x01c3c000 Zero RW 900 .ARM.__AT_0xC01F4000 malloc.o
估计是malloc.c文件里开的一个大变量,怎么具体查找是哪个变量呢?望继续指教开
f429的核心板上外扩了一颗SDRAM,容量达32M,所以U盘例程就直接开了个28M的大变量,使得ZIdata高达30兆都能跑。。。而我的板子没有外扩ram,只有f429自己的256KB内存。怎么修改例程中的那个大变量呢?
一周热门 更多>