编译uboot
交叉编译工具:
$SDK/linux/prebuilds/gcc
uboot源码:
$SDK/linux/src/uboot6818.tar.bz2
解压后:
make x6818_config
加载6818默认配置
makefile中修改交叉编译工具路径
修改花屏问题
编译:
make -j4
编译后的产物介绍:
先生成u-boot,这是一个elf格式的文件。
ELF头中包含了程序依赖的动态库,通过命令可以读取:
readelf -d /bin/ls
ELF只有linux可以识别; u-boot 等价于 【ELF】【u-boot.bin】
想要让硬件识别;需要去掉ELF头;
所以: u-boot --> u-boot.bin
另外三星要求加一些自己的东西
所以
u-boot.bin --> ubootpak.bin
编译linux内核
内核中包含了进程管理,内存管理,文件系统,网络协议,设备驱动等
源码:
$SDK/Linux/src/linux-3.4.tar.bz2
编译配置文件在
arch/arm/configs/x6818_defconfig
配置:
make x6818_defconfig
设置交叉编译工具:
手动配置编译
make menuconfig
编译
make -j4
内核产物:
vmlinux ===> zImage //压缩
有的uboot要求内核前边加一个头:zImage ⇒ uImage
执行命令:
make uImage # 将zImage 生成uImage
将uImage 制作成镜像
在 $SDK/Linux/tools 下有一个工具 make_ext4fs
可以将一个目录制作为一个镜像;
解压同目录下boot.tar.bz2;这是一个镜像压缩包;
解压后里边有开机显示的图片及uImage;
将制作好的uImage替换掉该目录中的uImage
执行命令生成内核镜像
./make_ext4fs -s -l 60m -a boot xxx.img ./boot
#60m 限制大小为60m
#xxx.img 镜像名字
#./boot 打包目录的名字
根文件系统制作
根文件系统使用buildroot进行制作;
直接下载最新的buildroot源码;
打上该板子的厂商patch及默认配置;
然后make my_s5p6818_defconfig
,使用默认配置
make menuconfig
打开配置界面;可以安装一些需要的软件
最后编译 make -j4
会下载各种软件的源码包并编译;耗时需要几个小时
最终产物在 $buildroot/out/image 下