W-D-S-链接地址
1、程序一开始是烧写到nandflash上,设置为nandflash启动,6410片内有8K的内存,设为nandflash启动时,是从片内内存0地址开始,一上电,nandflash前面8K的内容会原原本本的拷贝到6410前面内存的8k地址处,然后从0地址开始运行;如果烧写到nandflash上面的程序大于8k,不做其他处理则没办法运行。
所以要初始化DDR,把整个nandflash里面的程序拷贝到DDR里面去。
那么应该把程序复制到DDR哪儿呢?应该复制到它的链接地址。
之前的Makefile里面,-Ttext 0,表明该程序的链接地址是从0开始,所以当程序小于8K的时候,拷贝到6410前8k,从0地址开始,所以与链接地址对应,能够运行。
当程序超过8K的时候,要复制到DDR,那么要修改链接地址!

看看链接地址的作用:
一个程序会分成:
代码段:指令、数据段:有初始值且初始值不为零的全局变量,或静态变量、BSS段:初始值为零或无初始值的全局、静态变量
注意二进制文件里面是不存放BSS段的内容!!!!!!!!!!!!程序在启动的时候要把bss_start到bss_end里面的变量清零。
当链接地址为0时,

访问全局变量的时候用的是链接地址!

当链接地址为0x50000000

上面同一套程序,链接地址不一样,导致程序访问的全局变量也是使用的地址也不一样!
当从nandflash启动,把nandflash前8k复制到6410片内的前8K里面去,此时即使程序的链接地址是0x50000000,(注意:一个程序运行的时候“应该”位于它的链接地址。),由于这前面的程序使用的位置无关码编写的,所以不管链接地址为多少,它在任意地方都可以运行;它主要是使用b、bl来跳转,且不访问全局变量和静态变量。
当从nandflash启动,把nandflash前8k复制到6410片内的前8K里面去,当程序的链接地址是0x50000000时候,那么当程序复制到6410片内时要进行重定位,即程序自己要把自己拷贝到DDR里面的链接地址0x50000000,然后从6410片内调到DDR的链接地址运行。这样才会正确!!
重定位:把程序复制到它的链接地址处。

1)程序运行时,“应该”位于它的连接地址
2)硬件决定了程序一开始从0运行,需要重定位,即前面一小段代码把程序复制到它的链接地址处。
3)前面一小段代码为何能正常运行,因为他们是用位置无关码写的。
W-D-S-链接地址的更多相关文章
- JavaScript正则验证数字、英文、电话号、身份证号、邮箱地址、链接地址等
验证是否为数字:/^[0-9]*$/验证是否为汉字:/^[\u4e00-\u9fa5],{0,}$/验证x-y位的数字:/^\d{x,y}$/验证由26个英文字母组成的字符串:/^[A-Za-z]+$ ...
- php完美匹配邮箱、链接地址和电话号码
php完美匹配邮箱.链接地址和电话号码 写了好一会有问题,朋友这边很好功能,借用了.嘎嘎 //31日 更新: 匹配手机以及电话号码 重新修改,可支持18开头的手机号,并修改bug,可匹配出字符串中所有 ...
- SharePoint Online 申请试用链接地址
SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...
- 使用Unified Communications Managed API获取Lync在线会议的链接地址
最近在项目上遇到一个问题,需要能够在程序中获取Lync会议的链接地址.Lync是微软出品的一套即时通信(IM)客户端软件,配合Microsoft Lync Server使用,其前身是Microsoft ...
- 如何在一个页面后面随机跳转到多个链接地址Math.floor()和Math.random()
点击一个标签随机跳转到多个链接地址,主要运用javascript中的Math.floor()和Math.random()方法 floor(x) 方法是向下去整数 参数为任意数值或表达式. floor( ...
- 怎么找到苹果App Store的应用程序下载链接地址
http://jingyan.baidu.com/article/6dad5075f6fa79a123e36e85.html 怎么找到苹果App Store的应用程序下载链接地址 每个上传到苹果app ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- 如何获取Flickr图片链接地址作为外链图片
Flickr,雅虎旗下图片分享网站.为一家提供免费及付费数位照片储存.分享方案之线上服务,也提供网络社群服务的平台.其重要特点就是基于社会网络的人际关系的拓展与内容的组织.这个网站的功能之强大,已超出 ...
- uboot 链接地址与运行地址的区别
对于ARM架构的CPU,上电后PC寄存器是指向0地址处的,从这个地址开始运行程序,那么运行了启动代码后会把程序搬移到内存中去运行,这样就是产生程序会在运行时有个两地址,而由源码编译为可执行文件时只会指 ...
- Spring mvc创建的web项目,如何获知其web的项目名称,访问具体的链接地址?
Spring mvc创建的web项目,如何获知其web的项目名称,访问具体的链接地址? 访问URL: http://localhost:8090/firstapp/login 在eclipse集成的 ...
随机推荐
- POI2015题解
POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI20 ...
- macOS -- Mac系统如何编辑hosts文件
Hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文 ...
- 适合Centos Web服务器的iptables规则
适合Centos Web服务器的iptables规则IPT="/sbin/iptables"$IPT --delete-chain$IPT --flush$IPT -P INPUT ...
- .NET泛型解析(上)
[1]:泛型介绍 泛型是C#2.0中一个重要的新特性,泛型是CLR和编程语言提供的一种特殊机制,它支持另一种形式的代码重用.泛型通常用与集合以及作用于集合的方法一起使用,当然也可以单独使用. C#是一 ...
- logback日志分开纪录
LogBack 日志 文件分开纪录 在处理Log中,我们一般讲Log分为一下几类,Debug类型,Error类型,Info类型 等等.. 那么使用LogBack如何分开日志处理 代码如下: 当然也可以 ...
- Eclipse实用用快捷键
1.ctrl+shift+o 添加必须import并删除无用import.代码被改动时容易产生很多无用引用,此时这个快捷键就可以一次把如下的引用删掉了
- java 面向对象 — 继承
继承中的构造方法,先执行父类中的构造方法,然后执行子类中的构造方法 继承中的属性,最后执行的属性 覆盖前面的属性 因为是开辟了 两个内存空间,所以相比较是不同的. 如果想比较两个对象的值是否相同的话, ...
- bzoj4591 [Shoi2015]超能粒子炮·改
Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...
- centos7 安装 elasticsearch
安装java环境 这里使用yum方式安装,前提是必须有网络 yum install java-1.8.0-openjdk 安装完成,查看java版本 [root@localhost ~]# java ...
- Python格式化输出%s和%d
python print格式化输出. 1. 打印字符串 print ("His name is %s"%("Aviad")) 效果: 2.打印整数 print ...