u-boot分析之Makefile

2019-07-13 03:42发布

上电–PC–BIOS–引导操作系统(windows)–识别C盘、D盘–运行应用程序(qq) 嵌入式系统–bootloader–Linux内核–挂载根文件系统–应用程序 起动内核的方式 BIOS:从硬盘上启动内核 嵌入式linux:从Flash读出内核--放到SDRAM--启动内核 u-boot要实现的功能 1、读flash(+写flash,为开发方便①写flash、②网卡、③USB)2、初始化SDRAM(初始化时钟、初始化串口) 3、启动内核 硬件相关的初始化:关看门狗、初始化时钟、初始化SDRAM 满足开发加入功能:烧写Flash (网卡、USB)、串口(输入命令) …………………………………………………………………………………………………………………..

1.分析make 100ask24x0_config

u-boot-1.1.6 打好补丁,制作压缩文件,拷贝到win下供使用
打开u-boot的Makefile,分析 搜索 100ask24x0_config
这里写图片描述 执行make 100ask24x0_config 就相当于执行
mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0 (0" role="presentation" style="position: relative;">06) 打开 mkconfig 这里写图片描述
板子没有命名将其命名为$1,即100ask24x0。 这里写图片描述 在Makefile里面搜索SRCTREE 这里写图片描述 SRCTREE=CURDIR,if定义了BUILD_DIR,那么OBJTREE为BUILD_DIR
if没有定义了BUILD_DIR,那么OBJTREE为CURDIR。 这里写图片描述 并没有定义,所以SRCTREE=OBJTREE。
执行else,建立连接文件 ln -s asm-arm asm ,asm指向arm 这里写图片描述 这里写图片描述 In -s arch-s3c24x0 asm-arm/arch 在asm-arm下建立arch,指向s3c24x0 这里写图片描述 这里写图片描述 In -s proc-armv asm-arm/proc 在 asm-arm下建立proc,指向armv
这里写图片描述 这里写图片描述
内容:
ARCH =arm
CPU =arm920t
BOARD =100ask24x0 这里写图片描述
SOC =s3c24x0 这里写图片描述 这里写图片描述
创建单板相关的头文件
这里写图片描述
APPEND=no执行 > config.h # Create new config file
“>”新建文件 “>>”追加过去 config.h的内容
这里写图片描述 这里写图片描述

2.分析make

这里写图片描述
包含的文件就是上面配置过程生成的config.mk
定义了ARCH 、CPU、BOARD、SOC的变量值为arm、arm920t、smdk2410、s3c24x0 这里写图片描述
根据上面的4个变量确定编译器、编译选项等 这里写图片描述 这里写图片描述 这里写图片描述 可以看看执行make后的文件,如下 这里写图片描述 链接脚本
这里写图片描述
第一个start.o与Makefile对应
接下来是lib库
这里写图片描述
与Makefile对应 打开链接脚本u-boot-1.1.6oard100ask24x0u-boot.lds,查看链接 SECTIONS { . = 0x00000000;//uboot开始运行的地址0x33f80000 . = ALIGN(4); .text : { cpu/arm920t/start.o (.text) //第一个文件的代码段 board/100ask24x0/boot_init.o (.text) *(.text) //其他所有文件的代码段 } . = ALIGN(4); .rodata : { *(.rodata) } //所有文件只读数据段 . = ALIGN(4); .data : { *(.data) } //所有文件的数据段 . = ALIGN(4); .got : { *(.got) } . = .; __u_boot_cmd_start = .; .u_boot_cmd : { *(.u_boot_cmd) } __u_boot_cmd_end = .; . = ALIGN(4); __bss_start = .; .bss : { *(.bss) } _end = .; } 接下来分析start.o,了解uboot启动内核的整个流程。
分析Makefile:
①第一个文件 cpu/arm920t/start.o
②链接地址 board100ask24x0u-boot.lds +0x33f80000