U-BOOT配置
补丁文件中修改代码的表示方法:(1)“---” 表示是 原来代码 (2)“+++”表示修改后的代码
补丁要补的位置
diff -urN u-boot-1.1.6/board/100ask24x0/100ask24x0.c u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c
--- u-boot-1.1.6/board/100ask24x0/100ask24x0.c 1970-01-01 07:00:00.000000000 +0700
+++ u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c 2010-11-26 12:54:37.034090906 +0800
@@ -0,0 +1,96 @@
“-”表示没有修改过的代码;“+”表示修改后的代码
原来的代码是从第0行开始共有0行(补丁产生新文件)修改过的代码从第1行开始向下共有96行。
补丁的详细过程
解压U-BOOT文件
tar xjif u-boot-1.1.6.tar.bz2
打补丁
打补丁时一般 已经是进到“u-boot-1.1.6”这个目录下,所以 patch时便忽略去目录“u-boot-1.1.6”。用到参数 -p1 。是指忽略去第一 个“/”。
启动内核
1.先配置 make xx_config:在 Makefile 中搜索 100ask24x0_config
2.make
配置100ask24x0_config
首先打开u-boot-1.1.6/Makefile文件:
配置make 100ask24x0_config
make 100ask24x0_config 时相当于执行: @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
SRCTREE := $(CURDIR) *CURDIR是make的内嵌变量, 为当前目录
MKCONFIG := $(SRCTREE)/mkconfig
MKCONFIG就是当前目录下的mkconfig文件,$(@:_config=)的结果就是将100ask24x0_config中的_config去掉为100ask24x故实际就是执行命令 ./mkconfig arm arm920t 100ask24x0 NULL s3c24x0
打开mkconfig
mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0
$0 $1 $2 $3 $4 $5 $6
这是分析它(指 mkconfig 传进来的参数)传入的参数 1,有没有--,-a,-n 或*。 参看脚本命令和参数发现都没有,则这 8 行可以去掉。
相当于 BOARD_NAME=100ask24x0 如果“BOARD_NAME”已经定义了。就不执行 BOARD_NAME="$1"。若没定义则执行 BOARD_NAME="$1 “或”的关系。在此之前LINUX 脚本中,用$1 表示第一个参数或命令。
$#表示参数的个数。这里除去命令外,看上面参数是 6 个($1-6).这里是说参数小于 4 个 则 退出,参数大于 6 个也是退出。接着打印
在终端处也可以看到
在Makefile中有这么几行代码
BUILD_DIR := $(O)
OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)) * 若$(BUILD_DIR)大于0为真OBJTREE=$(BUILD_DIR),
SRCTREE := $(CURDIR)
TOPDIR := $(SRCTREE)
LNDIR := $(OBJTREE)
可以推断出 $(CURDIR)等于0,所以OBJTREE=$(CURDIR), SRCTREE := $(CURDIR) 所以$SRCTREE" == "$OBJTREE故执行else分支。 打开include目录删除asm文件建立新文件asm
连接文件,指向
asm
-arm文件(表示选择使用arm架构文件)
在中断出也可以看出
继续向下分析:rm -f asm-$2/arch
if [ -z "$6" -o "$6" = "NULL" ] ; then (-z)为空 (-o)=NULL 判断为假
ln -s ${LNPREFIX}arch-$6 asm-$2/arch
if [ "$2" = "arm" ] ; then 判断为真
rm -f asm-$2/proc
ln -s ${LNPREFIX}proc-armv asm-$2/proc
fi
#
# Create include file for Make
#
echo "ARCH = $2" > config.mk ">":新建config
.
mk文件,里面内容为ARCH = arm
echo "CPU = $3" >> config.mk ">>"追加新内容
echo "BOARD = $4" >> config.mk
[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk 判断
$5
存在且不等于NULL
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk 判断
$6
存在且不等于NULL
得出结论:
ARCH=ARM
CPU = ARM920T
BOARD = 100ASK24x0
SOC = S3C24x0
if [ "$APPEND" = "yes" ] # Append to existing config file 在mkconfig第
11
行中,APPEND=no,所以执行
else
语句创建config
.
h
then
echo >> config.h
else
> config.h # Create new config file
fi
echo "/* Automatically generated - do not edit */" >>config.h
echo "#include <configs/$1.h>" >>config.h 追加内容
#include<configs/100ask24x0.h>
exit 0 退出
总结:1.先创建了链接文件
ln -s asm-$2 asm
ln -s ${LNPREFIX}arch-$6 asm-$2/arch
ln -s ${LNPREFIX}arch-$6 asm-$2/arch
2.创建 config.mk 这个文件
3.创建开发板相关的头文件
include/config.h
自此第一阶段make 100ask24x0.config结束。
来源:https://www.cnblogs.com/imunrobot/p/12433158.html