u-boot分析之Makefile

来源:互联网 发布:个人数据交易平台 编辑:程序博客网 时间:2024/05/17 11:58

上电–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 (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.6\board\100ask24x0\u-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
②链接地址 board\100ask24x0\u-boot.lds +0x33f80000