用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法
S3C44B0开发板中,用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法
1.开发板说明:
开发板上已有移植好的UBOOT运行。
2.交叉编译工具链为arm-linu-gcc-4.0.4
3.原理:
采用UBOOT自带的命令loadb,加应用程序(.bin)加载至SDRAM中某一地址中,然后用go 命令从某地址处开始执行程序。
操作方法说明:
1.编写一个测试程序,见附上的例程hello.c。
hello.c主要包含以下几个功能,在串口终端打印输出字符串,控制开发板上的LED灯,同时采用等待延时的方法循环执行。
2.编写Makefile文件,方便调试,省得每次都要敲命令行。
3.将得到的hello.bin文件用loadb命令加载至相应的地址(addr),该地址应与Makefile文件中-Ttext指定的地址相同。
4.用go addr命令运行程序。
需要注意的问题:
1.在SDRAM中运行的地址选取问题:
由于UBOOT也是在SDRAM中运行的,因此,要考虑应用程序的大小,加载到某地址后,不要破坏了UBOOT的正常运行。
如果影响到了UBOOT的运行,那结果是不可预知的。因此,要避免此种情况的发生。
2.在地址链接时,需要指定程序入口地址,即arm-linux-ld -Ttext 0x0c400000 -e main hello.o -o hello.elf中-e main这项。
-e指定的是入口点,即名称,应该与应用程序中的主程序名(main)相同。
这里的主程序指应用程序的主运行程序,并不一定是main,可任意指定,比如entry等,但-e指定的名称必须与之相同。
3.如果在应用程序中,有多个函数时,默认情况下,是依据函数的实现顺序分配地址值的。
如此例中,delay函数在main函数之前的话,那delay的分配地址,应该会是0x0c400000,而main的是0x0c400030,要比delay的靠后。
若main在delay前面,则main为0x0c400000,delay为0x0c40006c。
同时,文件中的函数地址值可以通过hello.map文件得知。
4.如果违反了3所述的情况,可通过查看hello.map文件中主程序的地址(main),然后在用go 命令时所接的地址改为主程序的起始地址的话,也是可以正确运行程序的。
资源下载:
http://download.csdn.net/detail/mao0514/6701601
用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法的更多相关文章
- 使用composer命令加载vendor中的第三方类库
1.首先下载需要的第三方类库,放在TP框架下的vendor文件夹下 2.给第三方类库SDK写上命名空间,命名空间为该类库的文件夹对应的名字 3.在composer.json文件中添加需要加载的第三方类 ...
- SuperSocket命令加载器 (Command Loader)
在某些情况下,你可能希望通过直接的方式来加载命令,而不是通过自动的反射. 如果是这样,你可以实现你自己的命令加载器 (Command Loader): public interface IComman ...
- SuperSocket命令和命令加载器
关键字: 命令, 命令加载器, 多命令程序集 命令 (Command) SuperSocket 中的命令设计出来是为了处理来自客户端的请求的, 它在业务逻辑处理之中起到了很重要的作用. 命令类必须实现 ...
- jQuery自动加载更多程序
1.1.1 摘要 现在,我们经常使用的微博.微信或其他应用都有异步加载功能,简而言之,就是我们在刷微博或微信时,移动到界面的顶端或低端后程序通过异步的方式进行加载数据,这种方式加快了数据的加载速度,由 ...
- 百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法
百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法 金刚 前端 ueditor 初始化 因项目中使用了百度编辑器——ueditor.整体来说性能还不错. 发现问题 我在做一个编辑页面 ...
- winfrom窗体加载控制台程序,可以自定义输出语句颜色
winfrom窗体加载控制台程序,可以自定方输出语句颜色,如下图所示 怎么实现的此功能,网上有大把的方法,我这里已经把方法打包成了一个类,只需要引用调用就可以使用了,写的比较粗糙,如有发现需要改进的地 ...
- chrome 安装setupvpn 解决chorme未能成功加载扩展程序的问题
一: vpn文件 https://pan.baidu.com/s/1wZV2HAC3GHlh1bjlvbilRg 提取码: gz72; 二 : 安装步骤 ------请看完以下步骤,不要直接拖 ...
- InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式
InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...
- jqGrid 加载完jqGrid之后可以执行函数的方法
, gridComplete: function() { jQuery('#first_gridpager').html("首页 "); jQuery('#prev_gridpag ...
随机推荐
- div如何加滚动条
<div style="position:absolute; height:400px; overflow:auto"></div>div 设置滚动条显示: ...
- php 写model层
<?php /** * @author Administrator * */ class User { private $id; private $admin; private $paw; pr ...
- 黑马程序员-hashtable
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列 ...
- Directory类
string[] pathes = Directory.GetDirectories(@"G:\ReawFiles");//获得所有的文件夹 string[] pathes = D ...
- 【COGS1672】难存的情缘
[题目描述] 一天机房的夜晚,无数人在MC里奋斗着... 大家都知道矿产对于MC来说是多么的重要,但由于矿越挖越少,勇士们不得不跑到更远的地方挖矿,但这样路途上就会花费相当大的时间,导致挖矿效率底下. ...
- 跨域的iframe自动调整高度(cross-domain iframe resizer)
可以使用iframe-resizer项目地址: http://davidjbradshaw.github.io/iframe-resizer/演示地址: http://davidjbradshaw.c ...
- asp.net实现 EXCEL数据导入到数据库功能
在项目中经常要用EXCEL导入数据到数据库,提高工作效率. 注意:EXCEL中的第一行不能导入. 下面是源码: IntoExcel.aspx: [csharp] <%@ Page Languag ...
- ar命令和nm命令(建库!)
ar 命令详解 今天,跟着我们的技术大牛学了不少东西,首先就是这个ar命令啦. 当我们的程序中有经常使用的模块,而且这些模块在其他程序中也会用到,为了实现代码重用减少软件开发周期,我们可以将它们生成库 ...
- Spring事务管理中@Transactional的参数配置
Spring作为低侵入的Java EE框架之一,能够很好地与其他框架进行整合,其中Spring与Hibernate的整合实现的事务管理是常用的一种功能. 所谓事务,就必须具备ACID特性,即原子性.一 ...
- 素数判定 AC 杭电
素数判定 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...