当前位置: 首页 > news >正文

搜索引擎是如何判断网站的结构风景旅游网页制作素材

搜索引擎是如何判断网站的结构,风景旅游网页制作素材,为什么做红酒网站,怎样上网站dns解析不了目录MfgTool 工具简介MfgTool 工作原理简介USB接线系统烧写原理烧写NXP 官方系统烧写自制的系统系统烧写网络开机自启动设置改造我们自己的烧写工具改造MfgTool烧写测试解决Linux 内核启动失败总结前面我们已经移植好了uboot 和linux kernle#xff0c;制作好了根文件系统。但… 目录MfgTool 工具简介MfgTool 工作原理简介USB接线系统烧写原理烧写NXP 官方系统烧写自制的系统系统烧写网络开机自启动设置改造我们自己的烧写工具改造MfgTool烧写测试解决Linux 内核启动失败总结前面我们已经移植好了uboot 和linux kernle制作好了根文件系统。但是我们移植都是通过网络来测试的在实际的产品开发中肯定不可能通过网络来运行否则没网的时候产品岂不是就歇菜了。因此我们需要将uboot、linux kernel、.dtb(设备树)和rootfs这四个文件烧写到板子上的EMMC、NAND 或QSPI Flash 等其他存储设备上这样不管有没有网络我们的产品都可以正常运行。本章我们就来学习一下如何使用NXP 官方提供的MfgTool 工具通过USB OTG 口来烧写系统。 MfgTool 工具简介 MfgTool 工具是NXP 提供的专门用于给I.MX 系列CPU 烧写系统的软件可以在NXP 官网下载到。 此工具已经放到了开发板光盘中路劲为5、开发工具-3、NXP 官方原版MFG_TOOL烧写工具-L4.1.15_2.0.0-ga_mfg-tools.tar.gz。此软件在Windows下使用对于我们来说太友好了。将此压缩包进行解压解压完成以后会出现一个名为L4.1.15_2.0.0-ga_mfg-tools的文件夹进入此文件夹此文件夹的内容如图39.1.1 所示 从图39.1.1 可以看出有两个.txt 文件和两个.gz 压缩包。.txt 文档就不去看了重点是这两个.gz 压缩包这两个压缩包的区别在名字上已经写的很详细了。“without-rootfs”和“with-rootfs”一个是带rootfs 和一个是不带rootfs。mfg_tools 这个工具本意是给NXP 自己的开发板设计的烧写软件所以肯定带有自家开发板对应的uboot、linux kernel 和rootfs 的文件。我们肯定是要烧 写文件系统的所以选择mfgtools-with-rootfs.tar.gz 这个压缩包继续对其解压解压出一个名为mfgtools-with-rootfs 的文件夹此文件夹就包含有我们需要的烧写工具。 进入目录mfgtools-with-rootfs\mfgtools 中在此目录下有几个文件夹和很多的.vbs 文件如图39.1.2 所示 我们只关心图39.1.2 中Profiles 这个文件夹因为后面要烧写文件就放到这个文件夹中。MfgTool2.exe 就是烧写软件但是我们不会直接打开这个软件烧写mfg_tools 不仅能烧写I.MX6U而且也能给I.MX7、I.MX6Q 等芯片烧写所以在烧写之前必须要进行配置指定烧写的是什么芯片烧写到哪里去 下面的这些众多的.vbs 文件就是配置脚本烧写的时候通过双击这些.vbs 文件来打开烧写工具。这些.vbs 烧写脚本既可以根据处理器的不同由用户选择向I.MX6D、I.MX6Q、I.MX6S、I.MX7、I.MX6UL 和I.MX6ULL 等的哪一款芯片烧写系统。也可以根据存储芯片的不同选择向EMMC、NAND 或QSPI Flash 等的哪一种存储设备烧写功能非常强大我们现在需要向I.MX6U 烧写系统因此需要参考表39.1.1 所示的5 个烧写脚 本 脚本文件描述mfgtool2-yocto-mx-evk-emmc.vbsEMMC 烧写脚本。mfgtool2-yocto-mx-evk-nand.vbsNAND 烧写脚本mfgtool2-yocto-mx-evk-qspi-nor-n25q256a.vbsQSPI Flash 烧写脚本型号为n25q256amfgtool2-yocto-mx-evk-sdcard-sd1.vbs如果SD1 和SD2 接的SD 卡这两个文件分mfgtool2-yocto-mx-evk-sdcard-sd2.vbs别向SD1 和SD2 上的SD 卡烧写系统。 本书用的是正点原子的EMMC 版核心板因此只会用到mfgtool2-yocto-mx-evk-emmc.vbs 这个烧写脚本如果用其他的核心板请参考相应的烧写脚本。 MfgTool 工作原理简介 MfgTool 只是个工具具体的原理不需要去深入研究大概来了解一下其工作原理就行了知道它的工作流程就行了。 USB接线 1、连接USB 线 MfgTool 是通过USB OTG 接口将系统烧写进EMMC 中的正点原子I.MX6U-ALPHA 开发板上的USB OTG 口如图39.2.1.1 所示 在烧写之前需要先用USB 线将图39.2.2.1 中的USB_OTG1 接口与电脑连接起来。 2、拨码开关拨到USB 下载模式 将图39.2.2.1 中的拨码开关拨到“USB”模式如图39.2.2.2 所示 如果插了TF 卡请弹出TF 卡否则电脑不能识别USB等识别出来以后再插上TF 卡 一切准备就绪以后按一下开发板的复位键此时就会进入到USB 模式如果是第一次进入USB 模式的话可能会久一点这个是免驱的因此不需要安装驱动。第一次进入USB 模式会在电脑右下角有如图39.2.2.3 所示提示 一旦第一次设置好设备以后后面每次连接都不会有任何提示了。到这里我们的开发板已经和电脑连接好了可以开始烧写系统了。 系统烧写原理 开发板连接电脑以后双击“mfgtool2-yocto-mx-evk-emmc.vbs”打开下载对话框如图39.2.2.1 所示 如果出现“符合HID 标准的供应商定义设备”就说明连接正常可以进行烧写如果出现其他的字符那么就要检查连接是否正确。点击“Start”按钮即可开始烧写。 烧写什么东西呢肯定是烧写uboot、Linux kernel、.dtb 和rootfs那么这四个应该放到哪里MfgTool 才能访问到呢进入如下目录中 L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware此目录中的文件如图39.2.2.2 所示 文件夹“OS Firmware”看名字就知道是存放系统固件的我们重点关注files、firmware 这两个文件夹以及ucl2.xml 这个文件。 在具体看这三个文件和文件夹之前我们先来简单了解一下MfgTool 烧写的原理主要分两个阶段 ①、将firmware 目录中的uboot、linux kernel 和.dtb(设备树)通过USB OTG 将这个文件下载到开发板的DDR 中(注意不需要下载rootfs)目的就是在DDR 中启动Linux 系统为后面的烧写做准备。 ②、经过第①步的操作此时Linux 系统已经运行起来了系统运行起来以后就可以很方便的完成对EMMC 的格式化、分区等操作。EMMC 分区建立好以后就可以从files 中读取要烧写的uboot、linux kernel、.dtb(设备树)和rootfs 这4 个文件然后将其烧写到EMMC 中这个就是MfgTool 的大概工作流程。 1、firmeare 文件夹 打开firmware 文件夹里面有很多的.imx 结尾的uboot 文件、一个zImage 镜像文件、很多.dtb 结尾的设备树文件。这些文件都是NXP 官方开发板使用的不同的板子使用不同的文件其中我们需要关心的只有表39.2.2.1 中的这三个文件 脚本文件描述zImageNXP 官方I.MX6ULL EVK 开发板的Linux 镜像文件。u-boot-imx6ull14x14evk_emmc.imxNXP 官方I.MX6ULL EVK 开发板的uboot 文件。zImage-imx6ull-14x14-evk-emmc.dtbNXP 官方I.MX6ULL EVK 开发板的设备树 表39.2.2.1 中的这三个文件就是I.MX6ULL EVK 开发板烧写系统的时候第一阶段所需的文件。如果要烧写我们的系统就需要用我们编译出来的zImage、u-boot.imx 和imx6ull-alientek-emmc.dtb 这三个文件替换掉表39.2.2.1 中这三个文件。但是名字要和表39.2.2.1 中的一致因此需要将u-boot.imx 重命名为u-boot-imx6ull14x14evk_emmc.imx将imx6ull-alientek-emmc.dtb重命名为zImage-imx6ull-14x14-evk-emmc.dtb。 2、files 文件夹 将表39.2.2.1 中的这三个文件下载到开发板的DDR 上以后烧写的第一阶段就完成了第二阶段就是从files 目录中读取整个系统文件并将其烧写到EMMC 中。files 目录中的文件和firmware 目录中的基本差不多都是不同板子对应的uboot、设备树文件同样我们只关心表39.2.2.2 中的四个文件 脚本文件描述zImageNXP 官方I.MX6ULL EVK 开发板的Linux 镜像文件。u-boot-imx6ull14x14evk_emmc.imxNXP 官方I.MX6ULL EVK 开发板的uboot 文件。zImage-imx6ull-14x14-evk-emmc.dtbNXP 官方I.MX6ULL EVK 开发板的设备树rootfs_nogpu.tar.bz2根文件系统注意和另外一个rootfs.tar.bz2 根文件系统区分开。nogpu 表示此根文件系统不包含GPU 的内容I.MX6ULL 没有GPU因此要使用此根文件系统 如果要烧写我们自己编译出来的系统就需要用我们编译出来的zImage、u-boot.imx 和imx6ull-alientek-emmc.dtb 和rootfs 这四个文件替换掉表39.2.2.2 中这四个文件。 3、ucl2.xml 文件 files 和firmware 目录下有众多的uboot 和设备树那么烧写的时候究竟选择哪一个呢这个工作就是由ucl2.xml 文件来完成的。 ucl2.xml 以“ UCL”开始以“ /UCL”结束。“ CFG”和“ /CFG”之间是配置相关内容主要是判断当前是给I.MX 系列的哪个芯片烧写系统。“ LIST”和“ /LIST”之间的是针对不同存储芯片的烧写命令。整体框架如下 UCLCFG......!-- 判断向I.MX系列的哪个芯片烧写系统--....../CFGLIST nameSDCard descChoose SD Card as media!-- 向SD卡烧写Linux系统--/LISTLIST nameeMMC descChoose eMMC as media!-- 向EMMC烧写Linux系统--/LISTLIST nameNor Flash descChoose Nor flash as media!-- 向Nor Flash烧写Linux系统--/LISTLIST nameQuad Nor Flash descChoose Quad Nor flash as media!-- 向Quad Nor Flash烧写Linux系统--/LISTLIST nameNAND Flash descChoose NAND as media!-- 向NAND Flash烧写Linux系统--/LISTLIST nameSDCard-Android descChoose SD Card as media!-- 向SD卡烧写Android系统--/LISTLIST nameeMMC-Android descChoose eMMC as media!-- 向EMMC烧写Android系统--/LISTLIST nameNand-Android descChoose NAND as media!-- 向NAND Flash烧写Android系统--/LISTLIST nameSDCard-Brillo descChoose SD Card as media!-- 向SD卡烧写Brillo系统--/LIST /UCLucl2.xml 首先会判断当前要向I.MX 系列的哪个芯片烧写系统代码如下 21 CFG 22 STATE nameBootStrap devMX6SL vid15A2 pid0063/ 23 STATE nameBootStrap devMX6D vid15A2 pid0061/ 24 STATE nameBootStrap devMX6Q vid15A2 pid0054/ 25 STATE nameBootStrap devMX6SX vid15A2 pid0071/ 26 STATE nameBootStrap devMX6UL vid15A2 pid007D/ 27 STATE nameBootStrap devMX7D vid15A2 pid0076/ 28 STATE nameBootStrap devMX6ULL vid15A2 pid0080/ 29 STATE nameUpdater devMSC vid066F pid37FF/ 30 /CFG通过读取芯片的VID 和PID 即可判断出当前要烧写什么处理器的系统如果VID0X15A2PID0080那么就表示要给I.MX6ULL 烧写系统。确定了处理器以后就要确定向什么存储设备烧写系统这个时候打开mfgtool2-yocto-mx-evk-emmc.vbs 此文件内容如下 Set wshShell CreateObject(WScript.shell) wshShell.run mfgtool2.exe -c linux -l eMMC -s boardsabresd -s mmc1 -s 6uluboot14x14evk -s 6uldtb14x14-evk Set wshShell Nothing重点是“wshShell.run”这一行这里一行调用了mfgtool2.exe 这个软件并且还给出了一堆的参数其中就有“eMMC”字样说明是向EMMC 烧写系统要烧写的存储设备就这样确定下来了。“wshShell.run”后面还有一堆的其他参数这些参数都有对应的值如下所示 boardsabresd mmc1 6uluboot14x14evk 6uldtb14x14-evk我们继续回到ucl2.xml 中既然现在已经知道了是向I.MX6ULL 的EMMC 中烧写系统那么直接在ucl2.xml 中找到相应的烧写命令就行了因为相应的命令太长为了缩小篇幅我们就以uboot 的烧写为例讲解一下。前面说了烧写分两个阶段第一步是通过USB OTG 向DDR中下载系统第二步才是正常的烧写。通过USB OTG 向DDR 下载uboot 的命令如下 CMD stateBootStrap typeboot bodyBootStrap file firmware/u-boot-imx6ul%lite%%6uluboot%_emmc.imx ifdevMX6ULLLoading U-boot /CMD上面的命令就是BootStrap 阶段也就是第一阶段“file”表示要下载的文件位置在firmware目录下文件名字为 u-boot-imx6ul%lite%%6uluboot%_emmc.imx在L4.1.15_2.0.0-ga_mfg-tools\mfgtools-with-rootfs\mfgtools-with-rootfs\mfgtools 下找到cfg.ini 文件该文件里包含了开发板的一些信息查看cfg.ini 文件可得litel 以及一些字符串代表的值。 “%lite%”和“%6uluboot%”分别表示取lite 和6uluboot 的值而litel6uluboot14x14evk因此将这个值代入以后就是 u-boot-imx6ull14x14evk _emmc.imx所以这里向DDR 中下载的是firmware/ u-boot-imx6ull14x14evk _emmc.imx 这个uboot 文件。同样的方法将.dtb(设备树)和zImage 都下载到DDR 中以后就会跳转去运行OS这个时候会在MfgTool 工具中会有“Jumping to OS image”提示语句ucl2.xml 中的跳转命令如下 CMD stateBootStrap typejump Jumping to OS image. /CMD启动Linux 系统以后进入第二阶段就是在EMMC 上创建分区然后烧写uboot、zImage、.dtb(设备树)和根文件系统。 这个就是MfgTool 的整个烧写原理弄懂了烧写原理以后就可以开始试着先将NXP 官方的系统烧写到正点原子的I.MX6U-ALPHA 开发板中。 烧写NXP 官方系统 我们先试着将NXP 官方的系统烧写到正点原子的I.MX6U-ALPHA 开发板中主要是先熟悉一下烧写过程。因为正点原子的EMMC 核心版用的也是512MB 的DDR3 加8G 的EMMC因此烧写NXP 官方的系统是没有任何问题的。烧写步骤如下 ①、连接好USB拨码开关拨到USB 下载模式。 ②、弹出TF卡然后按下开发板复位按键。 ③、打开SecureCRT。 ③、双击“mfgtool2-yocto-mx-evk-emmc.vbs”打开下载软件如果出现“符合HID 标准的供应商定义设备”等字样就说明下载软件已经准备就绪。点击“Start”按钮开发烧写NXP 官方系统烧写过程如图39.3.1 所示 这个时候可以在SecurCRT 上看到具体的烧写过程如图39.3.2 所示 等待烧写完成因为NXP 官方的根文件系统比较大因此烧写的时候耗时会久一点。烧写完成以后MfgTool 软件如图39.3.3 所示 烧写完成以后点击“Stop”按钮停止烧写然后点击“Exit”键退出。拔出USB 线将开发板上的拨码开关拨到EMMC 启动模式然后重启开发板此时就会从EMMC 启动。只是启动以后的系统是NXP 官方给I.MX6ULL EVK 开发板制作的这个系统需要输入用户名用户名为“root”没有密码如图39.3.3 所示 在“imx6ul7d login”后面输入“root”用户名然后点击回车键即可进入系统中进入系统以后就可以进行其他操作了。所以说NXP 官方的系统其实是可以在正点原子的EMMC 版核心板上运行的。 烧写自制的系统 系统烧写 上一小节我们试着将NXP 官方提供的系统烧写到正点原子的I.MX6U-ALPHA 开发板中目的是体验一下通过MfgTool 烧写系统的过程。本小节我们就来学习如何将我们做好的系统烧写到开发板中首先是准备好要烧写的原材料 ①、自己移植编译出来的uboot 可执行文件u-boot.imx。②、自己移植编译出来的zImage 镜像文件和开发板对应的.dtb(设备树)对于I.MX6U-ALPHA 开发板来说就是imx6ull-alientek-emmc.dtb。③、自己构建的根文件系统rootfs这里我们需要对rootfs 进行打包进入到Ubuntu 中的rootfs 目录中然后使用tar 命令对其进行打包命令如下 cd rootfs/ tar -vcjf rootfs.tar.bz2 *完成以后会在rootfs 目录下生成一个名为rootfs.tar.bz2 的压缩包将rootfs.tar.bz2 发送到windows 系统中。 将上面提到的这4 个“原材料”都发送到Windows 系统中如图39.4.1 所示 材料准备好以后还不能直接进行烧写必须对其进行重命名否则的话ucl2.xml 是识别不出来的前面讲解ucl2.xml 语法的时候已经说过了图39.4.1 中的这四个文件重命名见表39.4.1 原名字重命名u-boot.imxu-boot-imx6ull14x14evk_emmc.imxzImagezImage(不需要重命名)imx6ull-alientek-emmc.dtbzImage-imx6ull-14x14-evk-emmc.dtbrootfs.tar.bz2rootfs_nogpu.tar.bz2 完成以后如图39.4.2 所示 接下来就是用我们的文件替换掉NXP 官方的文件先将图39.4.2 中的zImage、u-boot-imx6ull14x14evk_emmc.imx 和zImage-imx6ull-14x14-evk-emmc.dtb 这三个文件拷贝到mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware目录中替换掉原来的文件。然后将图39.4.2 中的所有4 个文件都拷贝到mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files目录中这两个操作完成以后我们就可以进行烧写了。 双击“mfgtool2-yocto-mx-evk-emmc.vbs”打开烧写软件点击“Start”按钮开始烧写由于我们自己制作的rootfs 比较小因此烧写相对来说会快一点。烧写完成以后设置开发板从EMMC 启动启动我们刚刚烧写进去的系统测试有没有问题。 注意一旦自己改造的mfgtools 工具能够正常烧写系统那么mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware 目录下的文件以后就不能再修改否则可能导致烧写失败 网络开机自启动设置 大家在测试网络的时候可能会发现网络不能用这并不是因为我们将系统烧写到EMMC中以后网络坏了是因为网络没有打开。 前面我们用NFS 挂载根文件系统的时候因为要使用NFS服务因此Linux 内核会打开eth0 这个网卡现在我们不使用NFS 挂载根文件系统因此Linux内核也就不会自动打开eth0 网卡了。 我们可以手动打开网卡首先输入 ifconfig -a命令查看一下eth0 和eth1 网卡是否都存在结果如图39.4.3 所示 可以看出eth0 好eth1 都存在既然存在我们就打开以打开eth0 网卡为例输入如下命令打开eth0: ifconfig eth0 up打开网卡的时候会有如图39.4.4 所示的提示信息 打开的时候会提示使用LAN8710/LAN8720 的网络芯片eth0 连接成功并且是100Mpbs全双工eth0 链接准备就绪。这个时候输入“ifconfig”命令就会看到eth0 这个网卡如图39.4.6所示 接下来就是给每个eth0网卡设置IP 地址如果你的开发板连接的路由器那么可以通过路由器自动分配IP 地址命令如下 udhcpc -i eth0 //通过路由器分配IP 地址如果你的开发板连接着电脑那么就可以手动设置IP 地址比如设置为192.168.1.251命令如下 ifconfig eth0 192.168.1.251 netmask 255.255.255.0 //设置IP 地址和子网掩码 route add default gw 192.168.1.1 //添加默认网关推荐大家将开发板连接到路由器上设置好IP 地址以后就可以测试网络了比如ping 一下电脑IP 地址或者ping 一下百度官网。 每次开机以后都要自己手动打开网卡然后手动设置IP 地址也太麻烦了有没有开机以后自动启动网卡并且设置IP 地址的方法呢肯定有的我们将打开网卡设置网卡IP 地址的命令添加到/etc/init.d/rcS 文件中就行了完成以后的rcS 文件内容如下所示 1 #!/bin/sh 2 3 PATH/sbin:/bin:/usr/sbin:/usr/bin 4 LD_LIBRARY_PATH$LD_LIBRARY_PATH:/lib:/usr/lib 5 export PATH LD_LIBRARY_PATH runlevel 6 7 #网络开机自启动设置 8 ifconfig eth0 up 9 #udhcpc -i eth0 10 ifconfig eth0 192.168.1.251 netmask 255.255.255.0 11 route add default gw 192.168.1.1 ...... 12 #cd /drivers 13 #./hello 14 #cd /第8 行打开eth0 网卡 第9 行通过路由器自动获取IP 地址。 第10 行手动设置eth0 的IP 地址和子网掩码。 第11 行添加默认网关。 修改好rcS 文件以后保存并退出重启开发板这个时候eth0 网卡就会在开机的时候自动启动了我们也就不用手动添加相关设置了。 改造我们自己的烧写工具 改造MfgTool 在上一小节中我们已经实现了将自己的系统烧写到开发板中但是使用的是“借鸡生蛋”的方法。我们通过将NXP 官方的系统更换成我们自己制作的系统来完成系统烧写本节我们就来学习一下如何将MfgTool 这个工具改造成我们自己的工具让其支持我们自己的开发板。要改造MfgTool重点是三方面 ①、针对不同的核心版确定系统文件相关名字。②、新建我们自己的.vbs 文件。③、修改ucl2.xml 文件。 1、确定系统文件名字 确定系统文件名字完全是为了兼容不同的产品比如某个产品有NAND 和EMMC 两个版本那么EMMC 和NAND 这两个版本的uboot、zImage、.dtb 和rootfs 有可能不同。为了在MfgTool 工具中同时支持EMMC 和NAND 这两个版本的核心板EMMC 版本的系统文件命名如图39.5.1.1 所示 2、新建.vbs 文件 直接复制mfgtool2-yocto-mx-evk-emmc.vbs 文件即可将新复制的文件重命名为mfgtool2-alientek-alpha-emmc.vbs文件内容不要做任何修改.vbs 文件我们就新建好了。 3、修改ucl2.xml 文件 在修改ucl2.xml 文件之前先保存一份原始的ucl2.xml。将ucl2.xml 文件改为如下所示内容 !-- 正点原子修改后的ucl2.xml文件-- UCL CFG STATE nameBootStrap devMX6UL vid15A2 pid007D/ STATE nameBootStrap devMX6ULL vid15A2 pid0080/ STATE nameUpdater devMSC vid066F pid37FF/ /CFG !-- 向EMMC烧写系统-- LIST nameeMMC descChoose eMMC as media CMD stateBootStrap typeboot bodyBootStrap file firmware/u-boot-alientek-emmc.imx ifdevMX6ULLLoading U-boot/CMD CMD stateBootStrap typeload filefirmware/zImage-alientek-emmc address0x80800000 loadSectionOTH setSectionOTH HasFlashHeaderFALSE ifdevMX6SL MX6SX MX7D MX6UL MX6ULLLoading Kernel./CMD CMD stateBootStrap typeload filefirmware/%initramfs% address0x83800000 loadSectionOTH setSectionOTH HasFlashHeaderFALSE ifdevMX6SL MX6SX MX7D MX6UL MX6ULLLoading Initramfs./CMD CMD stateBootStrap typeload filefirmware/imx6ull-alientek-emmc.dtb address0x83000000 loadSectionOTH setSectionOTH HasFlashHeaderFALSE ifdevMX6ULLLoading device tree./CMD CMD stateBootStrap typejump Jumping to OS image. /CMD !-- create partition -- CMD stateUpdater typepush bodysend filemksdcard.sh.tarSending partition shell/CMD CMD stateUpdater typepush body$ tar xf $FILE Partitioning.../CMD CMD stateUpdater typepush body$ sh mksdcard.sh /dev/mmcblk%mmc% Partitioning.../CMD !-- burn uboot -- CMD stateUpdater typepush body$ dd if/dev/zero of/dev/mmcblk%mmc% bs1k seek768 convfsync count8clear u-boot arg/CMD !-- access boot partition -- CMD stateUpdater typepush body$ echo 0 /sys/block/mmcblk%mmc%boot0/force_roaccess boot partition 1/CMD CMD stateUpdater typepush bodysend filefiles/u-boot-alientek-emmc.imx ifdevMX6ULLSending u-boot.bin/CMD CMD stateUpdater typepush body$ dd if$FILE of/dev/mmcblk%mmc%boot0 bs512 seek2write U-Boot to sd card/CMD CMD stateUpdater typepush body$ echo 1 /sys/block/mmcblk%mmc%boot0/force_ro re-enable read-only access /CMD CMD stateUpdater typepush body$ mmc bootpart enable 1 1 /dev/mmcblk%mmc%enable boot partion 1 to boot/CMD !-- create fat partition -- CMD stateUpdater typepush body$ while [ ! -e /dev/mmcblk%mmc%p1 ]; do sleep 1; echo \waiting...\; done Waiting for the partition ready/CMD CMD stateUpdater typepush body$ mkfs.vfat /dev/mmcblk%mmc%p1Formatting rootfs partition/CMD CMD stateUpdater typepush body$ mkdir -p /mnt/mmcblk%mmc%p1/ CMD stateUpdater typepush body$ mount -t vfat /dev/mmcblk%mmc%p1 /mnt/mmcblk%mmc%p1/ !-- burn zImage -- CMD stateUpdater typepush bodysend filefiles/zImage-alientek-emmcSending kernel zImage/CMD CMD stateUpdater typepush body$ cp $FILE /mnt/mmcblk%mmc%p1/zImagewrite kernel image to sd card/CMD !-- burn dtb -- CMD stateUpdater typepush bodysend filefiles/imx6ull-alientek-emmc.dtb ifdevMX6ULLSending Device Tree file/CMD CMD stateUpdater typepush body$ cp $FILE /mnt/mmcblk%mmc%p1/imx6ull-alientek-emmc.dtb ifdevMX6ULLwrite device tree to sd card/CMD CMD stateUpdater typepush body$ umount /mnt/mmcblk%mmc%p1Unmounting vfat partition/CMD !-- burn rootfs -- CMD stateUpdater typepush body$ mkfs.ext3 -F -E nodiscard /dev/mmcblk%mmc%p2Formatting rootfs partition/CMD CMD stateUpdater typepush body$ mkdir -p /mnt/mmcblk%mmc%p2/ CMD stateUpdater typepush body$ mount -t ext3 /dev/mmcblk%mmc%p2 /mnt/mmcblk%mmc%p2/ CMD stateUpdater typepush bodypipe tar -jxv -C /mnt/mmcblk%mmc%p2 filefiles/rootfs-alientek-emmc.tar.bz2 ifdevMX6UL MX7D MX6ULLSending and writting rootfs/CMD CMD stateUpdater typepush bodyfrfFinishing rootfs write/CMD CMD stateUpdater typepush body$ umount /mnt/mmcblk%mmc%p2Unmounting rootfs partition/CMD CMD stateUpdater typepush body$ echo Update Complete!Done/CMD /LIST /UCL烧写测试 MfgTool 工具修改好以后就可以进行烧写测试了将imx6ull-alientek-emmc.dtb、u-boot-alientek-emmc.imx 和zImage-alientek-emmc 这三个文件复制到mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware 目录中。 将imx6ull-alientek-emmc.dtb、u-boot-alientek-emmc.imx、zImage-alientek-emmc 和rootfs-alientek-emmc.tar.bz2 这四个文件复制到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files 目录中(相当于删除了其他无关的内容只保留了4个有用的文件)。 点击“mfgtool2-alientek-alpha-emmc.vbs”打开MfgTool 烧写系统等待烧写完成然后设置拨码开关为EMMC 启动重启开发板系统启动信息如图39.5.2.1 所示 从图39.5.2.1 可以看出出现“Starting kernel …”以后就再也没有任何信息输出了说明Linux 内核启动失败了。接下来就是解决为何Linux 内核启动失败这个问题。 解决Linux 内核启动失败 上一小节启动Linux 的时候出问题了仔细观察uboot 输出的log 信息会发现如图39.5.3.1 所示两行信息 从图39.5.3.1 可以看出在读取“imx6ull-14x14-evk.dtb”这个设备树文件的时候出错了。 重启uboot进入到命令行模式输入如下命令查看EMMC 的分区1 里面有没有设备树文件 mmc dev 1 //切换到EMMC ls mmc 1:1 //输出EMMC1 分区1 中的所有文件结果如图39.5.3.2 所示 从图39.5.3.2 可以看出此时EMMC 的分区1 中是存在设备树文件的只是文件名字为imx6ull-alientek-emmc.dtb因此读取imx6ull-14x14-evk.dtb 肯定会出错的因为根本就不存在这个文件。之所以出现这个错误的原因是因为uboot 里面默认的设备树名字就是imx6ull-14x14-evk.dtb这个我们在讲解uboot 的时候就已经说过了。解决方法很简单有两种方法 方法一重新设置bootcmd 环境变量值 进入uboot 的命令行重新设置bootcmd 和bootargs 这两个环境变量的值这里要注意的是bootargs 的值也要重新设置一下命令如下 setenv bootcmd mmc dev 1;fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000 setenv bootargs consolettymxc0,115200 root/dev/mmcblk1p2 rootwait rw saveenv设置好bootcmd 和bootargs 这两个环境变量以后重启开发板Linux 系统就可以正常启动。 方法二修改uboot 源码 第1 种方法每次重新烧写系统以后都要先手动设置一下bootcmd 的值这样有点麻烦有没有一劳永逸的方法呢肯定是有的就是直接修改uboot 源码。打开uboot 源码中的文件include/configs/mx6ull_alientek_emmc.h在宏CONFIG_EXTRA_ENV_SETTINGS 中找到如下所示内容 194 findfdt\ 195 if test $fdt_file undefined; then \ 196 if test $board_name EVK test $board_rev 9X9; then \ 197 setenv fdt_file imx6ull-9x9-evk.dtb; fi; \ 198 if test $board_name EVK test $board_rev 14X14; then \ 199 setenv fdt_file imx6ull-14x14-evk.dtb; fi; \ 200 if test $fdt_file undefined; then \ 201 echo WARNING: Could not determine dtb to use; fi; \ 202 fi;\0 \findfdt 就是用于确定设备树文件名字的环境变量fdt_file 环境变量保存着设备树文件名。 第196 行和197 行用于判断设备树文件名字是否为imx6ull-9x9-evk.dtb第198 行和199 行用于判断设备树文件名字是否为imx6ull-14x14-evk.dtb。这两个设备树都是NXP 官方开发板使用的I.MX6U-ALPHA 开发板用不到因此直接将示例代码39.5.3.1 中findfdt 的值改为如下内容 194 findfdt\ 195 if test $fdt_file undefined; then \ 196 setenv fdt_file imx6ull-alientek-emmc.dtb; \ 197 fi;\0 \第196 行如果fdt_file 未定义的话直接设置fdt_file imx6ull-alientek-emmc.dtb简单直接不需要任何的判断语句。修改以后重新编译uboot然后用将新的uboot 烧写到开发板中烧写完成以后重启测试Linux 内核启动正常。 总结 关于系统烧写就讲解到这里本章我们使用NXP 提供的MfgTool 工具通过USB OTG 口向开发板的EMMC 中烧写uboot、Linux kernel、.dtb(设备树)和rootfs 这四个文件。在本章我们主要做了五个工作 ①、理解MfgTool 工具的工作原理。 ②、使用MfgTool 工具将NXP 官方系统烧写到I.MX6U-ALPHA 开发板中主要是为了体 验一下MfgTool 软件的工作流程以及烧写方法。 ③、使用MfgTool 工具将我们自己编译出来的系统烧写到I.MX6U-ALPHA 开发板中。 ④、修改MfgTool 工具使其支持我们所使用的硬件平台。 ⑤、修改相应的错误。 关于系统烧写的方法就讲解到这里本章内容不仅仅是为了讲解如何向I.MX6ULL 芯片中烧写系统更重要的是向大家详细的讲解了MfgTool 的工作原理。如果大家在后续的工作或学习中使用I.MX7 或者I.MX8 等芯片本章同样适用。 随着本章的结束本书第三篇的内容也正式结束了第三篇是系统移植篇重点就是uboot、Linux kernel 和rootfs 的移植看似简简单单的“移植”两个字引出的却是一篇300 多页的“爱恨情仇”。授人以鱼不如授人以渔本可以简简单单的教大家修改哪些文件、添加哪些内容怎么去编译然后得到哪些文件。但是这样只能看到表象并不能深入的了解其原理为了让大家能够详细的了解整个流程笔者义无反顾的选择了这条最难走的路不管是uboot 还是Linux kernel从Makefile 到启动流程都尽自己最大的努力去阐述清楚。奈何笔者水平有限还是有很多的细节没有处理好大家有疑问的地方可以一起讨论学习。
http://www.huolong8.cn/news/353377/

