soc(三星)会下载uboot源码移植做出一款开放板smdkv210,
具体的供应商会购买smdkv210然后进行裁剪得到自己的开发版x210.
uboot获取有三个途径,uboot官方,soc官方,供应商的
配置 make x210_sd_config
编译:编译得到uboot.bin
第一步:检查交叉编译工具链:arm-linux-gcc是否对 第二步:检查uboot 主makefile是否正确
ls -l (du -h)
源目录分析:
arm_config.mk其他文件会去include
Makefile:uboot的主Makefile
mkconfig 配置脚本
文件夹:
board 开发板 board下有vendor
common cmd开头的,env开头的
cpu soc相关的 包含start.s
drivers:uboot驱动是内核中驱动的一部分
include:头文件
lib_开头的(lib_arm和lib_generic)架构相关的库文件
libfdt:设备树
原地编译 专门指定一个输出目录(make O = 或者export BUILD_DIR=)
shell
source xx.sh 用source指令来运行sh 或者bash xx.sh
echo 输出字符串可以不佳“” 但不加双引号不能输出转义字符 转义字符前要加\
变量引号 $var ${var} 某些情况只能用${var}
例如:var = "hello"
echo "$varworld" 只会输出空 echo "${var}world"会输出helloworld
shell中执行Linux命令
1:直接调用 mkdir dir touch cd
2:反引号:适用于得到命令的返回值
选择分支if
判断文件是否存在-f if [ -f a.c ]
目录-d
字符串是否为空 -z
字符串 "str1" = "str2"
判断数字:-eq -gt -lt -ge -le
"-o"表示逻辑与或
循环:for while
for循环
for i in 1 2 3 4 5
do
echo $i
done
i=1
j=1
while[$i -lt $j ]; do
echo $i;
i=$(($i + 1))
done >a.c
传参数
source xx.sh aa bb cc
echo $#(参数个数) $0 $1 $2
第一行:#!/bin/sh
| 管道
sed:替换字符串(sed -e s/i.86/i386)把i686替换为i386
tr:
Makefile
伪目标:(clean:)
引用其他makefile include
静默执行(因为makefile默认会打印出命令和运行结果,如果不想看到命令,就用静默执行)@ echo
赋值:
1.= 最后一次赋值的值 前面 后面都要看(要看最后一次)
2.:= 只用往前看
3.?= 如果前面的变量没有赋值,则执行该处赋值;如果没有赋值了,则忽略该处
4.+=把这次的值加到原来的值后面
环境变量:都用大写 作用:所有makefile共享的全局变量
1.=和:=, =在后面找 :=在前面找
2.export 导出为环境变量
3.执行shell中的命令 1.var = `pwd` 2.var = $(shell pwd)
通配符
* 任意个字符
?1个任意字符
[] echo[12].c 1.c 2.c
% 表示任意多个字符,但是是用于规则通配符
自动变量:
1.$@ 目标文件名
2.$< 依赖文件名(第一个文件名)
3.$^ 依赖的文件集合