打印

bootloader中rw data的讨论.

[复制链接]
1790|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
playlinus|  楼主 | 2008-10-21 10:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
农民讲习所| | 2008-10-21 11:03 | 只看该作者

这话问得好无聊

使用特权

评论回复
板凳
Etual| | 2008-10-21 11:44 | 只看该作者

楼主先回去复习一下51~~~

看看地址总线和数据总线是怎么工作的 :)

使用特权

评论回复
地板
playlinus|  楼主 | 2008-10-21 13:08 | 只看该作者

是挺无聊,想了解一下...

使用特权

评论回复
5
dld2| | 2008-10-21 13:15 | 只看该作者

re

CPU只是从指令中知道数据的地址,并不知道是在SDRAM。
数据的地址是linker根据RO、RW的设置来确定的。

使用特权

评论回复
6
und| | 2008-10-25 22:23 | 只看该作者

RE

你问这个问题说明你对编译、链接的本质没搞清,你的所有文件是先通过编译,这时的文件是没有地址信息的,你必须通过Linker来告诉编译器和你的硬件设计平台相对应的RO,RW,ZI具体的加载、执行地址。在ADS中有两种方法:
1.用Simple方式来告诉编译器你的RO.RW地址
2.通过你的scatter文件来具体的指定,该方法适合高级用户(需要对硬件平台有深刻理解)

使用特权

评论回复
7
dazuo| | 2016-5-10 20:47 | 只看该作者
每个符号(包括数据,代码)可以有加载地址和执行地址,两者可以相同也可以不同,这通常可以通过scatter file来指定。
在你说的情况中,代码的加载地址和执行地址是相同的,而RW data 的加载地址是不同于其执行地址的,因此在系统初始化阶段arm 库函数会把这部分数据从从加载地址(比如flash) copy到运行地址(比如SDRAM)。代码中访问数据都是通过运行地址进行的,如果某个地址指向的是SDRAM所在区域,地址总线自然会访问SDRAM,从而读写数据。

使用特权

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

本版积分规则

102

主题

518

帖子

2

粉丝