设备树之编译和烧写

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/banacco/article/details/100186413

0.本文中所有文件都来源于讯为itop4412视频教程

  1. 编译环境
    1.1 Ubuntu12.04.2 (讯为提供),基于itop4412_scp_elite开发板
    1.2 安装设备树编译器:apt-get install device-tree-compiler
    1.3 uboot及内核的源码和编译器
    源码文件 itop4412_kernel_4_14_2_bsp-20190225.tar.gz
    编译器gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz
    1.4 编译器安装和环境变量
    编译器拷贝到“/usr/local/arm/”目录下,然后解压
    //设置环境变量并更新:
cd 
vim .bashrc     
shift + g   
//添加编译器目录,到环境变量
export PATH=$PATH:/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro- multilib-2011.12/fsl-linaro-toolchain/bin
//保存,退出, 然后更新环境变量
source .bashrc    
echo $PATH
  1. 编译命令
    进入解压源码得到的“itop4412_kernel_4_14_2_bsp”目录下
    uboot、kernel和设备树一起编译的命令:
./build_all.sh

通过查看 上述编译脚本,可以了解到:
u-boot-2017.11/u-boot/ 下./build.sh脚本单独编译uboot
linux-4.14.2_iTop-4412_scp 下./build_kernel.sh脚本单独编译内核
build_kernel.sh编译脚本中可知:iTop-4412_scp_defconfig 是默认的编译配置文件(.config)
arch/arm/configs/iTop-4412_scp_defconfig
如果修改内核配置文件,需要覆盖掉iTop-4412_scp_defconfig,才能编译成功

  1. 生成的镜像
    uboot镜像:
    u-boot-2017.11/u-boot/u-boot-iTOP-4412.bin
    内核镜像:
    linux-4.14.2_iTop-4412_scp/arch/arm/boot/uImage
    设备树镜像:
    linux-4.14.2_iTop-4412_scp/arch/arm/boot/dts/exynos4412-itop-elite.dtb

4.设备树的烧写
先烧写UBOOT

u-boot-iTOP-4412.bin

使它支持具有设备树功能到Linux系统,
进入fastboot,键入烧写命令:

fastboot.exe flash bootloader u-boot-iTOP-4412.bin

重启

fastboot reboot

再次进入UBOOT,此时UBOOT已经支持设备树,进入fastboot 模式,UBOOT进入fastboot 模式:

fastboot 0  

此过程如果连接不上,需要重新安装驱动(可以借助驱动人生)
上位机烧写命令:

fastboot.exe flash kernel uImage
fastboot.exe flash dtb exynos4412-itop-elite.dtb
fastboot.exe flash system system.img

烧写成功后,两端的控制台都会显示OK
5.斩杀BUG
重启进入文件系统,控制台打印出如下错误…可见存储介质编号不一致,系统无法启动
在这里插入图片描述修改配置文件

arch/arm/configs/iTop-4412_scp_defconfig

vim打开,查找

/mmcblk

修改mmcblk0p2在这里插入图片描述修改后
在这里修改后插入图片描述编译->烧写->启动—>>>一直打印出tty的错误,
在这里插入图片描述因为三星使用的是ttySACx的tty驱动,所以 可以将名为ttyx的驱动在vim etc/init.d/rcS中全部屏蔽掉.在这里插入图片描述
屏蔽后,重新编译生成img镜像:

make_ext4fs -s -l 314572800 -a root -L Linux system.img system

编译->烧写->重启->发现新的问题,文件系统上,无法新建文件夹,文件系统为只读
修改 arch/arm/configs/iTop-4412_scp_defconfig,
文件中搜索root .在这里插入图片描述在root=/dev/mmcblk1p2 后面添加 rw,表示文件系统可读可写,否则只能读,就不能新建文件夹和文件.
执行编译脚本 ->再次烧写.
开机启动后,看到自动建立了/mnt/disk文件夹 ,
在这里插入图片描述
这个文件夹是在启动脚本中建立的,
它的建立,说明文件系统可以正常写入了

猜你喜欢

转载自blog.csdn.net/banacco/article/details/100186413