硬件连接:
eMMC是连接到USDHC3上。
软件及工具:
参考的是飞凌imx6q/dl开发板设计的自己的板子,软件使用的飞凌imx6q/dl开发板相应的软件。
目前状况:
1、因之前eMMC烧写进去后(能确定东西已经烧写成功了),调整到eMMC启动时无任何输出,故采用如下方法继续调试软件
1)修改了uboot中的COMMAD参数,设置uImage文件大小和rootfs的地址及格式
2)修改了mfgtools中ucl2.xml中的地址,使uImage的大小可随意
3)上面2项修改后编译,将uxl2.xml中的烧写语句在修改成如下内容,可使系统直接在内存中跑起来
<LIST name="IMX6DL-NET-Test" desc="Choose Nand as media">
<CMD state="BootStrap" type="find" body="Recovery" timeout="180"/>
<CMD state="BootStrap" type="boot" body="Recovery" file ="firmware/net/u-boot.bin" >Loading uboot MTFC32GJWEF.</CMD>
<CMD state="BootStrap" type="load" file="firmware/net/uImage" address="0x10800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Doing Kernel.</CMD>
<CMD state="BootStrap" type="load" file="firmware/6q/initramfs.cpio.gz.uboot" address="0x10D00000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Doing Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
</LIST>
说明:系统运行起来说明我eMMC烧写肯定是烧写成功了的,因为rootfs用的是eMMC中烧写的东西,并且我创建文件后掉电,再重新按照上面的配置烧写,创建的文件依旧存在。
2、硬件调整后eMMC启动时有uboot的输出,但是输出到下面内容后就卡死
U-Boot 2009.08 (Oct 30 2018 - 16:09:33)
CPU: Freescale i.MX6 family TO1.3 at 792 MHz
Temperature: 57 C, calibration data 0x59b4fc7d
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 198000000Hz
emi_slow clock: 99000000Hz
ddr clock : 396000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6DL/Solo-SABRESD: unknown-board Board: 0x61013 [POR ]
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: fsl_esdhc_initialize 621 regs=0x2190000.....
DEBUG_INFO: mmc_register 1544......
DEBUG_INFO: usdhc_gpio_init index=1
fsl_esdhc_initialize 621 regs=0x2194000.....
DEBUG_INFO: mmc_register 1544......
DEBUG_INFO: usdhc_gpio_init index=2
fsl_esdhc_initialize 621 regs=0x2198000.....
DEBUG_INFO: mmc_register 1544......
DEBUG_INFO: usdhc_gpio_init index=3
fsl_esdhc_initialize 621 regs=0x219c000.....
DEBUG_INFO: mmc_register 1544......
FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
查找发现其在uboot程序的uboot-2009/drivers/mmc/imx_esdhc.c 中
函数esdhc_send_cmd的“while (!(readl(®s->irqstat) & IRQSTAT_BRR))”卡住了,读取到regs->irqstat的值为0,regs->irqstaten为0x157f513f,故想请教下esdhc_send_cmd其作用是什么?针对此问题有何建议?谢谢! |