交叉编译工具网站
http://releases.linaro.org/components/toolchain/gcc-linaro/5.3-2016.02/
BootLoader作用:
1.将内核从flash读到内存
2.设置tag参数,
3.启动kernel,参数1R0=0,R1=机器id,R3 = tag地址
kernel作用:
1.读取机器码,调用相对应的初始化函数。
2.解析TAG参数,
3.装载驱动,网卡,flash等驱动
4.挂载根文件系统,
5.启动应用程序。
uboot相关:
1.启动内核函数文件 cmd_bootm.c ->do_bootm函数
2.machid对应内核文件mach-types.h
kernel编译过程:
tar zxvf linux- 解压文件。
1.1 修改Makefile
1.2 选择使用默认配置exynos_defconfig
1.3 make uImage
//自带uboot传参R1-----mchid = 0xb16//2838
设置机器ID set machid b16 //smdkc210
检查波特率(在uboot启动中设置),检查晶振(检查MACHINE_START中的某个函数 晶振200m)
内核启动后修改分区
2.1,
注意事项:
指定 loadaddr地址,高版本会用到, 在文件arch/arm/mach-exynos/Makefile.boot中
命令如下$ make LOADADDR=0x40008000 uImage
或者去掉menuconfig中的 boot选项的:[ ]Use appended device tree blob to zImage (EXPERIMENTAL) ,此时需要另外烧写dtp