相关文章:

  • 中国建设网站下载主题猫-wordpress
  • 网站打开慢 可以只换空间不换域名吗网站建设经济可行性分析
  • 高校二级网站建设意义装修案例分享的文案
  • 做盗版小说网站能赚钱不软件公司工资高吗
  • 南充北京网站建设华为手机应用引擎
  • 手机网站开发下拉刷新自助建站网站哪个好
  • sap.net网站开发有哪些网站可以做兼职
  • 北京免费建站网络营销用什么软件可以做网站动态
  • 局域网内网站建设网站开发app开发主营业务
  • 工商营业执照咨询电话seo优化教程
  • 门窗厂家东莞网站建设新站优化案例
  • 兴宁网站建设设计男医生给产妇做内检小说网站
  • 网址搜索ip地址上海谷歌seo公司
  • 用python怎么做网站wordpress页面侧边栏
  • pc网站建设网站设计培训学院
  • 三明做网站企业网站建设情况 文库
  • 怎么从网站知道谁做的缙云企业网站建设
  • 300元建站腾讯云网站建设教学视频教程
  • 湘西网站建设商务网站业务流程
  • 有帮忙做儿童房设计的网站吗电商网站建设哪家好
  • 网站等保需要几年一做什么网站做烘干设备好
  • 南昌营销型网站建设企业建站公司案例
  • 义乌网站制作公司电子商务公司建设网站方案
  • 做网站创业怎么样电子商务网站开发教程论文6
  • 淄博外贸网站建设海丰建设局网站
  • 网站建设信息模板下载wordpress怎么添加用户中心页面
  • 手机网站哪些功能wordpress更改固定连接404
  • 连云港网站建设的公司网站建设功
  • 北京网站优化诊断网上商城怎么购物
  • 网站建设 淄博网络推广优化培训