Linux|Linux系统移植篇2:STM32MP1微处理器之系统镜像烧写( 五 )
通过tftp方式下载linux内核及设备树除了使用ums挂载的方式进行内核及设备树的更新之外 , 还可以通过pxelinux功能 , 从tftp服务器下载镜像启动 。
在u-boot中使用tftp前需要将网线接入开发板 , 并且要与ubuntu所在的网段相同 。
将要使用tftp下载的linux内核与设备树拷贝到ubuntu系统中tftp服务器工作目录中(/tftpboot) , linux内核与设备树可以从linux内核源码中编译得到 。
linux@ubuntu:$ cp arch/arm/boot/uImage /tftpboot/
linux@ubuntu:$ cp arch/arm/boot/dts/stm32mp157a-fsmp1a*.dtb /tftpboot/
【Linux|Linux系统移植篇2:STM32MP1微处理器之系统镜像烧写】在tftp服务器工作目录中(/tftpboot)建立pxelinux.cfg文件夹 。 在该文件夹下建立01-00-80-e1-42-60-17文件 。 tftpboot目录结构如下
00-80-e1-42-60-17为开发板的默认mac地址 , 可以使用env set -f ethaddr xx:xx:xx:xx:xx:xx来修改mac地址 。
如果通过sdcard启动01-00-80-e1-42-60-17文件内容与开发板上/boot/mmc0_stm32mp157a-fsmp1a_extlinux/extlinux.cfg文件相同 , 如下所示
extlinux.cfg
如果通过emmc启动01-00-80-e1-42-60-17文件内容与与开发板上/boot/mmc1_stm32mp157a-fsmp1a_extlinux/extlinux.cfg文件相同 , 如下所示
extlinux.cfg
这里以sdcard为例 , 将01-00-80-e1-42-60-17内容修改为与开发板上/boot/mmc0_stm32mp157a-fsmp1a_extlinux/extlinux.cfg文件相同
在ubuntu中使用ifconfig命令查看当前ip地址 , 从而确定网段 。
可以看到当前ubuntu的ip地址为192.168.11.78 。 由此得到当前网段为11网段 。
开发板需要使用xshell连接上调试串口 , 在系统的启动过程中会出现1秒的倒计时 , 在倒计时结束之前按下键盘任意键即可将程序停留在bootloader的控制终端 。
进入bootloader控制台
在u-boot控制台中使用dhcp命令为开发板获取一个ip地址 。
可以看到获取到了一个192.168.11.68的IP地址 , 也是11网段 。 与ubuntu网段相同 。 为了进一步验证开发板与ubuntu的通信状况可以使用ping命令来ping ubbuntu的IP地址验证 。
可以看到ping命令已经执行成功了 。
接下来设置tftp的服务器ip , 可以看到也就是ubuntu的ip地址 。
root@fsmp1a:# env set serverip 192.168.11.78
这里使用到了env set命令来设置环境变量 , 该命令默认只修改内存中的变量 , 存储在sdcard或者emmc中的变量不会受到影响 , 也就是说调电回丢失修改 , 如果想要永久修改可以使用env save命令将当前内存中的环境变量更新到外部存储设备中 。
使用run bootcmd_pxe开始下载linux内核与设备树文件 。 看到如下提示后选择您对应的启动选项即可 。
例如这里选择1 , 进行5寸屏幕启动 。 稍等片刻之后便可看到内核启动 。
通过scp方式更新linux内核及设备树驱动程序除了通过tftp方式和ums方式更新linux内核与设备树文件以外 , 还可以通过scp方式来更新开发板中的文件 。 Scp是基于ssh协议进行数据传输 , 在传输过程中要传输数据一端我们称之为服务器端 , 开发板通常作为数据接收端我们称之为客户端 。 当然开发板在往ubuntu发送数据的时候则会成为服务端 。 此方法需要开发板完整启动 , 并进入文件系统终端 。
在使用scp前需确认与服务器端所在网络环境相同 。 本例中ubuntu的ip地址为192.168.11.78 。 开发板的ip地址需要通过串口终端下使用ifconfig命令确定 。
可以看到当前开发板IP地址为192.168.11.68 。 可以通过ping命令来测试通信情况 。
在之前章节提到过bootfs分区中存放了启动时需要的linux内核及设备树文件 , extlinux的配置 , 开机logo等文件 。 bootfs分区在开发板中则对应了/boot目录 , 也就是说对/boot目录中的文件做出修改后 , 就相当于是对bootfs分区做出了修改 。
- 搜索引擎|淘宝运营系统出台春节打烊功能,淘宝运营商家该如何选择?
- 华为鸿蒙系统|华为偷偷上架新机,鸿蒙系统+5000mAh大电池,仅售1399元
- 物联网|?内容创作者:要明白文章首先是写给推荐系统看的!
- Linux|电脑城卖的CPU是intel而不是AMD,和实体店不喜欢卖小米手机是一个道理
- 荷兰|苹果公司向荷兰“妥协”:将开放交友软件的第三方支付系统
- 体验首款Linux消费级平板,原来芯片和系统全是国产
- 猪心移植人体成功的背后,站着一位华人女科学家
- 2.2亿花粉升级后,鸿蒙系统暴露出新问题,华为至今没有回应
- 恶意软件|报告称 2021 年 Linux 的恶意软件样本数量增加了 35%
- 上海微系统与信息技术研究所|地震救人新突破!中科院研制出触嗅一体智能仿生机械手