打印
[i.MX]

IMX6 Yocto启动(已解决)

[复制链接]
楼主: zengquanyun
手机看帖
扫描二维码
随时随地手机跟帖
21
zengquanyun|  楼主 | 2014-10-28 16:22 | 只看该作者 回帖奖励 |倒序浏览
以下是我的u-boot启动:
U-Boot 2013.04 (Apr 05 2014 - 08:50:42)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
CPU:   Temperature 44 C, calibration data: 0x57550569
Reset cause: POR
Board: MX6Q/SDL-SabreSD
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In:    serial
Out:   serial
Err:   serial
Found PFUZE100! deviceid=10,revid=11
mmc2(part 0) is current device
Net:   Phy not found
PHY reset timed out
FEC [PRIME]
Warning: failed to set MAC address

Normal Boot
Hit any key to stop autoboot:  0
U-Boot > printenv
baudrate=115200
boot_fdt=try
bootargs_base=setenv bootargs console=ttymxc0,115200
bootargs_mmc=setenv bootargs ${bootargs} root=/dev/mmcblk1p2 rootwait rw video=mxcfb1:dev=ldb,LDB-XGA,if=RGB666 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 ip=dhcp
bootcmd=run bootcmd_mmc
bootcmd_mfg=run mfgtool_args;bootm ${loadaddr} ${initrd_addr} ${fdt_addr};
bootcmd_mmc=run bootargs_base bootargs_mmc;mmc dev 2;mmc read ${loadaddr} 0x800 0x2000;mmc read ${fdt_addr} 0x5000 0x800;bootm ${loadaddr} - ${fdt_addr}
bootdelay=1
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc0
ethact=FEC
ethprime=FEC
fdt_addr=0x18000000
fdt_file=imx6q-sabresd.dtb
fdt_high=0xffffffff
initrd_addr=0x12C00000
initrd_high=0xffffffff
ip_dyn=yes
loadaddr=0x12000000
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}
mfgtool_args=setenv bootargs console=ttymxc0,115200 rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" enable_wait_mode=off
mmcargs=setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot}
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootm ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootm; else echo WARN: Cannot load the DT; fi; fi; else bootm; fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk0p2 rootwait rw
netargs=setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${uimage}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootm ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootm; else echo WARN: Cannot load the DT; fi; fi; else bootm; fi;
script=boot.scr
uimage=uImage

Environment size: 2191/8188 bytes
U-Boot > run bootcmd
mmc2(part 0) is current device

MMC read: dev # 2, block # 2048, count 8192 ... 8192 blocks read: OK

MMC read: dev # 2, block # 20480, count 2048 ... 2048 blocks read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot >

使用特权

评论回复
22
zengquanyun|  楼主 | 2014-10-28 16:23 | 只看该作者
以下是我的u-boot启动:
U-Boot 2013.04 (Apr 05 2014 - 08:50:42)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
CPU:   Temperature 44 C, calibration data: 0x57550569
Reset cause: POR
Board: MX6Q/SDL-SabreSD
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In:    serial
Out:   serial
Err:   serial
Found PFUZE100! deviceid=10,revid=11
mmc2(part 0) is current device
Net:   Phy not found
PHY reset timed out
FEC [PRIME]
Warning: failed to set MAC address

