打印
[i.MX]

MFG TOOL烧写 SPI_NOR和eMMC 时的问题

[复制链接]
3994|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yorda|  楼主 | 2015-1-25 20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yorda 于 2015-1-25 21:31 编辑

参考Sabre SDB做的自己板子,经检查各种电源都应该没问题,拟使用SPI_NOR引导uboot和eMMC存uImage和rootfs,emmc接到SD3上,用MFG烧写时,BootStrap和烧写SPI_NOR都过去了,MFG执行到
<CMD state="Updater" type="push" body="$ echo 8 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access user partition and enable boot partion 1 to boot</CMD>时出错了

现在貌似MCU没有找到eMMC,因为加电后示波器量SD3_CMD没信号,而SD4_CMD却有信号

请教大侠们,是不是不能直接使用SDB的u-boot,需要自己修改配置啊,u-boot下的includes/configs/、board/freescale/下的文件怎么改,改什么? 另外,内核要不要修改,修改什么?谢谢

如果需要修改uboot和kernel哪里可以下载到patch?  再次感谢

我的ucl2.xml是这样:

        <CMD state="BootStrap" type="boot" body="BootStrap" file ="u-boot-mx6q-sabresd.bin" >Loading uboot.</CMD>
        <CMD state="BootStrap" type="load" file="uImage" address="0x10800000"
                loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Doing Kernel.</CMD>
        <CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot" address="0x10C00000"
                loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Doing Initramfs.</CMD>
        <CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>

        <!--burn the uboot to SPI-NOR: -->
        <CMD state="Updater" type="push" body="$ flash_erase /dev/mtd0 0 0">Erasing Boot partition</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/mtd0 bs=512">write U-Boot to SPI-NOR</CMD>

        <!-- partitioning the eMMC: -->
        <CMD state="Updater" type="push" body="$ echo 8 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access user partition and enable boot partion 1 to boot</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 SD card now...</CMD>

        <!-- burn the kernel: -->
        <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=1M seek=1 conv=fsync">write kernel image to emmc</CMD>

        <!-- burn the rootfs: -->
        <CMD state="Updater" type="push" body="$ mkfs.ext3 -j /dev/mmcblk0p1">Formatting rootfs partition</CMD>
        <CMD state="Updater" type="push" body="$ mkdir -p /mnt/mmcblk0p1"/>
        <CMD state="Updater" type="push" body="$ mount -t ext3 /dev/mmcblk0p1 /mnt/mmcblk0p1"/>
        <CMD state="Updater" type="push" body="pipe tar -jxv -C /mnt/mmcblk0p1" 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/mmcblk0p1">Unmounting rootfs partition</CMD>

        <CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>



相关帖子

沙发
FSL_TICS_Rita| | 2015-1-26 10:32 | 只看该作者
楼主你好:
1、当MFG烧写执行到
<CMD state="Updater" type="push" body="$ echo 8 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access user partition and enable boot partion 1 to boot</CMD>时出错,在串口终端显示什么信息呢?能否发给我看一下。
2、还有你这里是参考Sabre SDB,默认的SD4是给emmc使用的,而你是将emmc接到SD3上是有问题的。使用emmc的话建议你连接到SD4上。
3、关于代码的修改,请问你设计的板子和开发板有什么区别,也就是哪里做了改动呢?如果做了改动的话,是不能直接使用开发板上的Demo images的,要做修改先。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yorda + 1 赞一个!
板凳
yorda|  楼主 | 2015-1-27 19:31 | 只看该作者
本帖最后由 yorda 于 2015-1-27 19:36 编辑

FSL_TICS_Rita,不好意思,这两天调试加班开会啥的回复晚了。

问题已经解决,可以结贴了。

由于没有Sabre SDB的烧写用initramfs.cpio.gz.uboot文件系统源代码,所以没法对SD3进行支持,硬件工程师又没注意原来开发板是SD4,折腾了4、5天。

