本篇文章是tiny210合入project X项目主基线之后的操作说明,是[project X] tiny210 操作说明 的更新。
另外,该操作针对于initramfs格式的rootfs以及fit-uImage的uImage格式(对initramdisk和legacy uImage不支持)。
零、项目说明
project X项目是由wowo发起的,希望能够在一个项目中可以支持多个板子的项目。
在wowo的project X项目上对友善之臂tiny210的板子进行支持。
目前已经可以正常启动到kernel commandline部分。
暂时只使用SDcard作为存储设备,后续会对nand flash进行支持。
欢迎有tiny210或者其他板子的同学也一起参与到这个项目来,让project x项目支持更多的板子。
一、准备操作
1、代码
github下载地址:
build https://github.com/wowotechX/build.git
uboot https://github.com/wowotechX/u-boot.git
kernel https://github.com/wowotechX/linux.git
tools https://github.com/wowotechX/tools.git
(1)git clone下载以上代码到同一目录下。
(2)tiny210已经合入到主基线中,使用对应分支如下:
<为了防止以后主基线更新导致tiny210的使用有问题,这里先记录下当前可以正常使用的commit id>
* build——》master
commit 947434779c33c6e625e0edbcf8f812a9e49079ea
* uboot——》x_integration
commit 90e231b0fc58b6539a96a9526323f0338d8849ee
* kernel——》x_integration
commit 0fc82242f713eb099c643d45ae6840d46f5c00de
* tools——》master
commit d41430817a4a0246be19971c2cd2989e1bcb4627
2、编译器
(1)进入build目录。
(2)修改配置文件config.mk中的板级配置文件为config_tiny210.mk,如下:
include ./configs/config_tiny210.mk
#include ./configs/config_bubblegum.mk
#include ./configs/config_hikey.mk
(3)执行“make env_prepare”
会下载arm-none-linux-gnueabi-4.8编译器。
3、软件
在制作ramdisk的过程中,需要安装genext2fs、gzip命令,可以通过apt-get install进行安装。
二、编译操作
以下都是在build目录下进行操作.
修改配置文件config.mk中的板级配置文件为config_tiny210.mk,如下:
include ./configs/config_tiny210.mk
#include ./configs/config_bubblegum.mk
#include ./configs/config_hikey.mk
1、uboot
执行“make uboot”
生成
out/u-boot/u-boot.bin
out/u-boot/spl/u-boot-spl.bin
out/u-boot/spl/tiny210-spl.bin
2、kernel、dtb
执行“make kernel”
生成
out/linux/arch/arm/boot/Image
out/linux/arch/arm/boot/zImage
out/linux/arch/arm/boot/dts/s5pv210-tiny210.dtb
3、根文件系统
(1)编译busybox
需要编译busybox来生成根文件系统中需要的一些东西。
执行“make busybox”
生成
out/busybox
out/rootfs
(2)生成rootfs镜像
当前基线暂时只支持initramdisk格式rootfs。
执行“make initramfs”
生成
out/initramfs.gz
4、fit_uimage
legacy_uimage的方式比较老,后续都是使用fit_uimage的方式来制作kernel镜像。所以当前基线暂时只支持fit_uimage。
执行“make uImage”
生成
out/xprj_uImage_tiny210.itb
kernel镜像,dtb,rootfs镜像都被打包到xprj_uImage_tiny210.itb中了,烧写的过程中只需要烧写xprj_uImage_tiny210.itb即可
三、烧录操作(使用SD card作为存储设备)
以下都是在tools/samsung/tiny210目录下操作。
需要先执行“sudo fdisk -l”看看sdb是否已经存在,保证sdcard已经被挂载上了,可以通过命令进行烧写。
0、使用SDcard来存放镜像
SDcard部署如下(扇区):
spl: SEC_UBOOT_SPL=1-48(29KB)
uboot: SEC_UBOOT=49-1072(512KB)
legacy_uimage: SEC_UIMAGE=1073-5168(2MB) // fit_uImage的情况下不需要使用
dtb: SEC_DTB=5169-5296(64KB) // fit_uImage的情况下不需要使用
ramdisk: SEC_ROOTFS=5297-13488(4MB) // fit_uImage的情况下不需要使用
fit: SEC_FIT_IMAGE_START=13489
1、uboot
需要保证上述<二、1><二、4>步骤完成
./flash_sdcard.sh uboot
会烧写spl.bin和uboot.bin到SDcard对应位置上。
2、fit-image
需要保证上述<二、5>步骤完成
./flash_sdcard.sh fit_image
会烧写fit uimage到SDcard对应位置上。
四、启动操作
0、说明
目前为了开发方便,在uboot中已经实现自动将镜像从SDCARD复制到ddr的对应位置上。
也就是说无需输入其他命令来复制镜像到ddr上。
ddr的部署如下:
legacy_uimage:0x20008000
dtb:0x22000000 // fit_uImage的情况下不需要使用
ramdisk:0x21000000 // fit_uImage的情况下不需要使用
fit_image:0x30000000
2、通过fit_uimage的方式来启动kernel(也就是通过FIT格式的uImage来启动kernel)
需要保证<三、2>步骤完成
在uboot的command line中,执行
“bootm 0x30000000”
0x30000000表示FIT文件在ddr中的为知,uboot会自动从FIT中解析出kernel、rootfs镜像和dtb在ddr上的位置。
到这里,kernel就跑起来了并且跑到了kernel的command line中。