wuyage

I.MX6之程序下载

0
阅读(2280)

从过去的单片机转到处理器+Linux,变化真是挺大的。 没有基础的,单是编译和下载就得折腾一段时间。为了加快入门步伐,我出血花了1千多大洋买了一个开发板来学习。选的是米尔科技的IMX6ULL 开发板。

本以为直接用人家现成的工具下载进去就可以运行,没想到也没那么顺利,我遇到的问题,下载后出现了

Booting from mmc ... reading myd-y6ull-gpmi-weim.dtb ** Unable to read file myd-y6ull-gpmi-weim.dtb **

无法启动的问题。后来经过一番学习找到了问题。通过这个问题我也大概了解了IMX6的下载流程。

原因是在Uboot工程的include/configs/myd_y6ull.h 中的

"setenv fdt_file myd-y6ull-gpmi-weim.dtb; fi; " \

这句话出现了问题,将其改为

"setenv fdt_file myd-y6ull-emmc.dtb; fi; " \

重新编译再下载就可以了。


http://blog.csdn.net/hbk320/article/details/49975841https://www.cnblogs.com/helloworldtoyou/p/6053195.html

介绍了Mfgtools的下载原理。


我遇到的问题是Uboot寻找dtb文件时指定的文件名不对。Uboot里dtb的文件名应该和

 Sending Device Tree file Sending Device Tree file write device tree to sd card write device tree to sd card

写入到emmc中的名字一致(下面两条语句)。注意不是上面寻找路径中的文件名。


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2018-4-22 重新整理

1) 打开 core-image-base-myd-y6ulx-emmc.vbs


Set wshShell = CreateObject("WScript.shell")

wshShell.run "mfgtool2.exe -c ""linux"" -l ""eMMC"" -s ""mmc=1"" -s ""board=sabreauto"" -s ""lite=l"" -s ""6uluboot=14x14"" -s ""6uldtb=14x14"" -s ""myd_y6ull_rootfs=core-image-base-myd-y6ull14x14.rootfs.tar.bz2"" -s ""myd_y6ul_rootfs=core-image-base-myd-y6ul14x14.rootfs.tar.bz2"""

Set wshShell = Nothing


参数的含义:

-c: 芯片配置文件夹名称 linux

-l: list名称,对应ucl2.xml文件中的LIST标签的name,后面会说明。

-s: 变量名称, cfg.ini以及ucl2.xml中会用到。


cfg.ini


脚本运行, mfgtool工具启动,解读cfg.ini文件,上面的vbs脚本中的参数会覆盖cfg.ini文件中的参数。

[profiles]

chip = Linux


[platform]

board = SabreSD


[LIST]

name = SDCard


[variable]

board = sabresd

mmc = 0

sxuboot=sabresd

sxdtb=sdb

7duboot=sabresd

7ddtb=sdb

6uluboot=14x14ddr3arm2

6uldtb=14x14-ddr3-arm2

6ulldtb=14x14-ddr3-arm2

ldo=

plus=

lite=l

initramfs=fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-boot

seek = 1

sxnor=qspi2

7dnor=qspi1

6ulnor=qspi1

nor_part=0

ucl2.xml


根据 vbs和cfg.ini文件中的参数指定的LIST名称,选择正确的操作进行进行烧录。

这个目录里面有很多文件,烧录的时候要用到的uboot,内核,文件系统到RAM中,运行

  • 首先烧录Profiles/Linux/OS Firmware/firmware文件夹的镜像到RAM中运行系统。

  • 系统运行之后烧录Profiles/Linux/OS Firmware/files/中的镜像到emmc中


将两个%号之间的参数使用vbs脚本和cfg.ini文件中的值进行替换


Sending partition shell

Partitioning...

Partitioning...


Sending Device Tree file

Sending Device Tree file


write device tree to sd card

write device tree to sd card


这里:

uboot:寻找file/u-boot-myd-y6ull14x14_emmc.imx , 写入dd if=$FILE of=/dev/mmcblk%mmc%boot0 bs=512 seek=2"


内核:寻找file/ zImage-myd-y6ull, 写入emmc /mnt/mmcblk%mmc%p1/zImage


设备树:寻找file/ zImage-myd-y6ull-14x14-emmc.dtb ,写入emmc /mnt/mmcblk%mmc%p1/myd-y6ul%lite%-emmc.dtb 名字为myd-y6ull-emmc.dtb








Baidu
map