打印
[ZLG-ARM]

请问用片外flash存储数据怎么处理?

[复制链接]
2544|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ltleaf|  楼主 | 2008-6-20 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wlq_9| | 2008-6-20 16:20 | 只看该作者

很强大

自己擦除自己???
那就先copy程序到RAM运行,再往后段的FLASH存数据.

使用特权

评论回复
板凳
ltleaf|  楼主 | 2008-6-20 17:01 | 只看该作者

怎么copy

每次只是擦除一个扇区而已。应该不会将程序擦除的。如果要copy的话,怎样copy呢?我是一只刚刚接触arm的菜鸟,希望得到各位大虾的帮助

使用特权

评论回复
地板
yangbo_zd| | 2008-6-23 11:04 | 只看该作者

程序在RAM中运行才能擦除Flash!

使用特权

评论回复
5
ltleaf|  楼主 | 2008-6-23 14:33 | 只看该作者

如何才能让程序在ram中运行呢?

如题

使用特权

评论回复
6
Ice_River| | 2008-6-24 11:01 | 只看该作者

内部还是外部?

内部用IAP(如果支持),外部找相关型号Flash的驱动程序!

使用特权

评论回复
7
ltleaf|  楼主 | 2008-6-24 15:53 | 只看该作者

解决了

修改了一下分散加载描述文件。把关于flash擦除,写入的程序单独生成一个文件。然后将这个文件的执行区地址放到ram中就可以了。现在程序可以跑起来了

使用特权

评论回复
8
armecos| | 2008-6-24 18:24 | 只看该作者

你可以参考《ecos增值包》里的redboot实现,

它可以实现自升级,用RAM版程序升级ROM版程序。可以用XMODEM串口、网络、CF/SD卡加载程序。可以实现ROMFS文件系统,redboot自动管理flash空间,你不必指定固定位置,由redboot来自动分配。数据存储是标准的UNIX IO接口的文件系统。

如果配合redboot,你的系统可能会更强大,有源码可以参考,www.armecos.com上有免费下载可以体验效果。

培训系列“丛书”

使用特权

评论回复
9
freny| | 2008-7-3 10:52 | 只看该作者

想询问下如何跳转到RAM?

你好,我也正在用2210做关于搽写FLASH的内容,看到了你的帖子,能否问一下你具体是怎么做的了?
我的做法是程序在FLASH中运行然后将整个代码拷贝到RAM中,然后再跳转到RAM中的相关函数的地址。
不知道你的做法中需不需要拷贝代码了?然后怎么跳转到RAM中运行了?还是只是分散加载设置好了自动拷贝到RAM,就可以使用跳转指令直接跳到RAM中?
期望你的回复,谢谢!

使用特权

评论回复
10
freny| | 2008-7-3 11:25 | 只看该作者

请问怎么“将这个文件的执行区地址放到ram中”?

请问怎么“将这个文件的执行区地址放到ram中”?我如下描述的
ROM_LOAD2 0x81000000
{
ROM_EXEC2 0x81000000
    {
        main.o (+RO)
        flash.o(+RO)
    }
}
ROM_LOAD 0x80000000
{
    ROM_EXEC 0x80000000
。。。。。。。。。。。。
要生成.BIN文件
结果他生成两个没有尾缀的文件ROM_EXEC、ROM_EXEC2。

使用特权

评论回复
11
freny| | 2008-7-3 12:11 | 只看该作者

已解决

ROM_LOAD2 0x81000000
{
 ROM_EXEC 0x80000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
ROM_EXEC2 0x81000000
    {
        main.o (+RO)
        flash.o(+RO)
    }
。。。。。。。。。
}
编译器自动加入拷贝代码!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

94

帖子

0

粉丝