IMX6solo 适配uboot 2009 配置分析

一、首先分析根目录下Makefile

 1、uboot2009没有configs目录,这个跟之后的版本是有区别的。ub2009的配置命令在根目录的Makefile中可以找到。如下为imx6solo的配置命令:

unconfig:
		@rm -f	$(obj)include/config.h	$(obj)include/config.mk	\
				$(obj)board/*/config.tmp	$(obj)board/*/*/config.tmp	\
				$(obj)include/autoconfig.mk	$(obj)include/autoconf.mk.dep


mx6solo_sabresd_config		\
mx6solo_sabresd_mfg_config	\
mx6dl_sabresd_config		\
mx6dl_sabresd_mfg_conig		\
mx6dl_sabresd_android_config	\
mx6q_sabresd_config			\
mx6q_sabresd_android_config	\
mx6q_sabresd_mfg_config		\
mx6q_sabresd_iram_config	:	unconfig
	@[ -z "$(findstring iram_,$@)" ]	||		\
			{	echo "TEXT_BASE = 0x00907000" > $(obj)board/freecale/mx6q_sabresd/config.tmp;	\
				echo "...with iram configuration";	\
			}
	@$(MKCONFIG)	$(@:_config=) arm arm_cortexa8 mx6q_sabresd  freescale  mx6
# -z  判断如果存在的话
# $@ 为输入的参数,即上方 *_config
#	findstring 在$@ 中查找是否存在 iram_,即判断是否是使用的mx6q_sabresd_iram_config
#	$(@:_config=)	:分隔符, 即最后得出的字符为*_config去掉_config的部分
#	$(MKCONFIG)	=	$(SRCTREE)/mkconfig
#	此处我们使用的是:mx6solo_sabresd_config 去配置的。
#	所以最后一句的配置为:
# 	./mkconfig mx6solo_sabresd arm arm_cortexa8 mx6q_sabresd freescale mx6

 2、分析mkconfig文件,mkconfig是一个shell脚本,内容如下:

#!/bin/sh -e

APPEND=no
BOARD_NAME=""

# $# 是输入参数的个数,此处我们使用的配置中 $# == 6
# 判断参数的个数 以及第一个参数的格式
while [ $#	-gt 0 ]; do
		case "$1"	in
		--)	shift ; break	;;
		-a)	shift ; APPEND=yes ;;
		-n) shift ; BOARD_NAME="${1%%_CONFIG}" ; shift ;;
		*)  break ;;
		esac
done

# BOARD_NAME 为空,所以BOARD_BANE为传入的第一个参数即: mx6solo_sabresd
[ "${BOARD_NAME})" ] || BOARD_NAME="$1"

[ $# -lt 4 ] && exit 1
[ $# -gt 6 ] && exit 1 

echo "Configuring for ${BOARD_NAME} board... "

# Makefile 中定义了:
#	OBJTREE	:=	$(if $(BUILD_DIR),$(BUILD_DIR),CURDIR)"
#	SRCTREE	:=	$(CURDIR)
#$(BUILD_DIR)此处未定义,
# $2 = arm

if [ "$(SRCTREE)" != "$OBJTREE" ] ; then
	mkdir -p	${OBJTREE}/include
	mkdir -p	${OBJTREE}/include2
	cd ${OBJTREE}/include2
	rm -f asm
	ln -s ${SRCTREE}/include/asm-$2 asm
	LNPREFIX="../../include2/asm/"
	cd ../include
	rm -rf asm-$2
	rm -rf asm
	mkdir arm-$2
	ln -s arm-$2 asm
else
# 未定义BUILD_DIR 走这里, 从新创建一个链接文件
	cd ./include
	rm -f asm
	ln -s asm-$2 asm
fi

rm -f asm-$2/arch

# $6 = mx6
#  创建一个链接asm-arm/arch --> asm-arm/arch-mx6
if [ -z "$6" -o "$6" = "NULL" ] ; then
	ln -s ${LNPREFIX}arch-$3 asm-$2/arch
else
	ln -s ${LNPREFIX}arch-$6 asm-$2/arch
fi

if [ "$2" = "arm" ] ; then
	rm -f asm-$2/proc
	ln -s ${LNPREFIX}proc-armv asm-$2/proc
fi

#	$2 == arm
#	$3 == arm_cortexa8
#	$4 == mx6q_sabresd 
#	$5 == freescale
#	$6 == mx6
echo "ARCH		=$2"	>  config.mk
echo "CPU		=$3"    >> config.mk
echo "BOARD		=$4"	>> cinfig.mk

[ "$5" ] && [ "$5" != "NULL" ] && echo "VERDOR = $5" >> config.mk
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC    = $6" >> config.mk

# 写入 include/config.h
if [ "$APPEND" = "yes" ] ; then
	echo >> config.h
else
	echo > config.h
fi

echo "/* Automatically generated - do not edit */" >> config.h
# 包含板子对应的配置文件 $1 = mx6solo_sabresd
echo "#include <configs/$1>" >> config.h
echo "#include <asm/config.h>" >> config.h

exit 0

配置过程到此分析完成。

配置使用命令: make mx6solo_sabresd_config 。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值