zoukankan      html  css  js  c++  java
  • 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法 分类: HI3531 arm-linux-Ubuntu 2013-12-12 10:22 801人阅读 评论(0) 收藏

      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

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    网站SEO关键词优化技巧
    SEO操作流程及网站优化技巧
    Linux服务器工作常用命令总结
    【转载】Linux常用命令大全(非常全!!!)
    myBatis出现Mapped Statements collection already contains value for
    maven打成war包之后没有class文件
    查询每个类型最新的一条记录
    关于 MySQL 的 boolean 和 tinyint(1) (转)
    Mac下的eclipse按住ctrl点击无法查看类文件
    Mac 10.10下安装MySQL5.6.21提示安装失败
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706699.html
Copyright © 2011-2022 走看看