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集成的 ...
随机推荐
- C#中时间计算方法汇总
这几天要做一个关于时间数据统计的页面,发现有些东西还是比较用的,现总结如下. DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.A ...
- Ext.js树结构
1.app.js Ext.onReady(function(){ Ext.QuickTips.init(); Ext.Loader.setConfig({ enabled:true }); Ext.a ...
- graphql-yoga interface && union 使用
接口就是一个约定,方便数据的约定,union 可以实现数据类型的共享,减少代码量 基本项目 参考 https://github.com/rongfengliang/graphql-yoga-doc ...
- C#在64位操作系统上连接Oracle的问题和解决方案
C#使用System.Data.OracleClient连接Oracle数据库.之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了.错误信息如下: 尝试加载O ...
- 制作一个64M的U盘启动盘(mini linux + winpe +dos toolbox)
制作一个64M的U盘启动盘(mini linux + winpe +dos toolbox) 自己动手定制winpe+各类dos工具箱U盘启动盘+minilinux 由于一个64M老U盘,没什么用,拿 ...
- socket编程---SCTP
sctp_sndrcvinfo结构体 sctp_event_subscribe结构体 更多的关于SCTP的结构体http://aisxyz.iteye.com/blog/2408978 SCTP套接字 ...
- TCP/IP详解与OSI七层模型
TCP/IP协议 包含了一系列构成互联网基础的网络协议,是Internet的核心协议.基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层.网络层.传输层和应用层.下图表示TCP/IP模型与 ...
- Eclipse实用用快捷键
1.ctrl+shift+o 添加必须import并删除无用import.代码被改动时容易产生很多无用引用,此时这个快捷键就可以一次把如下的引用删掉了
- C# 基础备忘录
1. decimal 类型调用ToString()方法后没把末尾的0去掉的解决办法: 例子:decimal? money = Convert.ToDecimal(10.8950); string mo ...
- [转][C#]常用开源项目
本文来自:http://www.cnblogs.com/sunxuchu/p/6047589.html 新增两个: 纸壳CMS http://www.zkea.net/zkeacms https:// ...