8_stm32mp157a芯片的系统移植_开发阶段系统部署

1 开发阶段系统部署分析 示意图1:

2 开发阶段系统部署分析 示意图2:

3 开发板的启动当时:

4 开发阶段部署的文件准备

1. tf-a-stm32mp157a-fsmp1a-trusted.stm32

         --> TF-A源码编译生成的镜像文件,TF-A(Trusted Fireware-ARM:ARM可信任的固件)         --> 已经给大家提前烧录到TF卡或EMMC芯片中。

2. u-boot-stm32mp157a-fsmp1a-trusted.stm32

         --> u-boot源码编译生成的镜像文件,

         --> u-boot的镜像文件默认也以及给大家提前烧录到TF卡或EMMC芯片中。

         注:关于tf-a和u-boot的源码的配置和编译,以及如何烧录镜像文件到TF卡或者EMMC中,后续课程讲解。

3. uImage

         --> linux内核源码编译得到的镜像文件 --> 需要使用tftp服务将其下载到内存中

4. stm32mp157a-fsmp1a.dtb

         --> linux内核源码对应的设备树文件,设备树文件给linux内核使用 --> 需要使用tftp服务将其下载到内存中

5. rootfs

         --> 根文件系统文件 --> linux内核启动成功之后通过nfs的方式挂载根文件系统 --> 将根文件系统的文件移动到nfs共享文件夹中。/linux/nfs/rootfs

5 文件内容:

6 部署步骤

  • tftp + nfs重启
sudo service tftpd-hpa restart
sudo service rpcbind restart
sudo service nfs-kernel-server restart

>>配置tftp服务器ip

setenv serverip 192.168.10.111 ; 服务器IP 地址

saveenv 保存

  1. 拷贝 uImage stm32mp157a-fsmp1a.dtb rootfs 到tftpboot中。

         2.uboot端下载内核 - 手动挂载;;;

STM32MP> tftp 0xc2000000 uImage

         3.uboot端下载设备树

STM32MP> tftp 0xc4000000 stm32mp157a-fsmp1a.dtb

 4.设置bootargs自启动的参数

bootargs自动的参数是u-boot给内核传递参数,告诉内核使用哪种方式挂在跟文件系统,以及挂在跟文件系统所在服务器的IP地址及路径。

STM32MP> setenv bootargs root=/dev/nfs nfsroot=192.168.1.55:/home/linux/Desktop/2411/nfsboot/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.115 STM32MP> saveenv

解析:

root=/dev/nfs ----> 使用网络文件系统

nfsroot=192.168.50.222:/home/linux/nfs/rootfs, ---> 网络文件系统所在服务器的IP地址及路径 ----> 注:需要修改为自己的IP地址及nfs网络文件系统的路径

tcp,v4 ----> 基于tcp服务, v4版本

rw ----> 对跟文件系统具有可读可写的权限

console=ttySTM0,115200 ---> 使用的串口及其波特率

init=/linuxrc ----> 系统启动挂载跟文件系统成功之后,运行的1号进行(init进程) ip=192.168.50.250 ---> 开发板的IP地址,需要修改为自己的开发板的IP地址 ----

//参考 setenv bootargs root=/dev/nfs nfsroot=192.168.20.226:/home/linux/Desktop/2505/nfsboot/rootnc,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.20.10

5.使用bootm命令启动linux内核 //这个命令启动内核 就是 没有关机 重启 内核在 内存中。

STM32MP> bootm 0xc2000000 - 0xc4000000

                                         |                  |                 |----> linux内核设备树的地址

                                         |                  |---> 不可以省略,前后要有空格

                                         |---> linux内核的地址 启动启动成功之后的效果如下: [root@fsmp1a ]# 输入各种linux命令或者运行应用程序

                            linux系统启动成功,但是挂载跟文件系统不成功的可能原因?

1> 重启nfs服务之后,在重新启动系统测试 sudo service nfs-kernel-server restart

2> 检查bootargs中的参数配置是否正确,是否和nfs服务的配置文件的路径一致。

  • 编写一个测试程序在 乌班图端进行编写在开发板端进行测试。

1. 在ubuntu中编写hello world的应用程序

2. 使用交叉编译器进行编译 arm-linux-gnueabihf-gcc hello.c -o hello

3. 拷贝hello可执行程序到开发板的网络跟文件系统中 cp hello ~/nfs/rootfs

4. 在开发板上运行hello程序进行测试

[root@fsmp1a ]# ./hello     

>>注意-可以根据下位机的 开发板tftp服务器ip来配置上位机服务器固定ip - 或者配置开发板服务器ip: setenv serverip 192.168.10.111 ; 服务器IP 地址saveenv

>> 设置开发板自启动模式 ----》》》》设置这条语句以后 上电就开始 自动下载内核 设备树 加载文件系统。一切都是自动化的。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值