arm奇怪问题

[复制链接]
2550|11
 楼主| happy_mcu 发表于 2007-7-23 10:24 | 显示全部楼层 |阅读模式
我刚写了个简单的循环点灯程序,可是不管我把ro&nbsp;base设置成0x0c000000还是0x00000000,程序下载到flash后都可以正常运行。这是为什么呢?<br />
computer00 发表于 2007-7-23 10:28 | 显示全部楼层

不会是直接在启动代码里写的吧?没有C?

  
ayb_ice 发表于 2007-7-23 10:30 | 显示全部楼层

你的设置起作用了没有...

  
 楼主| happy_mcu 发表于 2007-7-23 10:31 | 显示全部楼层

c 程序有啊

c&nbsp;程序有啊<br />而且编译完后code&nbsp;986&nbsp;&nbsp;&nbsp;ro&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;rw&nbsp;0<br />我不明白ro&nbsp;&nbsp;rw怎么会是0的呢?
 楼主| happy_mcu 发表于 2007-7-23 10:34 | 显示全部楼层

回 ayb_ice

请问怎么才能知道设置有没有起作用呢?
luhuaren 发表于 2007-7-23 13:24 | 显示全部楼层

re

如果0x0c000000地址和0x00000000地址都有实际的存储空间的话,那么应该是可以的。<br />可以这样假设。。&nbsp;&nbsp;&nbsp;在0地址空间处有实际的存储空间,那么代码固化到以0地址开始处的一段空间处<br />如果RO设置为0&nbsp;&nbsp;那么&nbsp;代码就是直接执行,不用进行拷贝。<br />如果RO设置为0x0c000000&nbsp;&nbsp;那么代码就要进行拷贝。<br /><br />完成代码拷贝任务是在&nbsp;启动代码内完成的。仔细读一下程序的启动代码部分。。
zky2003 发表于 2007-7-23 15:03 | 显示全部楼层

一般不可能的

要是没有猜错的话,楼主用的应该是SUMSUNG的ARM,0X0C000000是不是挂的SDRAM,很多的网上的资料都是这么做的,要是RO设置成0X0C000000,程序的开始地址不会是0X00000000,那又怎么可能被正确执行呢
ccoldman 发表于 2007-7-23 15:45 | 显示全部楼层

两种可能

1、芯片内部内存映射0x0c000000=0x00000000<br />2、地址线高位26位以上不存在,0x0c000000=0x000000
 楼主| happy_mcu 发表于 2007-7-23 16:32 | 显示全部楼层

re

我用的是s3c44b0<br />flash是2M的在bank0,地址从0x00000000开始<br />sdram是8M的在bank6,地址从0x0c000000开始<br />我是直接下载的.elf文件<br />我是这样理解的,程序下载到flash中不管ro&nbsp;base设置的是多少它都是从0x0开始的。我这样理解不知道对不对,还望高手指点!!
luhuaren 发表于 2007-7-23 20:19 | 显示全部楼层

re

这样理解是对的。。。。。<br />但是&nbsp;RO设置成0x0c000000的话,你就要进行代码拷贝了,要把FLASH里的代码拷贝到sdram中去。。这样程序才可以正常运行。
luhuaren 发表于 2007-7-23 20:20 | 显示全部楼层

re

而程序就在SDRAM中运行。
gouki_s 发表于 2007-7-23 21:07 | 显示全部楼层

链接地址

你程序里没有绝对跳转,就没啥影响
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

28

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部