22081-12-12 系统移植(TF-A移植和linux操作系统开发阶段流程总结)

//移植流程

1、将uboot镜像文件固化到开发板的TF卡或者EMMC设备中
2、在ubuntu的~/tftpboot目录下,准备tftp服务器要下载的文件(镜像文件和设备树文件)
3、通过开发板的拨码开关,选择启动方式
4、系统上电,会将uboot镜像文件加载到开发板内存
5、串口工具会打印uboot的信息,在倒计时进入0之前,按下enter键,会进入交互模式
6、通过在串口输入tftp命令,经过网线连接下载到开发板中,下载内容为设备树文件和uImage镜像文件
7、下载成功后linux内核启动
8、启动成功后,通过网线实现从ubuntu挂载根文件系统到开发板中
9、挂载成功后,在串口工具,可以查看到~/nfs/rootfs目录下相关内容
/********************************************************************************************/
准备的文件:
1、uboot镜像文件
u-boot-stm32mp157a-fsmp1a-trusted.stm32
2、tf-a镜像文件
tf-a-stm32mp157a-fsmp1a-trusted.stm32
3、内核镜像文件(使用tftp服务器进行下载)
stm32mp157-fsmp1a.dtb
uImage
4、根文件系统(使用nfs服务器实现挂载)
rootfs文件夹
/*******************************************************************************************/
uboot移植:先移植非安全版本,安全版本是在非安全版本的基础上移植的,安全版本还需要移植tf-a,因为安全版本的一级引导程序是tf-a
/----------------------------------------/
uboot非安全版本移植流程
/----------------------------------------/
uboot安全版本的移植流程(包括tf-a移植)
******************************
tf-a准备工作
*-----------准备TF-A源码-----------*
1、将tf-a-stm32mp-2.2.r2-r0.tar.xz拷贝到~/demo目录下
2、解压:tar -vxf tf-a-stm32mp-2.2.r2-r0.tar.xz
3、将解压后的tf-a源码移植到~/FSMP1A目录下
    cp tf-a-stm32mp-2.2.r2-r0 ~/FSMP1A/ -rf
*-----------分析TF-A源码-----------*
1、进入/home/ubuntu/FSMP1A/tf-a-stm32mp-2.2.r2-r0目录下
2、分析tf-a目录下的内容(.patch为补丁文件,Makefile.sdk工程管理文件,README.HOW_TO.TXT分析文件,series补丁文件列表,tf-a-stm32mp-2.2.r2-r0.tar.gz是tf-a源码压缩包)
 *-----------分析README-----------*
1、解压tf-a目录
 tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz
2、对tf-a源码打补丁
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
3、编译tf-a源码命令
make -f $PWD/../Makefile.sdk all  或者
make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
4、tf-a源码生成镜像文件的路径
../build/*/tf-a-*.stm32
*-----------移植TF-A源码-----------*
1、进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0目录下
2、解压tf-a源码:tar -vxf tf-a-stm32mp-2.2.r2-r0.tar.gz
3、在tf-a源码目录下打补丁
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
4、在tf-a源码顶层目录下,打开Makefile.sdk,搜索:CROSS_COMPILE,更改交叉编译工具链前缀
5、FSMP1A是参考DK1公板设计的,要复制DK1公板设备树相关内容
进入tf-a源码目录下的fdts目录,复制设备树相关内容
cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts 
cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi
进入tf-a源码目录下的fdts目录,输入:vi stm32mp157a-fsmp1a.dts,更改头文件及相关信息
6、进入tf-a源码顶层目录下,打开Makefile.sdk,搜索TFA_DEVICETREE
添加stm32mp157a-fsmp1a
7、进入tf-a源码目录进行编译
 make -f $PWD/../Makefile.sdk all
8、查看是否生成对应的镜像文件
进入tf-a源码顶层目录下的build/trusted,看是否存在tf-a-stm32mp157a-fsmp1a-trusted.stm32
*-----------测试TF-A源码-----------*
1、进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/build/trusted
2、将tf-a-stm32mp157a-fsmp1a-trusted.stm32拷贝到uboot源码目录下
3、进入到uboot源码目录下
4、插入TF卡
5、./sdtools /dev/sdb
6、将TF卡退出ubuntu
7、TF卡插入开发板,观察现象
*-----------更改电源相关信息-----------*
思路:去掉DK1公板电源相关内容,添加FSMP1A电源相关内容
1、进入tf-a源码目录下的fdts目录,打开stm32mp15xx-fsmp1x.dtsi
注释掉i2c4节点和cpu0、cpu1的内容
在vin的第一个花括号下面添加FSMP1A电源节点相关内容,在sdmmc1下面添加sdmmc2节点相关内容
*-----------测试TF-A源码-----------*
1、进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/build/trusted
2、将tf-a-stm32mp157a-fsmp1a-trusted.stm32拷贝到uboot源码目录下
3、进入到uboot源码目录下
4、插入TF卡
5、./sdtools /dev/sdb
6、将TF卡退出ubuntu
7、TF卡插入开发板,观察现象
/----------------------------------------/
linux操作系统开发阶段流程
******************
ums命令烧写
1、准备好相关文件
2、使用ums命令烧写
   1)先使用TF卡方式进入到uboot界面中
   2)使用ums 0 mmc 1将emmc设备挂载到ubuntu中(弹窗连接到虚拟机)
3、ubuntu界面输入:ls /dev/sd*  
      看是否识别到设备
4、uboot源码目录下执行:./sdtools /dev/sdb
5、开发板拨到emmc(010)启动方式
6、进入安全模式代表uboot镜像文件烧写到emmc中成功
********************
ubuntu和开发板组网
1、在串口工具中输入:
setenv serverip 192.168.1.233
setenv ipaddr 192.168.1.100
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
saveenv
2、测试开发板与ubuntu是否连接成功
ping 192.168.1.233
*************************
开发部署流程
*----------使用tftp下载镜像文件----------*
1、将设备树文件和uImage镜像文件拷贝到~/tftpboot目录中
2、在串口工具使用tftp命令将文件下载到开发板中
tftp 0xc2000000 uImage
tftp 0xc4000000 stm32mp157a-fsmp1a-trusted.dtb
*-----------设置bootargs参数------------*
1、在串口工具中输入:
setenv bootargs root=/dev/nfs nfsroot=192.168.1.233:/home/ubuntu/nfs/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.100
saveenv
2、启动内核
bootm 0xc2000000 - 0x4000000
*-----------设置bootcmd参数------------*
1、串口输入:
setenv bootcmd tftp 0xc2000000 uImage\;tftp 0xc4000000 stm32mp157a-fsmp1a-trusted.dtb\;bootm 0xc2000000 - 0xc4000000
saveenv
2、run bootcmd

猜你喜欢

转载自blog.csdn.net/wyl2333/article/details/128295071
今日推荐