一、准备文件
1.uboot镜像文件:(TF/EMMC)
u-boot-stm32mp157a-fsmp1a-trusted.stm32
2.TF-A镜像文件:(TF/EMMC)
tf-a-stm32mp157a-fsmp1a-trusted.stm32
3.linux内核镜像文件:(使用tftp服务器下载程序到开发板中)
uImage 和 stm32mp157a-fsmp1a.dtb
4.根文件系统文件:(使用nfs服务器实现挂载)
rootfs
二、使用ums命令将uboot镜像文件烧写到EMMC设备中
2.1 必须制作TF卡启动盘:
1.开发板必须能够通过TF卡启动方式,uboot启动成功
2.因为ums命令属于uboot中的环境变量,所以一定使用过TF卡启动方式,uboot启动成功
2.2 ums命令介绍:
1.ums 0 mmc 0 ------------>将TF卡挂载到Ubuntu中
2.ums 0 mmc 1 ------------>将EMMC设备挂载到Ubuntu中
2.3 使用ums命令进行烧写
1.开发板必须通过TF卡的启动方式,uboot启动成功
2.使用一根mi-ni-usb线,将FSMP1A核心板和ubuntu进行连接
3.通过串口工具进行打印信息,进入交互模式,输入 ums 0 mmc 1命令,并且需要点击被ubuntu识别
FSMP1A> ums 0 mmc 1
UMS: LUN 0, dev 1, hwpart 0, sector 0x0, count 0x760000
-crq->brequest:0x0
/
4.需要点击弹框,将EMMC设备被ubuntu识别,需要查看ls /dev/sd*
linux@ubuntu:~$ ls /dev/sd*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5
5.进入uboot源码目录
/home/linux/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2
6.烧写镜像文件到EMMC设备中
./sdtools.sh /dev/sdb
7.将拨码开关拨到EMMC启动方式,查看uboot是否可以启动成功,如果可以启动成功,代表EMMC烧写成功
三、开发阶段部署
3.1 网络ping通
1.将ubuntu网络设备为静态ip(设备为桥接模式,静态ip)
2.设置uboot中环境变量信息
FSMP1A> setenv serverip 192.168.1.100
FSMP1A> setenv ipaddr 192.168.1.250
FSMP1A> setenv netmask 255.255.255.0
FSMP1A> setenv gatewayip 192.168.1.1
FSMP1A> saveenv
Saving Environment to MMC... Writing to MMC(1)... OK
3.通过ping命令测试开发板设否连接ubuntu成功
FSMP1A>ping 192.168.1.100
ethernet@5800a000 Waiting for PHY auto negotiation to complete.... done
Using ethernet@5800a000 device
host 192.168.1.100 is alive
3.2 使用tftp命令下载uImage和设备树到开发板中
1.将设备树和uImage文件拷贝到~/tftpboot文件夹下面
2.在串口工具,使用tftp命令下载uImage进行文件到开发板中
FSMP1A> tftp 0xc2000000 uImage
Using ethernet@5800a000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.250
Filename 'uImage'.
Load address: 0xc2000000
Loading: #################################################################
2.4 MiB/s
done
Bytes transferred = 7172048 (6d6fd0 hex)
3.在串口工具,使用tftp命令下载设备树进行文件到开发板中
FSMP1A> tftp 0xc4000000 stm32mp157a-fsmp1a.dtb
Using ethernet@5800a000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.250
Filename 'stm32mp157a-fsmp1a.dtb'.
Load address: 0xc4000000
Loading: ######
3.9 MiB/s
done
Bytes transferred = 77379 (12e43 hex)
3.3 设置bootargs参数
1.在串口工具,设置bootargs参数
FSMP1A> 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
FSMP1A> saveenv
Saving Environment to MMC... Writing to MMC(1)... OK
解释:root=/dev/nfs:使用nfs方式进行挂载
nfsroot=192.168.1.100:/home/linux/nfs/rootfs:挂载的IP地址和路径(每个人的路径不一样,大部分同学/home/ubuntu)
tcp,v4 :型号
rw:可读可写权限
console=ttySTM0:默认使用串口0
115200 :波特率为115200
init=/linuxrc :系统启动之后,运行1号进程
ip=192.168.1.250 :板子的ip地址 (每个人的路径不一样)
2.启动内核
bootm 0xc2000000 - 0xc4000000