用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 ...
随机推荐
- Effective java-枚举和注解思维导图
- Wpf 数据绑定简介、实例1
简介:1.WPF绑定使用的源属性必须是依赖项属性,这是因为依赖项属性具有内置的更改通知支持,元素绑定表达式使用了Xaml扩展标记, WPF绑定一个控件是使用Binding.ElementName, 绑 ...
- oracle解析xml完成版第二次修改
其实XML字符串就好像是ORACLE中的外部表,因此Oracle对 解析XML字符串一些规则要求非常严格.XML字符串提供的数据就是一张表,所以Oracle必须提供跟 xml数据一致的列头 示例一 S ...
- cursor 与refcursor及sys_refcursor的区别 (转载)
楼主标明是转载的,我只把我转载的地址发上来 http://www.cnblogs.com/honliv/archive/2011/07/21/2112639.html 显式是相对与隐式cursor而言 ...
- mybatis 一对一关联
首先建表: CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE ...
- C++学习之DLL注入
#include<stdio.h> #include<Windows.h> #include<TlHelp32.h> //typedef unsigned long ...
- protobuf的反射机制
反射机制 java在运行状态时,能够知道任意类的所有属性和方法,都能够调用任意对象的任意方法和属性.这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. C++本身没有反射机制. ...
- 15 3Sum(寻找三个数之和为指定数的集合Medium)
题目意思:给一个乱序数组,在里面寻找三个数之和为0的所有情况,这些情况不能重复,增序排列 思路:前面2sum,我用的是map,自然那道题map比双指针效率高,这道题需要先排序,再给三个指针,i.j.k ...
- 常用排序算法总结(C#版)
首先,说说几个排序中的概念. 1.稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的.反之,就是非稳定的. 比如:一组数 ...
- js监听回车事件
标题通俗的说,也就是绑定当用户按下回车键要执行的事件. 下面,入正题. 第一步,先编写简单的页面代码,这里我们只需要一个按钮就足够了.当然,还有按钮事件. <html> <head& ...