说一下解决思路,以备其它兄弟参考

思路:
1、用MFG下载自己的uboot和内核,uboot设置成nfs启动
2、采用网启动自己的nfs,读写SD3,也就是eMMC
3、在HyperTermial上一步一步执行(当然可以写成sh)MFG后续的分区、创建/dev/mmcblk0、下载内核、格式化、烧写文件系统啥的,就是启动后的烧写步骤里的sh指令
4、boot mode修改成10启动模式,断电启动就OK了

其实,就是恢复到arm7、arm9用串口一点一点烧写的时代,自己DIY

总结:
1、没有吃透imx6的资料啊,想当然了SD2~SD4
2、就是Freescale不厚道,提供了官方的MFG,开发板的uImage和initramfs.cpio.gz.uboot不提供源代码
看了我们有的国产的进口的所有开发板都是把miniSD卡和eMMC启动挂在SD4上了,估计都是没有这个烧写用的内核和文件系统源代码搞的

所以,强烈建议Freescale把源代码给各厂家,签个NDA也不费事啊!






使用特权

评论回复
地板
vigous1| | 2015-1-27 22:11 | 只看该作者
谢谢楼主的经验分享

使用特权

评论回复
5
FSL_TICS_Rita| | 2015-2-2 17:37 | 只看该作者
yorda 发表于 2015-1-27 19:31
FSL_TICS_Rita,不好意思,这两天调试加班开会啥的回复晚了。

问题已经解决,可以结贴了。

楼主问题解决了就好啊,关于SD建议楼主看我们官网的参考手册和数据手册以及参考设计。关于飞思卡尔官网提供的MFG客户都是可以使用的,不过客户要根据自己设计的板子编译出板子的images和mfgtool使用的firmware(如果DDR和开发板不一样的)initramfs.cpio.gz.uboot。实现起来不难的,官网文档中有说明的。
当然关于您提的宝贵的意见我们会认真考虑。
欢迎楼主有问题继续在本论坛中交流讨论哈~~

使用特权

评论回复
6
mini1986| | 2015-4-16 14:04 | 只看该作者
刚学imx6,感谢分享,关注中......

使用特权

评论回复
7
xiaoaide| | 2015-4-30 15:46 | 只看该作者
我前两天买了一个板子,TM就给了一张原理图别的啥也不给,还和官方的sabresd的DDR不一样,emmc也连的SD3上,这个烧写uboot和内核还有制作mfg的firmware可TM折腾死我了,最后都解决了,关于连接到SD3上的emmc的在linux内核中的board-mx6q_sabresd.c中mx6q_sabresd_sd3_data结构体的内容替换成mx6q_sabresd_sd4_data的内容就行了,esdhc_platform_data这个结构体决定着mmc驱动的实现方式,官方已经把mmc的驱动写的很全了所以改这一处就行了。改完这个内核中就有mmcblk0的驱动了,利用修改后的这个linux源码制作的mfg firmware也就不会报错了,不过还得在ulc.xml中修改/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config为/sys/devices/platform/sdhci-esdhc-imx.2/mmc_host/mmc0/mmc0:0001/boot_config

使用特权

评论回复
8
mleisure| | 2016-3-14 11:38 | 只看该作者
xiaoaide 发表于 2015-4-30 15:46
我前两天买了一个板子,TM就给了一张原理图别的啥也不给,还和官方的sabresd的DDR不一样,emmc也连的SD3上 ...

可是这样编译的不是运行时候的内核吗,跟烧写时候的不一样吧

使用特权

评论回复
9
lixuhui112| | 2016-3-25 14:06 | 只看该作者
本帖最后由 lixuhui112 于 2016-4-1 15:19 编辑

请问楼主boot mode是在哪里修改成10启动模式?

使用特权

评论回复
10
kyzf829| | 2016-4-8 22:08 | 只看该作者
学习下,收藏下

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