Normal Boot
Hit any key to stop autoboot:  0
U-Boot > printenv
baudrate=115200
boot_fdt=try
bootargs_base=setenv bootargs console=ttymxc0,115200
bootargs_mmc=setenv bootargs ${bootargs} root=/dev/mmcblk1p2 rootwait rw video=mxcfb1:dev=ldb,LDB-XGA,if=RGB666 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 ip=dhcp
bootcmd=run bootcmd_mmc
bootcmd_mfg=run mfgtool_args;bootm ${loadaddr} ${initrd_addr} ${fdt_addr};
bootcmd_mmc=run bootargs_base bootargs_mmc;mmc dev 2;mmc read ${loadaddr} 0x800 0x2000;mmc read ${fdt_addr} 0x5000 0x800;bootm ${loadaddr} - ${fdt_addr}
bootdelay=1
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc0
ethact=FEC
ethprime=FEC
fdt_addr=0x18000000
fdt_file=imx6q-sabresd.dtb
fdt_high=0xffffffff
initrd_addr=0x12C00000
initrd_high=0xffffffff
ip_dyn=yes
loadaddr=0x12000000
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}
mfgtool_args=setenv bootargs console=ttymxc0,115200 rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" enable_wait_mode=off
mmcargs=setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot}
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootm ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootm; else echo WARN: Cannot load the DT; fi; fi; else bootm; fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk0p2 rootwait rw
netargs=setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${uimage}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootm ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootm; else echo WARN: Cannot load the DT; fi; fi; else bootm; fi;
script=boot.scr
uimage=uImage

Environment size: 2191/8188 bytes
U-Boot > run bootcmd
mmc2(part 0) is current device

MMC read: dev # 2, block # 2048, count 8192 ... 8192 blocks read: OK

MMC read: dev # 2, block # 20480, count 2048 ... 2048 blocks read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot >

使用特权

评论回复
23
zengquanyun|  楼主 | 2014-10-28 16:28 | 只看该作者
上面的打印可能有点问题。我重发,在附件中。

boot.png (27.74 KB )

boot.png

使用特权

评论回复
24
FSL_TICS_Rita| | 2014-10-29 15:49 | 只看该作者
zengquanyun 发表于 2014-10-28 16:28
上面的打印可能有点问题。我重发,在附件中。

楼主你好,你这里是烧写images到SD卡中的,我看了你发的u-boot中的参数,发现你boot_cmd 中为mmc dev 2,mmc dev 2的话是从emmc启动。如果是从SD卡启动的话,应该是mmc dev 1。
所以你在启动的时候会识别不到正确的device,找不到kernel。

使用特权

评论回复
25
FSL_TICS_Rita| | 2014-10-29 15:50 | 只看该作者
u-boot中的参数都设置正确才可以正常启动。楼主修改之后再试试看。

使用特权

评论回复
26
zengquanyun|  楼主 | 2014-10-30 15:26 | 只看该作者
我上面发出来的图片是从eMMC启动的情形,boot_cmd 中设置为mmc dev 2,这个设置应该是对的,可是无法启动。若使用默认的bootcmd参数--“bootcmd=mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loaduimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi”,不知为何却能够启动kernel。

使用特权

评论回复
27
zengquanyun|  楼主 | 2014-10-30 15:28 | 只看该作者
如果是从SD卡启动,根本就无法修改u-boot参数。现在附上的是SD卡启动的情形。

使用特权

评论回复
28
zengquanyun|  楼主 | 2014-10-30 15:30 | 只看该作者
如果是从SD卡启动,根本就无法修改u-boot参数。现在附上的是SD卡启动的情形。

使用特权

评论回复
29
zengquanyun|  楼主 | 2014-10-30 15:30 | 只看该作者
如果是从SD卡启动,根本就无法修改u-boot参数。现在附上的是SD卡启动的情形。

SD-boot.png (15.92 KB )

SD-boot.png

使用特权

评论回复
30
FSL_TICS_Rita| | 2014-10-30 15:53 | 只看该作者
楼主你好,请问你使用的是哪块板子?官网的开发板还是自己设计的板子呢?

使用特权

评论回复
31
zengquanyun|  楼主 | 2014-10-30 16:25 | 只看该作者
是自己根据SABRE Platform for Smart Devices设计的板子。之前使用L3.0.35_4.1.0_130816_images_MX6.tar.gz里面的u-boot-mx6q-sabresd.bin时能够从SD卡启动kernel,但是现在使用fsl-L3.10.17_1.0.0_iMX6qdls_Bundle.tar.gz的这个u-boot-imx6qsabresd_sd.imx却连u-boot参数都改不了,总显示“no card present”。

