用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

时间: 2024-09-17 04:46:37

用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法的相关文章

word2007加载或卸载模板或加载项程序

  模板可以存储样式."自动图文集"词条."自动更正"词条.宏.工具栏.自定义菜单设置和快捷键.加载一个模板可以使其成为共用模板,这样,在使用基于任何其他模板的文档时,还可以使用这个共用模板. 加载项是一些补充程序,安装这些补充程序可以添加自定义命令和专用功能,从而扩展 Microsoft Office Word 的功能.例如,加载项程序可以是由公司 IT 部门设计并发布的一个程序,用来在计算机上打开的文档中突出显示公司名称. 您要做什么? ●加载模板或加载项 ●卸

工具解析篇:高效利用JS加载.Net程序

本文讲的是工具解析篇:高效利用JS加载.Net程序, 0x00 前言 最近James Forshaw开源了一个工具DotNetToJScript,能够利用JS/Vbs脚本加载.Net程序,很有趣.  Casey Smith和Cn33liz都对此做了进一步研究,开源了他们的利用代码.  本文将要对该技术作系统整理,帮助大家更好的认识. 0x01 简介 本文将要介绍以下内容: 1. DotNetToJScript编译方法 2. DotNetToJScript使用方法 3. 利用JS/Vbs执行she

完美解决IIS服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'-没有注册类别的问题_服务器

现象:        浏览ASP页面提示   500内部错误 事件查看器中:        [1]:                服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'.错误是 '没有注册类别'.                 有关此消息的详细信息,请访问 Microsoft 联机支持站点: http://www.microsoft.com/contentredirect.asp.                 有关更多信息,请参阅在 http://go.micros

完美解决IIS 服务器无法加载应用程序 ‘/LM/W3SVC/1/ROOT’。错误是:没有注册类别_应用技巧

现象:        浏览ASP页面提示   500内部错误 事件查看器中:        [1]:                服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'.错误是 '没有注册类别'.                 有关此消息的详细信息,请访问 Microsoft 联机支持站点: http://www.microsoft.com/contentredirect.asp.                 有关更多信息,请参阅在 http://go.micros

helloworld-error MSB4025: 未能加载项目文件。给定编码中的字符无效。

问题描述 error MSB4025: 未能加载项目文件.给定编码中的字符无效. 很简单的静态库编译出现了问题定义了头文件:Function.hvoid Print(); c++文件:Function.cpp #include ""Function.h""void Print(){ std::cout<<""HelloWorld!!!""<<std::endl;} 然后,点击build,报错如下:1&g

Ajax加载外部页面弹出层效果实现方法_AJAX相关

本文实例讲述了Ajax加载外部页面弹出层效果实现方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

jquery中如何在页面加载的时候根据action中的值的长度动态生成div

问题描述 jquery中如何在页面加载的时候根据action中的值的长度动态生成div 我action中的数据是保存在json中,然后要根据数据记录数生成多个div, //门店信息信息加载 $.ajax({ url:"findAllStoreInfoAction.action?workDate="+showCurrentTime(), dataType:"json", type:"POST", async:false, success: func

指针-exec加载的程序的值如何写入管道写端?

问题描述 exec加载的程序的值如何写入管道写端? 10C fork一个子进程->创建一个管道->用exec加载一个c程序,这个c程序输出2个字符串,如何把这两个字符串送给管道的写入端?是先返回给进程的一个字符指针,然后再把这个指针给写入端吗?那程序的值是如何传给字符指针的呢? 解决方案 我打100个字都行啊,至少20字?垃圾网站 解决方案二: http://m.blog.csdn.net/blog/u010223072/47777497

xcode-为什么Reveal.app中reveal.framework加载到程序运行就出错?

问题描述 为什么Reveal.app中reveal.framework加载到程序运行就出错? 我从网上下在了一个reveal.app,每次把reveal.framework加载到程序编译就有错误,怎么回事? 我的Xcode是Version 7.0 beta (7A120f)版本的,求大神指点?