好文档 - 专业文书写作范文服务资料分享网站

Linuxarm底层启动流程简介

天下 分享 时间: 加入收藏 我要投稿 点赞

Linux开发驱动底层环境启动流程

Uboot编译:rm -rf 删除命令

tar xjf 解压uboot文件

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

打补丁 -p1 指示忽略第一个斜杠前因为已经在当前目录。 打好补丁之后配置文件make 100ask24x0_config之后make 配置文件是厂家提供好的。

Make后生成bin文件,在Windows下进入oflash目录烧写这个文件。选择Open jtag S2C2440 nand flash 0块 0 2 0 0 0这几个数字

烧写之后进入启动界面之后uboot命令 按help查看支持哪些命令。?Md 查看 md命令 Print 命令查看环境变量

设置环境变量 set xxxx xx save reset重启

Uboot 的终极目的就是要启动内核。 Make config 就相当于执行命令 100ask24x0_config : unconfig

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

MKCONFIG := $(SRCTREE)/mkconfig

$(@:_config=) $(@ 表示目标文件100ask24x0 _config=) 表示

1 / 9

替换掉他用后面的arm arm920t 100ask24x0 NULL s3c24x0 100ask24x0

最后就执行这个命令

Mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0

找到脚本文件mkconfig #!/bin/sh表示他是用bin目录下sh解释执行,后面是传入的参数。这个配置过程它做了一些连接工作,把arm board arch 链接到现在的文件。

编译时的make 做的工作:用到了上面配置的config.mk (.a文件表示所有编译好的文件打包成成的一个库)

OBJS = cpu/arm920/xxxx Lib +=xxxx.a

ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)

依赖$(obj)u-boot.bin文件 $(obj)u-boot.bin他又依赖于

2 / 9

$(obj)u-boot: depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)

UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\\(__u_boot_cmd_.*\\)/-u\\1/p'|sort|uniq`;\\

cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \\

--start-group $(PLATFORM_LIBS) \\

-Map u-boot.map -o u-boot

得到的bin文件就是这个

.a文件如何组织连接在lds连接文件有说明 链接地址在0x33f80000就是说应该在这个地址运行

$(__LIBS)

--end-group

3 / 9

比如从0x00000000 到0x08000000是128M空间 2^27次方=2^7*2^10*2^10=128M 搜索命令 grep “” - nR 内存一共64M0x33f80000空出512K

UBOOT做一些工作:进入管理模式、关看门狗中断、初始化存储控制器、设置栈IRQFIQ、重定位(NORflash不能像内存一样写)、从flash拷到sdram、到他该运行的地址0x33f80000、清BSS段、调用C函数

4 / 9

从上往下依次是512K UBOOT 然后是用来实现malloc接下来是全局参数,在接下来就是各种模式的栈。

接下来刚才调用的C函数在这里执行完成大部分初始化包括以下初始化。

5 / 9

Linuxarm底层启动流程简介

Linux开发驱动底层环境启动流程Uboot编译:rm-rf删除命令tarxjf解压uboot文件patch-p1<../u-boot-1.1.6.jz2440.patch打补丁-p1指示忽略第一个斜杠前因为已经在当前目录。打好补丁之后配置文件make100ask24x0_config之后make配
推荐度:
点击下载文档文档为doc格式
0t1v89tz9u4mn0g1mmp04oweh0q6fq00oju
领取福利

微信扫码领取福利

微信扫码分享