使用特权

评论回复
32
FSL_TICS_Rita| | 2014-10-30 17:17 | 只看该作者
zengquanyun 发表于 2014-10-30 16:25
是自己根据SABRE Platform for Smart Devices设计的板子。之前使用L3.0.35_4.1.0_130816_images_MX6.tar.gz ...

请问你使用哪个版本的mfgtool烧写的?还有你的mfgtool中的cfg.ini发给我看一下。

使用特权

评论回复
33
zengquanyun|  楼主 | 2014-10-30 17:36 | 只看该作者
我使用的mfgtool来自于imx-3.10.17-1.0.0-ga-mfg-tools.tar.gz。我用它来把程序烧录到eMMC。cfg.ini在附件中。我尝试过把cfg.ini的name从eMMC修改为SDCard,但结果仍然是烧录到了eMMC,而不是SD卡。所以对于SD卡启动,我是参照《i.MX_6_SABRE-SD_Linux_User's_Guide.pdf》使用Linux Host来download到SD卡的。

cfg-ini.png (6.74 KB )

cfg-ini.png

使用特权

评论回复
34
FSL_TICS_Rita| | 2014-10-31 17:11 | 只看该作者
zengquanyun 发表于 2014-10-30 17:36
我使用的mfgtool来自于imx-3.10.17-1.0.0-ga-mfg-tools.tar.gz。我用它来把程序烧录到eMMC。cfg.ini在附件 ...

楼主你好,关于你提到的问题:
1、官网上的BSP就是一个,没有区分S/D/Q,你说的是把所有板级相关的文件,如kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c,这一类的文件换成相应的cpu是吧?我现在solo的cpu用的就是board-mx6q_sabresd.c文件移植的。
答:是的,是要修改的。这里我不知道你是在原来板子基础上修改的,还是自己新建了一个自己板子的文件。如果是新建的话,那么在u-boot中也要定义自己的板子。修改板子.c文件,同时kernel也是一样要修改的。

2、kernel_imx/arch/arm/mach-mx6/目录下的文件如下,只有.c文件只有mx6q\mx6sl的,没有mx6dl的.c文件。查看board-mx6q_sabresd.c文件,可以看到该文件包含了#include "board-mx6q_sabresd.h"
#include "board-mx6dl_sabresd.h",这是说明其实imx6q跟imx6dl用的是同一个board-mx6q_sabresd.c文件,是吧?
答:是的,在我们的BSP中imx6q跟imx6dl是用的同一个board-mx6q_sabresd.c文件,在board-mx6q_sabresd.c文件中你可以到有好多处:
if (cpu_is_mx6q())
...............
else if (cpu_is_mx6dl())
.................

使用特权

评论回复
35
zengquanyun|  楼主 | 2014-10-31 17:19 | 只看该作者
你发错了,我提到的问题是关于烧录的。

使用特权

评论回复
36
FSL_TICS_Rita| | 2014-10-31 17:32 | 只看该作者
不好意思,这个是给另外一个朋友回复的,问题太多,回错地方了。

使用特权

评论回复
37
pei84| | 2014-10-31 17:50 | 只看该作者
算不上上手yocto更快些。

使用特权

评论回复
38
FSL_TICS_Rita| | 2014-11-3 15:38 | 只看该作者
楼主你好,请问现在可以正常烧写并启动吗?如果还是不可以的话,我这边帮你整理一个文档。

使用特权

评论回复
39
zengquanyun|  楼主 | 2014-11-5 14:43 | 只看该作者
仍然无法使用SD卡启动

使用特权

评论回复
40
FSL_TICS_Rita| | 2014-11-5 15:01 | 只看该作者
zengquanyun 发表于 2014-11-5 14:43
仍然无法使用SD卡启动

OK。楼主请问你使用的板子是自己设计的还是官网的开发板呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则