yulutong 发表于 2012-10-18 09:47:24

裸机下如何动态加载大容量的NAND到SDRAM

ARM9板子64MBSDRAM;256MB NAND;
ADS裸机;
NAND中存放大量的图片文件,使用中先将图片文件加载到内存中,再根据实际需要显示把内存中的图片放入显存。
图片文件打算用VC写个BMP转BIN文件的小工具,输出包括1个.bin文件和.h文件,bin中图片连续存放,.h放的是每个图片的起始位置和长度。图片的命名从PIC1~PIC200这是预知的,方便程序调用。

若加载第50~100图片
首先释放上次申请的50个内存
根据图片文件大小重新动态申请50个内存,
程序调用

这个程序对NAND是只读的,不用理会坏块管理。

问题有:
C语言中的malloc和free函数是不是算法不好,会不会运行一段时间后有不确定的死机?有没有其它方法,UCOSII行么?
不会用Linux系统,对我整体的思路来说,有没有更好的解决方法。

zhiwei 发表于 2012-10-18 10:09:30

如果所有图片大小差不多或者图片都不大的情况下,自己写内存管理就可以了呀,数组搞定。你有32M的内存还怕什么?

mangocity 发表于 2012-10-18 10:16:18

NAND操作都需要处理ECC,不管你是否只读。不明白你为什么不用处理坏块。

yulutong 发表于 2012-10-18 10:32:41

mangocity 发表于 2012-10-18 10:16 static/image/common/back.gif
NAND操作都需要处理ECC,不管你是否只读。不明白你为什么不用处理坏块。

NAND读取函数有现成的,我还没有细读过。你的理解是对,应该需要有坏块标记判断。

回2楼每个图片大小都不一样,是无法预先确定的。
不过确实可以按数组方法来做,我申请数组时按最大图片来处理,浪费点内存。

mangocity 发表于 2012-10-18 10:38:51

不管哪个libc,malloc/free的算法都是好的。绝对不会运行一段时间死机。嵌入式平台,出于内存碎片考虑还是少用 malloc/free 吧。
频繁申请50个图片内存,不会有问题。
页: [1]
查看完整版本: 裸机下如何动态加载大容量的NAND到SDRAM