U-BOOT分析之编译初体验
来源:互联网 发布:java 并发和线程 编辑:程序博客网 时间:2024/06/05 08:58
嵌入式系统: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)u−boot.srec (obj)u-boot.bin(obj)System.map (U_BOOT_NAND) - 我们的目的是生成u-boot.bin
(obj)u−boot.bin: (obj)u-boot #u-boot.bin又依赖于elf格式的u-boot(obj)u−boot: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中被引用。
- U-BOOT分析之编译初体验
- 03-S3C2440u-boot学习之u-boot分析编译体验
- u-boot编译分析
- 韦东山“第09课第1节 u-boot分析之编译体验“之学习笔记
- 伟东山视频自学笔记——第9课第1节 u-boot分析之编译体验
- u-boot分析之Makefile结构分析---编译
- U-Boot编译过程分析
- u-boot编译过程分析
- u-boot编译过程分析
- u-boot编译过程分析
- 初学u-boot之源码配置编译过程分析
- U-boot移植之配置编译Makefile分析
- u-boot之mkconfig分析
- u-boot之Makefile分析
- u-boot之SPL分析
- u-boot分析之Makefile
- u-boot源码分析 - 简介,编译
- U-Boot编译过程完全分析
- Annotation 标注(注解)
- 机器学习基础 维基翻译 超参数选择 K近邻法 及简单的sklearn例子 分类:机器学习Sklearn
- 深入解析Mac OSX & IOS 操作系统(一)
- HTTP传输错误解决com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 13
- maven学习
- U-BOOT分析之编译初体验
- Java数据类型
- java容器(三)-遍历打印的三种方法
- 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛(湖南) 暨 第九届湘潭市大学生程序设计比赛H.Highway(树的直径)
- 链剖——BZOJ3631/Luogu3258 [JLOI2014]松鼠的新家
- java
- P1089 津津的储蓄计划
- 探讨operator new和new operator
- 数据结构-----基于双数组的Trie树