| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> NXP iMX8 ARM平台Distro Boot使用 -> 正文阅读 |
|
[嵌入式]NXP iMX8 ARM平台Distro Boot使用 |
By Toradex秦海 1). 简介 ARM嵌入式平台由于其分散性,不同SoC厂商通常都采用互不相同的方式来引导启动系统,这就导致了针对嵌入式ARM平台的系统发行版本也需要根据不同硬件SoC平台进行针对性定制,而不像X86平台(如BIOS或UEFI)或者64-bit?ARM服务器平台(如SBSA或SBBR)这样采用标准化的启动引导流程,因此通用桌面级系统发行版本比如SUSE、Redhat或Fedora就很难持续稳定的支持各种嵌入式ARM平台,反而趋势是各个硬件供应商自己定制发布针对自己硬件的系统发布版本(如Raspbian,Bananian,Parabuntu)来绑定用户。 Distro?Boot的标准名称是Generic Distro Configuration Concept,项目由U-boot开发者始于2014年左右,目标就是试图用一个标准方法去引导启动不同硬件平台。当在U-boot中打开Distro?Boot支持后,只需要将任意支持的系统发布版本镜像文件和一个符合Distro?Boot定义的启动配置文件放置于一个分区的可移动设备即可引导设备启动进入系统。 本文就基于NXP最新的iMX8 SoC(基于Cortex-A72+A53和Coretex-M4架构)ARM平台来测试使用Distro?Boot机制来引导系统镜像。演示平台来自于Toradex 基于iMX8QM的Apalis?iMX8QM?ARM嵌入式模块平台。 需要注意的是,由于不同U-boot/Linux kernel版本的兼容性以及iMX8 ARM处理器增加的底层SECO/SCFW固件的存在,可能导致本文测试的内容在其他BSP版本上面无法正常工作,本文仅基于当前测试环境进行distro boot的功能演示参考。 2). 准备 a). Apalis iMX8QM?4GB?WB IT?ARM核心版配合Ioxra 载板,连接调试串口UART1(载板X22)到开发主机方便调试。 b). 参考这里更新Toradex Ycoto Linux BSP V5.3版本BSP image,BSP中包含的U-boot默认以及支持Distro boot。 c). 需要通过U-boot distro boot启动的BSP image,需要包含一个启动配置文件,通常为extlinux.conf或者U-boot专用的boot.scr/boot.scr.uimg文件,关于配置文件的说明请参考这里。 3). Distro boot启动顺序 a). 默认情况下,U-boot(Distro boot 支持)会按照如下顺序扫描启动配置文件extlinux.conf或者boot.scr/boot.scr.uimg ./ 外部SD卡设备 ./ 内部eMMC存储设备 ./ 外部USB存储设备 ./ 外部网络设备 b). 默认扫描顺序和扫描位置由如下U-boot环境变量决定,如有需要可以自行修改 ------------------------------------ ### default boot devices sequence boot_targets=mmc1 mmc2 mmc0 usb0 dhcp ### boot partition scanning location boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr boot_scripts=boot.scr boot_syslinux_conf=extlinux/extlinux.conf ------------------------------------ 4). 通过外部存储介质加载Toradex Easy Installer测试 a). Toradex Easy Installer是Toradex提供的一个基于Linux/QT开发的图形界面工具,用于将不同类型的操作系统方便直观的安装到Toradex计算机模块的内部eMMC存储上面。 b). 在更新了Linux BSP之后,Toradex Easy Installer即被擦除,如果想重新更新Linux或者其他操作系统,就需要重新将Toradex easy installer加载运行,官方支持的方式是参考这里通过恢复模式操作,而基于当前Toradex Easy Installer V5.3版本配合Ycoto Linux V5.x版本,可以实现通过外部存储介质(SD卡或者U盘)在U-boot环境下直接加载Toradex Easy Installer运行而无需配置恢复模式。 c). 测试流程 ./ 从这里下载对应Apalis iMX8模块的Toradex Easy Installer V5.3版本image 压缩包 ./ 解压压缩包,可以看到里面以及包含distro boot所需要的启动文件 boot-tezi.scr,将其更名为 boot.scr。然后将文件复制到外部存储介质 / 目录或者 /boot 目录。 ------------------------------------ $ unzip Apalis-iMX8_ToradexEasyInstaller_5.3.0+build.3.zip $ cd Apalis-iMX8_ToradexEasyInstaller_5.3.0+build.3/ $ ls boot-tezi.scr??image.json ?overlays.txt ?recovery-linux.sh ????tezi.itb ?u-boot.bin hdmitxfw.bin ??imx-boot ???recovery ?????recovery-windows.bat ?tezi.png ?wrapup.sh $ mv boot-tezi.scr boot.scr $ cp *?/media/simon/<external_storage_mount_point> ------------------------------------ ./ 将上述准备好的外部存储介质连接到Ixora载板对应接口,Apalis iMX8 开机从调试串口进入U-boot命令行,执行下面命令启动外部存储介质的Toradex Easy Installer,启动后即可从调试串口看到启动信息,以及连接的显示器看到Toradex Easy Installer应用界面。 ------------------------------------ ### external SD storage depending on corresponding SD slot # run bootcmd_mmc1 or run bootcmd_mmc2 ### external USB stick # run bootcmd_usb0 ------------------------------------ ./ 如上述章节3描述的默认启动扫描顺序,如果是外部SD卡则即使不中断或改动U-boot的启动,只要具备boot.scr文件的SD卡设备插入,就会优先从外部SD卡启动,而对于U盘,如果需要自动启动,则需要修改U-boot环境变量,将USB设备扫描顺序提前。 ------------------------------------ # setenv boot_targets 'usb0 mmc1 mmc2 mmc0 dhcp' && saveenv ------------------------------------ 5). 通过外部存储介质加载Ycoto Linux BSP测试 a). 首先准备一个足够容量的SD卡或者U盘,本文测试使用一个16GB的Mciro SD卡 b). 在Ubuntu PC下通过fdisk 命令在目标SD卡上面制作如下两个分区 ------------------------------------ Disk /dev/sdc:14.9 GiB,15931539456 字节,31116288 个扇区 单元:扇区 / 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x8a42d42a 设备 ??????启动 ???起点 ????末尾 ????扇区 ?大小 Id 类型 /dev/sdc1 ?????????2048 ?8390655 ?8388608 ???4G ?c W95 FAT32 (LBA) /dev/sdc2 ??????8390656 31116287 22725632 10.9G 83 Linux ------------------------------------ c). 然后通过如下命令分别格式化两个分区,FAT32分区用于存放kernel、device tree等基本boot文件,linux ext3分区用于存放rootfs文件 ------------------------------------ $ sudo mkfs.vfat -F 32 -n boot /dev/sdc1 $ sudo mkfs.ext3 -L rootfs /dev/sdc2 ------------------------------------ d). 从这里下载适用于Apalis iMX8的Ycoto Linux Multimedia Demo image,然后解压,并分别将Image里面的boot文件和rootfs解压到刚才制作好的SD卡两个分区。Image boot文件中已经包含了boot.scr文件,无需手动创建。 ------------------------------------ ### 解压缩image $ tar xvf Apalis-iMX8_Reference-Multimedia-Image-Tezi_5.3.0+build.10.tar ### 解压缩 bootfs、rootfs到SD卡 $ cd Apalis-iMX8_Reference-Multimedia-Image-Tezi_5.3.0+build.10/ $ sudo tar xf Reference-Multimedia-Image-apalis-imx8.bootfs.tar.xz ?--no-same-owner -C /media/simon/boot/ $ sudo tar xf Reference-Multimedia-Image-apalis-imx8.tar.xz -C /media/simon/rootfs/ ------------------------------------ e). 制作完成后将SD卡插入Ixora载板X10 插槽,启动模块,进入uboot命令行,执行下面命令通过SD卡启动 ------------------------------------ ### U-boot boot command from external SD cark Apalis iMX8 # run bootcmd_mmc1 ... ### agter booting, check current boot device is indeed external SD devcie - /dev/mmcblk1 root@apalis-imx8:~# df -h Filesystem ?????Size ?Used Avail Use% Mounted on /dev/root ???????11G ?1.1G ?9.1G ?11% / devtmpfs ???????1.4G ?4.0K ?1.4G ??1% /dev tmpfs ??????????1.9G ????0 ?1.9G ??0% /dev/shm tmpfs ??????????1.9G ?6.6M ?1.9G ??1% /run tmpfs ??????????1.9G ????0 ?1.9G ??0% /sys/fs/cgroup tmpfs ??????????1.9G ?844K ?1.9G ??1% /tmp tmpfs ??????????1.9G ??24K ?1.9G ??1% /var/volatile /dev/mmcblk0p1 ??48M ??11M ??37M ?23% /media/mmcblk0p1 /dev/mmcblk0p2 ??15G ?1.1G ??13G ??8% /media/mmcblk0p2 /dev/mmcblk1p1 ?4.0G ??11M ?4.0G ??1% /boot ------------------------------------ f). 另外,如果需要定制boot流程,可以参考这里说明修改boot.scr 文件。 G). 类似的思路,也可以通过创建TFTP/NFS 服务器实现网络启动,具体可以参考这里说明。 6). 总结 本文测试了基于NXP?iMX8平台通过Distro Boot功能实现通过外部存储设备启动的方案,另外也可以延申到TFTP/NFS网络启动。不过由于Distro Boot功能兼容性和底层firmware以及uboot/kernel版本息息相关,因此本文测试仅限于当前测试平台和版本,不代表未来软件发生变化后相关功能还一定确认完整。 参考文献 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:24:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |