发新帖我要提问
12
返回列表
打印
[i.MX]

为什么手动烧写emmc总是出错,大神求解决!

[复制链接]
楼主: a1028732302
手机看帖
扫描二维码
随时随地手机跟帖
21
FSL_TICS_Rita| | 2014-12-16 17:12 | 只看该作者 回帖奖励 |倒序浏览
a1028732302 发表于 2014-12-16 17:04
嗯 马上试试看

建议你先使用SD卡把系统跑起来。先都写到SD卡上,先不往EMMC上写。

使用特权

评论回复
22
FSL_TICS_Rita| | 2014-12-16 17:13 | 只看该作者
官网的user guide文档中有关于如何使用dd命令将images写到SD卡上的。

使用特权

评论回复
23
a1028732302|  楼主 | 2014-12-16 17:19 | 只看该作者
FSL_TICS_Rita 发表于 2014-12-16 17:13
官网的user guide文档中有关于如何使用dd命令将images写到SD卡上的。

我都SD原来就是可以用的,但是现在要转到emmc启动。我也同样尝试过在sd下直接对emmc分区,烧录,结果u-boot不打印直接。你有相关的文档吗?SD下操作emmc,类似烧录分区的文档。谢谢给个链接好吗,我研究研究再

使用特权

评论回复
24
FSL_TICS_Rita| | 2014-12-16 17:36 | 只看该作者
a1028732302 发表于 2014-12-16 17:19
我都SD原来就是可以用的,但是现在要转到emmc启动。我也同样尝试过在sd下直接对emmc分区,烧录,结果u-bo ...

楼主你好,关于SD下操作emmc我们这边我帮你找了还真没有文档介绍,我自己也没有试过,明天我帮你问一下我同事哈,看他们有没有试过。

使用特权

评论回复
25
a1028732302|  楼主 | 2014-12-16 17:56 | 只看该作者
FSL_TICS_Rita 发表于 2014-12-16 17:36
楼主你好,关于SD下操作emmc我们这边我帮你找了还真没有文档介绍,我自己也没有试过,明天我帮你问一下我 ...

嗯 嗯~~

使用特权

评论回复
26
leifenger| | 2014-12-17 13:07 | 只看该作者
下面是我用mfgtool工具烧写emmc的ucl2.xml,烧写的是linux系统,参考一下哈。
<UCL>
  <CFG>
    <STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
          <STATE name="Updater"   dev="MSC" vid="066F" pid="37FF"/>
  </CFG>
  
  <LIST name="Sabre-eMMC" desc="Choose SD as media">
  
  <CMD state="BootStrap" type="boot" body="BootStrap" file ="u-boot.bin" >Loading U-boot</CMD>
        <CMD state="BootStrap" type="load" file="uImage" address="0x10800000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Kernel.</CMD>
        <CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot" address="0x10C00000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Initramfs.</CMD>
        <CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
       
        <CMD state="Updater" type="push" body="send" file="files/u-boot.bin">Sending U-Boot</CMD>
        <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=512 seek=2 skip=2">write U-Boot to sd card</CMD>
                       
        <CMD state="Updater" type="push" body="send" file="files/uImage">Sending kernel uImage</CMD>
        <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=512 seek=2048 conv=fsync">write kernel image to sd card</CMD>
       
        <CMD state="Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
        <CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
        <CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk0"> Partitioning...</CMD>

        <CMD state="Updater" type="push" body="$ mkfs.ext3 -j /dev/mmcblk0p1">Formatting rootfs partition</CMD>
        <CMD state="Updater" type="push" body="$ mkdir -p /mnt/fs"/>
        <CMD state="Updater" type="push" body="$ mount -t ext3 /dev/mmcblk0p1 /mnt/fs"/>
        <CMD state="Updater" type="push" body="pipe tar  -jxv -C /mnt/fs" file="files/rootfs.tar.bz2">Sending and writting rootfs</CMD>
        <CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
        <CMD state="Updater" type="push" body="$ umount /mnt/fs">Unmounting rootfs partition</CMD>

  </LIST>
</UCL>

使用特权

评论回复
27
leifenger| | 2014-12-17 13:12 | 只看该作者
楼主,你在uboot下下载的uImage与initramfs.cpio.gz.uboot是不完整的内核与文件系统,
只能起来简易的系统,然后还要写入完整的uImage与文件系统才行。。。

使用特权

评论回复
28
a1028732302|  楼主 | 2014-12-17 14:10 | 只看该作者
leifenger 发表于 2014-12-17 13:12
楼主,你在uboot下下载的uImage与initramfs.cpio.gz.uboot是不完整的内核与文件系统,
只能起来简易的系统 ...

嗯,就像你说的,我现在就是在启动这个简易系统的时候出错了。我是手动操作的下边这几步,并没有用mfgtoosl:
<CMD state="BootStrap" type="boot" body="BootStrap" file ="u-boot.bin" >Loading U-boot</CMD>
        <CMD state="BootStrap" type="load" file="uImage" address="0x10800000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Kernel.</CMD>
        <CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot" address="0x10C00000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Initramfs.</CMD>
        <CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>

我是分别把uImage和initramfs.cpio.gz.uboot放到0x10800000和10c00000 RAM处。
然后bootm 0x10800000
报错:
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
VFS: Cannot open root device "(null)" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
根据log显示好像是需要root=参数设置。但是initramfs启动是不需要root=参数设置的。我也曾经设置过类似root=dev/ram,ram0,ram1之类都不可以

还有如果我执行
bootm 1080000 10c00000程序就会卡在
mmcblk0: mmc0:0001 SEM08G 7.39 GiB
mmcblk0boot0: mmc0:0001 SEM08G partition 1 1.00 MiB
Freeing init memory: 192K
mmcblk0: p1 p2 p3 < p5 p6 p7 p8 > p4
mmcblk0: p4 size 13336576 extends beyond EOD, truncated
Starting UTP
ln: /etc/mtab: File exists
disable turn off display
mmcblk0boot1: unknown partition table
mmcblk0boot0: unknown partition table
Starting the hotplug events dispatcher udevd
Synthesizing initial hotplug evenudevd (1976): /proc/1976/oom_adj is deprecated, please use /proc/1976/oom_score_adj instead.
ts
uuc 0.4 [built Aug 16 2013 01:24:08]
UTP: Waiting for device to appear
UTP: file/device node /dev/utp already exists
cpu_id is 0
到这里,虽然终端可以输入,但是什么反应都没有
明明跟mfg执行的流程一样,但为什么我的始终没有启动。一直在initramfs.cpio.gz.uboot出问题

使用特权

评论回复
29
leifenger| | 2014-12-17 15:49 | 只看该作者
a1028732302 发表于 2014-12-17 14:10
嗯,就像你说的,我现在就是在启动这个简易系统的时候出错了。我是手动操作的下边这几步,并没有用mfgtoo ...

你认为 bootm 0x10800000 等价于ucl2.xml中的
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD> 吗?
可能应该输入 bootm 0x10C00000 吧?!
initramfs.cpio.gz.uboot好像是uboot、内核、文件系统三合一的一个压缩包。

使用特权

评论回复
30
a1028732302|  楼主 | 2014-12-17 16:00 | 只看该作者
leifenger 发表于 2014-12-17 15:49
你认为 bootm 0x10800000 等价于ucl2.xml中的
Jumping to OS image.  吗?
可能应该输入 bootm 0x10C000 ...

真的有可能在这一步出错~~,不过很明显bootm 0x10c00000不行,报错:找不到kernel image

使用特权

评论回复
31
a1028732302|  楼主 | 2014-12-17 16:02 | 只看该作者
leifenger 发表于 2014-12-17 13:07
下面是我用mfgtool工具烧写emmc的ucl2.xml,烧写的是linux系统,参考一下哈。

  

这个地方一直不知道是在做什么?dev,vid,pid可以具体解释下什么意思么?
<UCL>
  <CFG>
    <STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
          <STATE name="Updater"   dev="MSC" vid="066F" pid="37FF"/>
  </CFG>

使用特权

评论回复
32
a1028732302|  楼主 | 2014-12-17 16:04 | 只看该作者
FSL_TICS_Rita 发表于 2014-12-16 17:36
楼主你好,关于SD下操作emmc我们这边我帮你找了还真没有文档介绍,我自己也没有试过,明天我帮你问一下我 ...

你好,帮忙看下
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
我在mfgtool的uboot下手动输入bootm 10800000或者10c00000是不是跟上面等价呢?

使用特权

评论回复
33
a1028732302|  楼主 | 2014-12-18 09:55 | 只看该作者
:(  自顶一下,问题还没解决呢,别沉啊

使用特权

评论回复
34
FSL_TICS_Rita| | 2014-12-18 16:40 | 只看该作者
a1028732302 发表于 2014-12-17 16:02
这个地方一直不知道是在做什么?dev,vid,pid可以具体解释下什么意思么?

  

楼主你好,这里dev,vid,pid指的是设备的名称和ID number。

使用特权

评论回复
35
a1028732302|  楼主 | 2015-1-6 15:04 | 只看该作者
忘了这边还有帖子没结,后来解决了,简单分享下:
执行:
bootm 1080000 10c00000程序就会卡在
mmcblk0: mmc0:0001 SEM08G 7.39 GiB
mmcblk0boot0: mmc0:0001 SEM08G partition 1 1.00 MiB
Freeing init memory: 192K
mmcblk0: p1 p2 p3 < p5 p6 p7 p8 > p4
mmcblk0: p4 size 13336576 extends beyond EOD, truncated
Starting UTP
ln: /etc/mtab: File exists
disable turn off display
mmcblk0boot1: unknown partition table
mmcblk0boot0: unknown partition table
Starting the hotplug events dispatcher udevd
Synthesizing initial hotplug evenudevd (1976): /proc/1976/oom_adj is deprecated, please use /proc/1976/oom_score_adj instead.
ts
uuc 0.4 [built Aug 16 2013 01:24:08]
UTP: Waiting for device to appear
UTP: file/device node /dev/utp already exists
cpu_id is 0
其实这时候已经就完成了,只不过串口不再接受输入,也就是说并不能再用手动的形式执行MGFtools下边的代码了。包括分区,dd命令都不可以了。
如果这时候连接上OTG,会直接被发现,不用像在u-boot哪里输入download命令。仅此而已,自己走了弯路。。。

使用特权

评论回复
36
FSL_TICS_Rita| | 2015-1-6 17:24 | 只看该作者
a1028732302 发表于 2015-1-6 15:04
忘了这边还有帖子没结,后来解决了,简单分享下:
执行:
bootm 1080000 10c00000程序就会卡在

楼主问题解决就好,非常感谢楼主分享解决办法啊~~

使用特权

评论回复
37
ihongyi| | 2016-11-30 12:26 | 只看该作者
求教。。有人知道linux怎么读取emmc的vid和pid吗

使用特权

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

本版积分规则