阅读uboot
下面是一个执行make XXX_config后的打印信息:
pengdl@debian:~/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06$ make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- hi3520d_config
Generating include/autoconf.mk
Generating include/autoconf.mk.dep
# Target Architecture CPU Board [VENDOR] [SOC]
'$#' =
'$0' = /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06/mkconfig
'$1' = hi3520d (Target)
'$2' = arm (Architecture)
'$3' = hi3520d (CPU)
'$4' = hi3520d (Board)
'$5' = NULL (VENDOR)
'$6' = hi3520d (SOC)
BOARD_NAME = hi3520d
/home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06
Configuring for hi3520d board...
SRCTREE = /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06
OBJTREE = /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06
ln -s ../arch/arm/include/asm asm
/home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06/include
ln -s arch-hi3520d asm/arch
ln -s proc-armv asm/proc
ARCH = arm > config.mk
CPU = hi3520d >> config.mk
BOARD = hi3520d >> config.mk
SOC = hi3520d >> config.mk
BOARDDIR = hi3520d
/home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06/include
下面是mkconfig的代码:
#!/bin/sh -e # Script to create header files and links to configure
# U-Boot for a specific board.
#
# Parameters: Target Architecture CPU Board [VENDOR] [SOC]
#
# (C) - DENX Software Engineering, Wolfgang Denk <wd@denx.de>
# APPEND=no # Default: Create new config file
BOARD_NAME="" # Name to print in make output
TARGETS="" while [ $# -gt ] ; do
case "$1" in
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
-t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
*) break ;;
esac
done echo "# Target Architecture CPU Board [VENDOR] [SOC]"
echo "'\$#' = $#"
echo "'\$0' = $0"
echo "'\$1' = $1 (Target)"
echo "'\$2' = $2 (Architecture)"
echo "'\$3' = $3 (CPU)"
echo "'\$4' = $4 (Board)"
echo "'\$5' = $5 (VENDOR)"
echo "'\$6' = $6 (SOC)" [ "${BOARD_NAME}" ] || BOARD_NAME="$1" [ $# -lt ] && exit
[ $# -gt ] && exit if [ "${ARCH}" -a "${ARCH}" != "$2" ]; then
echo "Failed: \$ARCH=${ARCH}, should be '$2' for ${BOARD_NAME}" >&
exit
fi
echo "BOARD_NAME = $BOARD_NAME"
echo "`pwd`"
echo "Configuring for ${BOARD_NAME} board..." #
# Create link to architecture specific headers
#
echo "SRCTREE = $SRCTREE"
echo "OBJTREE = $OBJTREE"
if [ "$SRCTREE" != "$OBJTREE" ] ; then
mkdir -p ${OBJTREE}/include
mkdir -p ${OBJTREE}/include2
cd ${OBJTREE}/include2
rm -f asm
ln -s ${SRCTREE}/arch/$/include/asm asm
LNPREFIX=${SRCTREE}/arch/$/include/asm/
cd ../include
rm -f asm
ln -s ${SRCTREE}/arch/$/include/asm asm
else
cd ./include
rm -f asm
echo "ln -s ../arch/$2/include/asm asm"
ln -s ../arch/$/include/asm asm
fi echo "`pwd`"
rm -f asm/arch if [ -z "$6" -o "$6" = "NULL" ] ; then
echo "ln -s ${LNPREFIX}arch-$3 asm/arch"
ln -s ${LNPREFIX}arch-$ asm/arch
else
echo "ln -s ${LNPREFIX}arch-$6 asm/arch"
ln -s ${LNPREFIX}arch-$ asm/arch
fi if [ "$2" = "arm" ] ; then
rm -f asm/proc
echo "ln -s ${LNPREFIX}proc-armv asm/proc"
ln -s ${LNPREFIX}proc-armv asm/proc
fi #
# Create include file for Make
#
echo "ARCH = $2 > config.mk"
echo "ARCH = $2" > config.mk echo "CPU = $3 >> config.mk"
echo "CPU = $3" >> config.mk echo "BOARD = $4 >> config.mk"
echo "BOARD = $4" >> config.mk [ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk && echo "VENDOR = $5 >> config.mk" [ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk && echo "SOC = $6 >> config.mk" # Assign board directory to BOARDIR variable
if [ -z "$5" -o "$5" = "NULL" ] ; then
BOARDDIR=$
else
BOARDDIR=$/$
fi echo "BOARDDIR = $BOARDDIR" #
# Create board specific header file
#
echo "`pwd`"
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
echo "#define CONFIG_MK_${i} 1" >>config.h ;
done cat << EOF >> config.h
#define CONFIG_BOARDDIR board/$BOARDDIR
#include <config_defaults.h>
#include <configs/$.h>
#include <asm/config.h>
EOF exit
- 如何知道自己的板子用的是哪个串口驱动?
在include/configs/Target.h(Target 是传给mkconfig的第一个参数,即$1)中定义了大量的宏,在其中搜索serial,可以找到相关的宏,然后到driver/serial/Makefile中看调用的是哪个C文件,或者直接看driver/serial/下有哪个C文件参见了编译即可。
阅读uboot的更多相关文章
- Ubuntu 安装 samba 实现文件共享和source insight 阅读uboot
环境:win10 + 虚拟机Ubuntu 12.04 一. samba的安装: # sudo apt-get install samba # sudo apt-get install smbfs 二. ...
- uboot start.S分析
一.概述 1.本文综述及特色 阅读uboot,start.S是第一个源程序文件,主要完成初始化看门狗.定时器.重定位(拷贝代码段到内存中).初始化堆栈.跳转到第二阶段等工作. 网上关于这些内容的 ...
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
- s5p6818开发板uboot网络开通
手上的开发板网络默认是不通的,但是通过阅读uboot源码,发现uboot源码中,是有对这个网络的初始化的实现的函数的,只不过是没有调用而已,所以,要手动调用这个函数,把板子的网络调通: 首先是遇到了这 ...
- 基于S3C2440的U-BOOT的start.S分析
基于S3C2440的U-BOOT的start.S分析 在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下 可执行文件及内存映射 我们可以把可 ...
- U-Boot编译过程完全分析
2.1 U-Boot Makefile分析 2.1.1 U-Boot编译命令 对于mini2440开发板,编译U-Boot需要执行如下的命令: $ make m ...
- u-boot-2016.07 README文档结构
Author:AP0904225版权声明:本文为博主原创文章,转载请标明出处. 阅读u-boot的README文档,可以获取很多有用的信息,例如从哪里可以获得帮助,帮助:u-boot版本命名规则,目录 ...
- u-boot-2016.01移植(一)
1.了解uboot: 阅读uboot源码顶层目录下的README.TXT可以提取如下信息: made to support booting of Linux images. //引导内核程 ...
- u-boot-2014_04在TQ2440上的移植
本文详细介绍了新版本的u-boot-2014_04在tq2440平台上的移植过程,期间参考了网上的其他移植文档,还有韦东山的移植uboot视频,讲的很好.下面是共享链接,欢迎下载,一同学习.其中有移植 ...
随机推荐
- Azure支持docker简介以及使用指南
Docker 是一个开源的项目,主要的特点是能将应用程序包装在一个 LXC (Linux Container) 容器中,当这些应用被包装进容器后,部署.迁移都变得更为简单.与传统的虚拟化技术相比,虚拟 ...
- matlab特征值分解和奇异值分解
特征值分解 函数 eig 格式 d = eig(A) %求矩阵A的特征值d,以向量形式存放d. d = eig(A,B) %A.B为方阵,求广义特征值d,以向量形式存放d. ...
- 如何阅读Java源码
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动.源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧, ...
- nodejs API笔记
一.URL 涉及到的方法 1.parse():解析地址 2.format():生成地址 3.resolve(from,to):组合成地址 举例说明: url.parse('http://baidu.c ...
- 读取jar内的配置文件
读取jar包内的配置文件,可以使用ResourceBundle,具体具体例子如下 import java.io.BufferedInputStream; import java.io.IOExcept ...
- 第二百八十天 how can I 坚持
今天发现一只大bug,目前还没有解决掉... 晚上和徐斌还有他同学一块吃了个饭.还有.没了. 今天想早睡觉. 今天股市暴跌,二度熔断,好精彩,哈哈,不说啥了,还有苹果股票和谷歌市值越来越接近了,要走下 ...
- TCMalloc优化MySQL、Nginx、Redis内存管理
TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是 goo ...
- SOP、DIP、PLCC、TQFP、PQFP、TSOP、BGA封装解释
1. SOP封装SOP是英文Small Outline Package的缩写,即小外形封装.SOP封装技术由1968-1969年菲利浦公司开发成功,以后逐渐派生出SOJ(J型引脚小外形封装).TSOP ...
- ural 1303 Minimal Coverage(贪心)
链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 按照贪心的思想,每次找到覆盖要求区间左端点时,右端点最大的线段,然后把要求覆盖的区间 ...
- c# 如何使用DLL的config文件中的信息
我知道用c#编写的exe程序可以读取config文件中的配置信息,比如Test.exe,可以在与Test.exe相同目录下放置一个config文件:Test.exe.config,用System.Co ...