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

发布者:和谐共融最新更新时间:2024-11-18 来源: cnblogs关键字:UBOOT 手机看文章 扫描二维码
随时随地手机看文章

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 命令时所接的地址改为主程序的起始地址的话,也是可以正确运行程序的。


关键字:UBOOT 引用地址:用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法

上一篇:6410裸机程序卡死
下一篇:BootLoader和内核image的关系

推荐阅读最新更新时间:2026-03-20 11:47

s3c2440中断程序(烧录到NORFlash,运行SDRAM
现在正在看韦东山的《嵌入式Linux应用开发完全手册》,看到了中断部分。书上是将程序烧录到NANDFlash中,由于当mini2440板子从NANDFlash启动的时候,会自动将其中的前4KB程序拷贝到CPU内部的SRAM(4KB大小)中,并且将该SRAM的起始地址映射为0x0。所以当中断发生的时候,PC指针指向0x0+offset(如:IRQ就是0x18),可以找到中断服务程序的入口。 但是有4KB的限制,加上U-BOOT一般都烧录到NORFlash中,再将程序搬移到SDRAM中再运行的,恰好手底下有JLINK设备,所以决定写一个烧录到NORFlash,运行在SDRAM中的中断测试程序。 先说一下整体思路:将系统启动时寻找的八个
[单片机]
迅为-i.MX6开发板手册更新-非设备树uboot-修改默认环境变量
本文档主要介绍如何非设备树 uboot 修改默认启动参数。iTOP-iMX6 开发板烧写好之后,默认是android 系统 9.7 寸屏幕的系统参数和屏幕参数,如下图所示。输入以下命令查看默认启动参数printenv 74.1 重要的环境变量 比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。 主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_arm/board.c”文件。 74.2 默认启动系统设置 默认启动系统参数是
[单片机]
迅为-i.MX6开发板手册更新-非设备树<font color='red'>uboot</font>-修改默认环境变量
迅为IMX6Q开发板非设备树uboot-修改默认环境变量
iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参数。如下图。本文档主要介绍如何修改默认启动参数. ignore_js_op 70.1 重要的环境变量 比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_arm/board.c”文件。 70.2 默认启动系统设置 默认启动系统参数是:bootsystem。打开“board.c
[单片机]
迅为IMX6Q开发板非设备树<font color='red'>uboot</font>-修改默认环境变量
3-Uboot源码目录分析
1、cpu 本文件夹下的子文件与处理器相关,每个文件夹代表一种CPU系列。每个子目录中都包括cpu.c、interrupts.c、start.S文件。 cpu.c主要用于初始化CPU、设置指令Cache和数据Cache等 interrupt.c主要用于设置系统的各种中断和异常 start.S是U-boot启动时执行的第一个文件,主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础。 S5PV210芯片对应的文件夹是s5pc11x。 cpu/s5pc11x/s5pc110/cpu_init.S主要用于SDRAM内存的初始化设置。 2、boa
[单片机]
uboot关于LCD的代码分析
以下内容源于朱有鹏《物联网大讲坛》课程的学习,如有侵权,请告知删除。 1、在uboot-jiuding/board.c中,init_sequence中的display_banner中的open_backlight函数中,给GPF3_5输出高电平。 注释掉这一句uboot的LCD显示照样正常的,因为后面LCD操作的部分还会再做一遍的。 真正的初始化LCD系统并且显示logo,在start_armboot函数的后段的x210_preboot_init函数中(这个函数在mpadfb.c文件中);此函数纯粹是九鼎在移植时添加的。如果我们自己移植uboot可以考虑自己去添加。 2、logo显示和LCD屏幕分辨率适
[单片机]
<font color='red'>uboot</font><font color='red'>中</font>关于LCD的代码分析
uboot总结:uboot配置和启动过程3(config.mk分析)
说明:文件位置:在uboot的目录下,文件名为:config.mk。是一个makefile文件,以后会被主Makefile调用。 它的主要作用的是: (1)具体的设置交叉编译工具链接(主Makefile中也有设置交叉编译工具链) (2)加载include/autoconfig.mk文件(这个文件是在主Makefile中生成的) (3)指定-Ttext链接地址 (4)makefile的推导规则 下面来具体的分析代码: 1、设置交叉编译工具链 2、加载autoconfig.mk文件,这个文件是在主Makefile中生成 3、设置链接地址,这个TEXT_BASE是在主Makefile中的x210_sd_config部分配
[单片机]
uboot总结:uboot配置和启动过程1(主Makefile分析)
说明:文件位置:在uboot的目录下,文件名为:Makefile 从文件的头部开始分析 1、24-29行,配置uboot的版本信息。 VERSION = 1 PATCHLEVEL = 3 SUBLEVEL = 4 EXTRAVERSION = U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) VERSION_FILE = $(obj)include/version_autogenerated.h 2、主机的环境信息(比如:我现在是虚拟机的Ubuntu10.04下开发的,就是i686,linux。) 3、配置为静默编译的设置(使用方法:m
[单片机]
04_uboot全面讲解
本课程希望达到目标 理解底层代码的编写方式 u-boot版本选择 uboot官方源码地址 https://ftp.denx.de/pub/u-boot/ Uboot版本一直在迭代,加入的东西也越来越多,所以我们学习,只要选择适合的版本就可以了 这里我们先选择下载2010.12版本的 解压下来之后,进入archarmcpuarmv7路径下,可以看到有各种芯片的版本 mx5/ omap3/ omap4/ omap-common/ s5pc1xx/ s5p-common/ config.mk cpu.c Makefile start.S syslib.c u-boot.lds 里面的start.S是芯片启动的文件,是我们后面重
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved