U-BOOT分析之编译初体验

嵌入式系统:uboot->kernel->挂接根文件系统->应用程序

1.u-boot打补丁,编译,结合Makefile进行分析

a.解压缩u-boot压缩包u-boot-1.1.6.tar.bz2

tar xjf u-boot-1.1.6.tar.bz2

b.进入压缩得到的文件

cd u-boot-1.1.6

c.打补丁

patch -p1 <../u-boot-1.1.6.patch

d.配置

make 100ask24x0_config

e.编译,得到u-boot.bin文件

make

在编译得到u-boot.bin文件之后,我们就可以将文件下载到开发板上去了,uboot支持很多的命令,在命令行输入?或者help查看支持的所有命令。特别的,输入menu回到菜单。菜单的功能是通过usb(usb device线)下载uboot,内核,文件系统。

uboot的最终目的是启动内核

1.从flash读出内核放到sdram

2.启动内核

为达到最终的目的uboot要实现的功能:

1.能够读Flash

2.初始化SDRam,初始化时钟(开发板上电,时钟的运行频率是12M,2440最大的频率是400M)

虽然uboot的最终目的是启动内核,但是在开发阶段我们想增加更多的功能方便开发。

1.初始化串口

2.写flash(这样就可以通过网络,串口下载将uboot,kenel,filesystem下载到flash上去)

3.网卡,usb等等

2.u-boot功能,结构,结合Makefile进行分析
1.分析配置过程make 100ask24x0_config 命令

1.在uboot顶层目录下的makefile中搜索100ask24x0_config 结果如下

100ask24x0_config   :   unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0

MKCONFIG定义为

MKCONFIG    := $(SRCTREE)/mkconfig

所以输入make 100ask24x0_config命令相当于 把 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0 传入mkconfig文件,100ask24x0 是第一个参数$1

2.ln -s asm-arm asm

3.ln -s arch-s3c24x0 asm-arm/arch

4.ln -s proc-armv asm-arm/proc

5.创建config.mk文件 内容追加为ARCH=arm CPU=arm920t BOARD=100ask24x0 SOC=s3c24x0

6.创建config.h文件 内容追加为 /Automatically generated -do not edit/ #include

2.分析编译过程

1.incldue $(OBJTREE)/include/config.mk

2.ifeq($(ARCH),arm) CROSS_COMPLIE = arm-linux-

3.include $(TOPDIR)/config.mk

4.

  • OBJS = cpu/arm920t/start.o
  • LIBS = lib_genertic/libgeneric.a
  • LIBS+=board/100ask24x0/lib100ask24x0.a
  • LIBS+=cpu/arm920t/libarm920t.a

5.在执行make 的时候如果不指定目标,他就执行第一个目标

  • all: $(ALL) aLL 依赖于ALL
  • ALL = (obj)uboot.srec (obj)u-boot.bin (obj)System.map (U_BOOT_NAND)
  • 我们的目的是生成u-boot.bin
  • (obj)uboot.bin: (obj)u-boot #u-boot.bin又依赖于elf格式的u-boot
  • (obj)uboot:dependversion (SUBDIRS) (OBJS) (LIBS)$(LDSCRIPT)……#u-boot又依赖于

6.不想那么麻烦的分析makefile,可以输入make命令后查看最后面的打印信息

7.通过查看打印信息,可以看到这样一句话。arm-linux-ld -Bstatic -T /work/sysytem/u-boot-1.1.6/board/100ask24x0/u-boot.lds -Ttext 0x33f80000 $UNDEF_SYM cpu/arm920t/start.o #链接的时候依赖两个东西,原材料和链接脚本。链接脚本指示映像文件的组织结构。

8.分析u-boot.lds文件(.=0x00000000 0x00000000要加上0x33f80000=uboot运行地址)一开始运行的文件是cpu/arm920t/start.o文件

9.链接地址(运行地址)由连接文件board/100ask24x0/u-boot.lds和board/100ask24x0/config.mk TEXT_BASE共同指定,TEXT_BASE在顶层目录的config.mk LDFLAGS中被引用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值