关键词:
参考Friendlyarm的文档,编译uboot的流程为
make tiny4412_config make
这个过程主要涉及到两个文件,顶层的Makefile文件和mkconfig文件,makeconfig文件是一个脚本,通过文件的注释可以了解到它的作用
# Script to create header files and links to configure # U-Boot for a specific board. # # Parameters: Target Architecture CPU Board [VENDOR] [SOC]
意思是,mkconfig 是用来创建头文件和链接脚本,并以此来为特定的开发板配置u-boot的脚本。它的主要参数有
Target Architecture CPU Board [VENDOR] [SOC]
首先来分析顶层的Makefile文件,在Makefile文件中我们可以看到下面的代码
%_config:: unconfig
@$(MKCONFIG) -A $(@:_config=)
%在Makefile中作为通配符用来通配任意长度的字符,因此当我们执行 make tiny4412_config的时候就会匹配到%_config这条语句。::在Makefile中用来强制执行下面的命令,所以匹配到%_config之后,就会去执行unconfig,unconfig的作用是去除原来的配置信息。然后去执行
@$(MKCONFIG) -A $(@:_config=)
这条命令,@的作用是用来去除回显,$(MKCONFIG)在前面被定义为
MKCONFIG := $(SRCTREE)/mkconfig
SRCTREE := $(CURDIR)
我们将@去掉,然后执行make tiny4412_config,可以通过回显看到以下内容
make tiny4412_config awk ‘(NF && $1 !~ /^#/) { print $1 ": " $1 "_config; $(MAKE)" }‘ boards.cfg > .boards.depend /....../uboot_tiny4412/mkconfig -A tiny4412 Configuring for tiny4412 board...
所以我们执行make tiny4412_config实际上被解析成
/....../uboot_tiny4412/mkconfig -A tiny4412
指定了-A选项,mkconfig脚本会自动去解析boards.cfg文件,找到以下内容
# Target ARCH CPU Board name Vendor SoC Options
tiny4412 arm armv7 tiny4412 samsung exynos
所以我们最终执行的命令为
./mkconfig tiny4412 arm armv7 tiny4412 samsung exynos
总结一下,mkcongif脚本主要做了以下几件事
(1)解析boards.cfg tiny4412相关数据
tiny4412 arm armv7 tiny4412 samsung exynos
(2)针对平台做了一系列链接,创建平台、开发板相关的头文件的链接
# # Create link to architecture specific headers # if [ "$SRCTREE" != "$OBJTREE" ] ; then mkdir -p ${OBJTREE}/include mkdir -p ${OBJTREE}/include2 cd ${OBJTREE}/include2 rm -f asm ln -s ${SRCTREE}/arch/${arch}/include/asm asm LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/ cd ../include rm -f asm ln -s ${SRCTREE}/arch/${arch}/include/asm asm else cd ./include rm -f asm ln -s ../arch/${arch}/include/asm asm fi rm -f asm/arch if [ -z "${soc}" ] ; then ln -s ${LNPREFIX}arch-${cpu} asm/arch else ln -s ${LNPREFIX}arch-${soc} asm/arch fi if [ "${arch}" = "arm" ] ; then rm -f asm/proc ln -s ${LNPREFIX}proc-armv asm/proc fi
实际执行的命令为
cd ./include rm -f asm ln -s ../arch/arm/include/asm asm ln -s arch-exynos asm/arch
(3)创建顶层Makefile包含的文件 include/ config.mk
# # Create include file for Make # echo "ARCH = ${arch}" > config.mk echo "CPU = ${cpu}" >> config.mk echo "BOARD = ${board}" >> config.mk [ "${vendor}" ] && echo "VENDOR = ${vendor}" >> config.mk [ "${soc}" ] && echo "SOC = ${soc}" >> config.mk # Assign board directory to BOARDIR variable if [ -z "${vendor}" ] ; then BOARDDIR=${board} else BOARDDIR=${vendor}/${board} fi
生成的config.mk内容如下
ARCH = arm CPU = armv7 BOARD = tiny4412 VENDOR = samsung SOC = exynos
(4)创建开发板相关的头文件inlucde/config.h
# # Create board specific header file # if [ "$APPEND" = "yes" ] # Append to existing config file then echo >> config.h else > config.h # Create new config file fi echo "/* Automatically generated - do not edit */" >>config.h for i in ${TARGETS} ; do i="`echo ${i} | sed ‘/=/ {s/=/ /;q } ; { s/$/ 1/ }‘`" echo "#define CONFIG_${i}" >>config.h ; done cat << EOF >> config.h #define CONFIG_BOARDDIR board/$BOARDDIR #include <config_defaults.h> #include <configs/${CONFIG_NAME}.h> #include <asm/config.h> EOF
生成的include/config.h内容为
/* Automatically generated - do not edit */ #define CONFIG_BOARDDIR board/samsung/tiny4412 #include <config_defaults.h> #include <configs/tiny4412.h> #include <asm/config.h>
tiny4412u-boot分析u-boot启动流程
从大方面来说,u-boot的启动分成两个阶段,第一个阶段主要的职责是准备初始化的环境,主要有以下几点①设置异常向量表②把CPU的工作模式设置为SVC32模式③关闭中断、MMU和cache④关闭看门狗⑤初始化内存、时钟、串口⑥设置... 查看详情
第二章tiny4412u-boot移植二启动分析
本文转载自:http://blog.csdn.net/eshing/article/details/37521481版权声明:本文为博主原创文章,未经博主允许不得转载。一、启动过程说明 讲解启动过程,首先的源头就是打开电源,这个相信没人人不知道。CPU... 查看详情
tiny4412-1312__uboot移植(代码片段)
...inaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-11Tiny4412开发板硬件版本为: 底板: Tiny4412SDK1312B 核心板:Tiny4412-1306 1.获取U-BOOT源码从FTP站点下载: ftp://ftp.denx.de/pub/... 查看详情
tiny4412u-boot烧写及根文件系统制作(不进入终端问题)
http://m.blog.csdn.net/article/details?id=51400196(转) VMware12环境:ubuntu12.4开发板:tiny4412首先烧写bootloader,我用一个8G的内存卡,现在不说sd卡的制作过程了,网上可以参考。现在就把我给arm的emmc烧写过程开始说。用sd卡启动,开发... 查看详情
tiny4412学习杂记
1.Android挂载NFS使用busyboxmount来替代mount命令2.修改Uboot中fastboot最大buff 使用U-boot烧写Android5.0的时候出现remote:datatoolarge将 include/configs/tiny4412.h 改大一点3.tiny4412内核中trustzone配置开关tiny4412 trust 查看详情
uboot移植前奏
Tiny4412开发板硬件版本为: 底板: Tiny4412/Super4412SDK1506 核心板:Tiny4412-1412 1、下载u-boot源代码,建立u-boot代码仓库 参考:h 查看详情
tiny4412裸机程序说明
...动,只能尽可能找来各种相关资料进行参考分析。我想在U-Boot程序中加入LCD显示功能,但始终都没有正常点亮LCD,放弃的心都有了,后 查看详情
linux内核lcd驱动分析与换屏方法(tiny4412)
Linux内核中换屏技术21.5.1u-boot中的参数bootargs实现换屏在uboot中有一个bootargs环境变量,这个参数就是传递数据给内核的。对tiny4412提供的内核,可以通过修改bootargs实现驱动不同的LCD屏。21.5.2分析bootargs中的lcd参数再启... 查看详情
tiny4412标准版,编译u-boot并烧录到sd卡,从sd卡启动后只打印‘ok’两个字符
本人开发板是tiny4412(1G+4G)的标准版,由于开发板自带的光盘资料无法读取,所以就从友善官网下载到最新的资料;然而在做uboot烧录实验的时候,发现烧录完成从SD卡启动后只打印“OK”两个字符,无法正常... 查看详情
x-001friendlyarmtiny4412uboot移植前奏
...inaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-09参考u-boot版本:友善之臂提供的u-boot-2010-12Tiny4412开发板硬件版本 查看详情
tiny4412--uboot移植串口(代码片段)
...inaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-11Tiny4412开发板硬件版本为: 底板: Tiny4412SDK1312B 核心板:Tiny4412-1306 1,原理图查看tiny4412SDK-1312B-Schematic.pdf ... 查看详情
tiny4412--uboot移植时钟(代码片段)
...inaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-11Tiny4412开发板硬件版本为: 底板: Tiny4412SDK1312B 核心板:Tiny4412-1306 1、时钟体系exynos4412芯片时钟体系的介绍在《Exynos4412... 查看详情
tiny4412标准版,编译u-boot并烧录到sd卡,从sd卡启动后只打印‘ok’两个字符
本人开发板是tiny4412(1G+4G)的标准版,由于开发板自带的光盘资料无法读取,所以就从友善官网下载到最新的资料;然而在做uboot烧录实验的时候,发现烧录完成从SD卡启动后只打印“OK”两个字符,无法正常... 查看详情
u-boot启动流程详解-基于itop4412开发板
前言u-boot的作用:CPU上电后,需要设置很多状态,包括CPU状态、中断状态、MMU状态等,其次要做的就是对硬件资源经行板级初始化、代码重定向等,最后若不进入命令行模式,就会将linux内核从flash(NAND,NORFLASH,SD,MMC等)拷贝到D... 查看详情
tiny210(s5pv210)移植u-boot(基于2014.4版本号)——移植u-boot.bin(打印串口控制台)
...信息打印。在上节。我们看到调用relocate_code重定位。在u-boot的帮助文档doc/README.arm-relocation中对重定位有说明。u-boot为了生成位置无关码,在链接时指定了-pie选项,这个选项在u-boot-2014.04/arch/arm/config.mk中指定: 查看详情
u-boot-2016.07移植(第一篇)初步分析
U-BOOT-2016.07移植 (第一篇) 初步分析目录U-BOOT-201607移植 第一篇 初步分析目录编译和移植环境更新交叉编译工具1下载arm-linux-gcc4432安装arm-linux-gcc443安装环境Ubuntu910下载u-boot-201607并解压分析顶层Makefile1找出目标依赖关系2总结... 查看详情
x-007friendlyarmtiny4412u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<&l 查看详情
linux系统移植博文导航
...个一个交流的机会,也感谢大家的支持。Linux相关的网站U-BootLinux内核busyboxLinux系统移植Linux系统移植-前言第1章环境搭建(Exynos4412+U-boot2013.1)第1章环境搭建(imx283)第2章u-boot烧写与使用(Exynos4412+U-boot2013.1)第3章U-boot移植A(Ex... 查看详情