本篇文章是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项目支持更多的板子。
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
(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编译器。
在制作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执行“make uboot” 生成 out/u-boot/u-boot.bin out/u-boot/spl/u-boot-spl.bin out/u-boot/spl/tiny210-spl.bin
执行“make kernel” 生成 out/linux/arch/arm/boot/Image out/linux/arch/arm/boot/zImage out/linux/arch/arm/boot/dts/s5pv210-tiny210.dtb
(1)编译busybox 需要编译busybox来生成根文件系统中需要的一些东西。 执行“make busybox” 生成 out/busybox out/rootfs (2)生成rootfs镜像 当前基线暂时只支持initramdisk格式rootfs。 执行“make initramfs” 生成 out/initramfs.gz
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即可
以下都是在tools/samsung/tiny210目录下操作。 需要先执行“sudo fdisk -l”看看sdb是否已经存在,保证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><二、4>步骤完成 ./flash_sdcard.sh uboot 会烧写spl.bin和uboot.bin到SDcard对应位置上。
需要保证上述<二、5>步骤完成 ./flash_sdcard.sh fit_image 会烧写fit uimage到SDcard对应位置上。
目前为了开发方便,在uboot中已经实现自动将镜像从SDCARD复制到ddr的对应位置上。 也就是说无需输入其他命令来复制镜像到ddr上。 ddr的部署如下:
legacy_uimage:0x20008000 dtb:0x22000000 // fit_uImage的情况下不需要使用 ramdisk:0x21000000 // fit_uImage的情况下不需要使用 fit_image:0x30000000需要保证<三、2>步骤完成 在uboot的command line中,执行 “bootm 0x30000000” 0x30000000表示FIT文件在ddr中的为知,uboot会自动从FIT中解析出kernel、rootfs镜像和dtb在ddr上的位置。 到这里,kernel就跑起来了并且跑到了kernel的command line中。
