系统移植 DAY4(FSMP1A开发板开发阶段部署)

1.准备TF-A镜像文件

阅读README得知解压顶层目录下的压缩包

tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz

进入解压后的目录,加载补丁文件

cd tf-a-stm32mp-2.2.r2

for p in `ls -1 ../*.patch`; do patch -p1 < $p; done

配置交叉编译链编译工具

CROSS_COMPILE=arm-linux-gnueabihf-

修改设备树文件

1)首先备份参考公版DK1的相关设备树源文件与头文件,并修改相关的包含关系

2)在顶层Makefile.sdk中,将修改后设备树源文件添加

TFA_DEVICETREE ?= stm32mp157a-fsmp1a

3)删除DK1使用的i2c4节点,cpu0,cpu1,并添加FSMP1A需要的设备树节点

4)在解压缩目录下,执行编译命令

make -f $PWD/../Makefile.sdk all

2.准备U-BOOT镜像文件

3.将上述文件烧写到开发板EMMC中

先将准备好的TF-A与UBOOT镜像文件使用拷贝文件命令以物理方式写入TF卡中

sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb1 conv=fdatasync
sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb2 conv=fdatasync
sudo dd if=u-boot-stm32mp157a-fsmp1a-trusted.stm32  of=dev/sdb3 conv=fdatasync

使用TF卡启动开发板,进入uboot交互界面使用ums命令,使用mini-usb连接LINUX端与开发板

ums 0 mmc 0 ------------>将TF卡挂载到Ubuntu中
ums 0 mmc 1 ------------>将EMMC设备挂载到Ubuntu中

再次使用拷贝文件命令以物理方式写入EMMC中

sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb1 conv=fdatasync
sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb2 conv=fdatasync
sudo dd if=u-boot-stm32mp157a-fsmp1a-trusted.stm32  of=dev/sdb3 conv=fdatasync

4.准备LINUX内核镜像文件(使用TFTP服务器下载到开发板,加载到内存)

选择EMMC启动方式,使用UBOOT交互模式,使用TFTP命令下载设备树文件与内核镜像文件,使用BOOTM命令加载

tftp 0xc2000000 uImage
tftp 0xc4000000 stm32mp157a-fsmp1a.dtb
bootm 0xc2000000 - 0xc4000000

5.准备根文件系统文件(使用NFS服务器实现挂载)

设置bootargs参数

setenv bootargs root=/dev/nfs nfsroot=192.168.1.100:/home/ubuntu/nfs/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.250

tips:

        在设置正确的NFS挂载路径后,在交互界面使用TFTP与BOOTM命令正确加载设备树镜像文件与内核镜像文件后,bootargs自动加载,Linux系统开始启动。

        可以通过设置bootcmd来避免重复输入

setenv bootcmd tftp 0xc2000000 uImage\;tftp 0xc4000000 stm32mp157a-fsmp1a.dtb\;bootm 0xc2000000 - 0xc4000000

 系统移植 DAY4(FSMP1A开发板开发阶段部署)_第1张图片

 

你可能感兴趣的:(系统移植,linux)