1.首先需要准备以下文件:
uboot镜像文件(u-boot-stm32mp157a-fsmp1a-trusted.stm32):该文件作为二级引导加载程序用于引导内核的启动,此文件已经在之前的课程中准备完成,在移植内核之前需要将其和TF-A镜像文件烧录至emmc或TF卡中。
TF-A镜像文件( tf-a-stm32mp157a-fsmp1a-trusted.stm32):该文件作为一级引导程序用于引导uboot的启动,在移植内核之前需要将其和uboot镜像文件烧录至emmc或TF卡中。
linux内核镜像文件和设备树文件(uImage 和 stm32mp157a-fsmp1a.dtb):该文件准备完成后保存在Ubuntu中,通过TFTP服务器下载到开发板中。
根文件系统文件(rootfs):该文件保存在Ubuntu中,通过nfs服务器实现挂载到开发板中。
以上全部文件才组成一个完整的Linux系统。
2.烧录uboot、TF-A至emmc中
若要选择以emmc方式启动,首先需要将uboot、TF-A镜像文件烧录到TF卡中,使开发板以TF卡的方式启动,然后在串口工具中使用ums命令将uboot、TF-A镜像文件烧录到emmc中。
3.下载内核镜像文件和设备树文件到开发板中
首先配置网络,确保Ubuntu和开发板能够通信
在串口工具中使用TFTP命令进行下载
4.设置bootargs参数
bootargs是Uboot设置的启动参数,引导内核启动后,内核会去解析该启动参数。从而保证系统的正常启动。
使用setenv设置bootargs参数。
例:setenv bootargs root=/dev/nfs nfsroot=192.168.1.100:/home/linux/nfs/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.250
5.启动内核
bootm 内核文件存放地址 - 设备树存放地址