| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> i.MX6ULL嵌入式Linux开发6-系统烧写到eMMC与遇到的坑! -> 正文阅读 |
|
[系统运维]i.MX6ULL嵌入式Linux开发6-系统烧写到eMMC与遇到的坑! |
前面几篇文章,已经搞定了Linux移植三巨头:uboot、kernel(包含dtb)和rootfs,除了uboot是烧写在SD中的,其它的都是在ubuntu虚拟机的nfs服务器中,运行时必须通过网络将这些文件加载到开发板的内存中运行。 本篇就来研究,将这几个文件打包烧写到板子的eMMC中,实现嵌入式Linux系统的烧写,这样,在没有网络的情况下,板子也可以正常运行。系统烧写使用的是NXP官方的MfgTool工具,通过USB OTG口来烧写。 文章目录1 MfgTool介绍MfgTool是NXP官方提供的用于烧写i.MX系列CPU的系统烧写工具,该软件需要在Windows环境下使用。 这是使用正点原子提供的已经下载好的NXP烧写工具:L4.1.15_2.0.0-ga_mfg-tools.tar.gz。 将软件包解压,里面还有2个.gz 压缩包,一个是带rootfs,一个是不带rootfs,我们是需要烧写文件系统的,所以选择 mfgtools-with-rootfs.tar.gz 这个压缩包,继续解压。 进入目录 mfgtools-with-rootfs\mfgtools 中, 在此目录下有几个文件夹和很多的.vbs 文件:
2 MfgTool烧写步骤2.1 连接USB OTGMfgTool是通过USB OTG接口将系统烧写进EMMC中的,我这块野火板子的OTG接口在板子右侧,使用USB线连接电脑(使用USB OTG连接时,需要先把SD卡拔出)。 2.2 切换拨码开关模式将拨码开关拨到USB下载模式
连接电源,进入USB模式,连接成功后电脑右下角会有提示 2.3 系统烧写双击“mfgtool2-yocto-mx-evk-emmc.vbs” ,出现如下窗口: 如果出现“符合HID标准的供应商定义设备”就说明连接正常,可以进行烧写。若硬件连接完毕,烧写文件也配置好了,点击Start按钮即可一键烧写。 3 MfgTool烧写原理我们需要烧写uboot、kernel、.dtb 和 rootfs这四个文件,它们一起构成了linux系统。 进入如下的系统固件目录中:
我们重点关注files、firmware这两个文件夹,以及ucl2.xml这个文件。 MfgTool烧写的工作过程主要分两个阶段:
3.1 firmeare文件夹mfgtools/Profiles/Linux/OS Firmware/firmware文件夹里有很多NXP官方开发板使用的文件,包括.imx 结尾的uboot文件、一个zImage镜像文件、很多.dtb结尾的设备树文件,我们需要注意其中三个文件:
这3个文件即第一阶段需要烧写的文件,如果要烧写我们的系统,就要用自己编译的文件替换这3个文件。 3.2 files文件夹mfgtools/Profiles/Linux/OS Firmware/files目录中的文件和firmware 目录中的基本差不多,这里就要注意下面4个文件
这4个文件即第二阶段需要烧写的文件,如果要烧写我们的系统,就要用自己编译的文件替换这4个文件。 3.3 ucl2.xml文件mfgtools/Profiles/Linux/OS Firmware/ucl2.xml是一种XML格式的文件,用来指定files和firmware目录要烧写的uboot和设备树文件。 ucl2.xml 以 “ ucl2.xml文件有600多行,这里抽取主干结构来看一个该文件的主要运行流程:
ucl2.xml 首先会判断当前要向I.MX系列的哪个型号的芯片烧写系统: 通过读取芯片的VID和PID,即可判断要烧什么处理器的系统, 如VID=0X15A2,PID=0080,就表示要给I.MX6ULL烧写系统。 3.4 xxx.vbs文件ucl2.xml文件中确定了要烧写的处理器型号以后,还要确定向什么存储设备烧写系统,这是在mfgtools/mfgtool2-yocto-mx-evk-emmc.vbs中配置,右键,用文本编辑器打开这个文件(不要双击哦):
注意“wshShell.run”这一行,调用了 mfgtool2.exe 这个软件,还给出了一堆的参数,包含“eMMC”字样,表示是向 EMMC 烧写系统 下面继续分析ucl2.xml文件中的烧写过程 前面说了烧写分两个阶段, 第一步是通过 USB OTG 向 DDR中下载系统,第二步才是正常的烧写。 根据当前是EMMC的板子,第1步烧写uboot的命令如下:
“file” 表示要下载的文件位置:
3.5 cfg.ini文件mfgtools/cfg.ini文件是一个配置文件,内容如下:
可以看到,lite=l,6uluboot=14x14evk。 继续分析ucl2.xml文件中的烧写过程,将lite和6uluboot的值代入以后,要烧写的uboot文件名就是:
同样的方法将**.dtb(设备树)和zImage**都下载到DDR中以后就会跳转去运行OS,这个时候会在MfgTool工具中会有“Jumping to OS image”提示语句,ucl2.xml中的跳转命令如下:
启动Linux系统以后就可以在EMMC上创建分区,然后烧写uboot、zImage、.dtb(设备树)和根文件系统。 4 系统烧写实践4.1 烧写NXP官方系统因为我的板子是512MB的DDR3+8G的EMMC,与NXP官方开发板类似,可以先试着烧写NX官方的系统,熟悉烧写流程:
我的板子烧录官方系统时,不知什么原因一直烧录不成功,如下图,因为用不到官方的系统,就先不管它,有时间再查。 4.2 烧写自己的系统准备要烧写的文件:
将这4个文件复制到Windows系统中准备烧录。 总结一下要准备的文件,如下图: 烧写时,这里有两种修改方式进行烧写,一种是将自己的4个文件按照NXP官方的文件进行重命名,并替换掉官网的文件,即可直接烧录。另一种是改造MfgTool烧写工具,使得该烧写工具能够兼容自己板子的文件名。因为第2种修改比较麻烦,先使用第1种简单的方式进行烧写,只需要修改文件名即可。 需要替换的名称为:
点击Start开始烧写,等待烧写完成: 烧录完,点击Stop退出即可。 然后切换板子为EMMC启动,复位重启开发板,正常情况下应该就可以看到烧录的系统正常启动了。 但是,我这里出现了一点小差错。 4.3 解决内核无法启动的错误在烧录完系统,切换到EMMC启动时,我板子的内核没有运行起来,提示“MMC:no card present”的错误: 好像是EMMC没有找到,就无法启动内核。 网上查找相关问题,根据这篇:https://blog.csdn.net/qq_43605009/article/details/113646312的描述,应该是uboot的里一个配置项搞错了,就是这里: 我们的defconfig配置文件中,第一行最后那个不需要改,要改回默认的MX6ULL_EVK_EMMC_REWORK,改完,重新编译uboot生成u-boot.imx,再次进行烧录就能正常启动内核了。(这里的MX6ULL_EVK_EMMC_REWORK的具体作用我还没搞明白,有时间再研究) 正常启动后,就可以看到和之前使用nfs网络方式启动一样的效果了: 4.4 解决网络没有启动的问题板子插上网线,使用ifconfig命令查看网络信息,发现没有连接网络,这是因为板子的网络功能没有打开。之前使用nfs挂载根文件系统的时候因为要使用nfs服务,Linux内核会打开eth0这个网卡,现在我们不使用nfs挂载根文件系统, Linux内核就没有自动打开eth 网卡。 我们可以手动打开,以打开eth1网卡为例,输入如下命令打开 eth1:
然后可以为板子分配IP:
目前这种手动修改的方式,每次开机以后就没有了,还需要重新设置。可以将设置网卡IP地址的命令添加到/etc/init.d/rcS开机启动文件中,添加如下内容:
然后保存,reboot命令重启开发板,重启后就自动连上网了。 5 总结本篇主要介绍了Linux移植的系统打包烧录的EMMC的方法,使用MfgTool工具,将uboot、linux kernel、.dtb和rootfs这4个文件烧写到板子的EMMC中。烧录过程中,发现了之前修改uboot配置时的一个问题,导致内核无法启动,修改后可以正常启动。另外,还修改开机启动文件,使得网络能够开机自动连接。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/28 20:02:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |