打印

求助?arm7写flash的问题.

[复制链接]
2464|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gql1123|  楼主 | 2007-9-11 10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   刚开始用arm做东西.我用的是2132,定义一个数组,怎么将定义的数组存放在固定的flash区域。怎么修改分散加载文件。各位大虾,快快帮忙啊。小弟感激不尽。
   还有,我想分出一个flash扇区用来存放IAP要更改的数据。此扇区怎样设置才能不分配给程序代码。

相关帖子

沙发
gql1123|  楼主 | 2007-9-11 11:49 | 只看该作者

每人帮忙吗?呜呜

使用特权

评论回复
板凳
Ice_River| | 2007-9-11 14:03 | 只看该作者

分散加载就不用改了

flash是需要驱动程序写到里面去的。查查你用的Flash手册吧

使用特权

评论回复
地板
gql1123|  楼主 | 2007-9-12 08:57 | 只看该作者

我想用编译器下载程序的时候将数据下载到flash

不用IAP功能

使用特权

评论回复
5
wangshujun| | 2007-9-13 00:04 | 只看该作者

为什么不把数据放到程序中呢?

使用特权

评论回复
6
xieqin| | 2007-9-13 12:23 | 只看该作者

太容易了.

首先用分散加载去设计你的程序,注意:一定要是多个load region

编译后把axf转成HEX或s3格式. 如果有多个load region,转换后会产生多个hex/s3文件. 你再单独烧写每个hex/s3就ok了. 


想想看,如果你的工程有若干M byte的图片资源或文本资源,要是不用这种方法,而是放在程序里,你每次烧写几M的程序,多累啊. 

使用特权

评论回复
7
gql1123|  楼主 | 2007-9-14 17:12 | 只看该作者

谢谢六楼的大虾.

分散加载我做好了,可是却不能直接生成.hex文件了。没有分散加载的时候是可以生成的。你上边说的那种方法好像能解决这个问题。但是具体怎么操作。可不可以说清楚点。小弟在这里万分感谢。

使用特权

评论回复
8
xieqin| | 2007-9-15 20:18 | 只看该作者

不能生成HEX?

像这样设计一个分散加载文件:
ROM_CODE 0x000000 0x300000
{
    ROM_EXE 0x000000 0x80000
    {    
    }
}
RAM_CODE 0x300000  0x100000
{
    RAM_EXE 0x0c000000 0x2000000
    { 
         
    }     
}
编译后生成AXF文件. 你也可以选择生成一个HEX文件. 为了便于维护,你可以用fromelf工具把axf文件转成bin/s3文件.因为有两个load region所以转换后会生成两个bin/s3文件,如RAM_EXERW.bin/.s3 RAM_CODE.bin/.s3
你分别烧写这两个文件就可以.


使用特权

评论回复
9
gql1123|  楼主 | 2007-9-17 11:10 | 只看该作者

多谢xieqing

按你的方法我已经搞定了.多谢多谢高手指点.
在问个问题,如果在调试的时候取数据终止,有什么办法能知道是在什么地方取数据终止的吗?能不能通过看一些寄存器的值来确定是什么原因造成的取数据终止吗?

使用特权

评论回复
10
xieqin| | 2007-9-17 20:28 | 只看该作者

不谢

可基本定位. 
把寄存器的值打印出来,如SVC模式下的LR等寄存器的值. 然后根据编译生成的map文件可以找到死机前程序所执行的哪段程序(函数).
可参阅ARM提供的user guide. 一般开发工具的安装目录下都有.

使用特权

评论回复
11
gql1123|  楼主 | 2007-9-18 12:45 | 只看该作者

多谢

以后还得想你多请教.果然高手

使用特权

评论回复
12
ldjacky| | 2007-9-19 08:31 | 只看该作者

haha

hello

使用特权

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

本版积分规则

5

主题

34

帖子

1

粉丝