完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
希望懂uboot的大神们进来看看,指教下我这个问题下面该如何调试。谢谢!
imx6dl在eMMC启动方式启动时uboot阶段卡死时串口输出信息如下:
板子是自己做的板子,参考的是OKMX6X-S3(imx6dl)的开发板。 eMMC芯片型号是MT29F128G08,eMMC接在SDHC3上。 1、使用mfgtools工具已经将uboot和rootfs烧写成功了,但是在启动的时候卡在了上面输出; 2、经过自己在uboot中添加打印输出信息发现其卡在了eMMC模块处理部分,具体函数流程如下: mmc_startup-> init_part->test_part_dos->mmc_bread->mm_send_cmd->esdhc_send_cmd时在while (!(readl(®s->irqstat) & IRQSTAT_BRR)); 处进入死循环; 说明:eMMC的product已经读取到了,并且跟手册上的描述一致。 3、在while (!(readl(®s->irqstat) & IRQSTAT_BRR));前打印输出SDHC3相关寄存器如下:
发现在有如下几个寄存器不同之处: 1)uSDHCx_PRES_STATE a)bit[11] Buffer Read Enable This status bit is used for non-DMA read transfers. The uSDHC implements an internal buffer to transfer data efficiently. This read only flag indicates that valid data exists in the host side buffer. If this bit is high, valid data greater than the watermark level exist in the buffer. A change of this bit from 1 to 0 occurs when some reads from the buffer(read DATPORT (Base + 0x20)) are made and the buffer hasn't valid data greater than the watermark level. A change of this bit from 0 to1 occurs when there is enough valid data ready in the buffer and the Buffer Read Ready interrupt has been generated and enabled. 1 Read enable 0 Read disable b)bit[7] SD Clock Gated Off Internally This status bit indicates that the SD Clock is internally gated off, because of buffer over / under-run or read pause without read wait assertion, or the driver set FRC_SDCLK_ON bit is 0 to stop the SD clock in idle status. Set IPG_PERCLK_SOFT_EN and CARD_CLK_SOFT_EN to 0 also gate off SD clock. This bit is for the Host Driver to debug data transaction on the SD bus. 1 SD Clock is gated off. 0 SD Clock is active c)bit[2] 1 DATA Line Active 0 DATA Line Inacti 2)uSDHCx_INT_STATUS a)bit[5] Buffer Read Ready This status bit is set if the Buffer Read Enable bit, in the Present State register, changes from 0 to 1. Refer to the Buffer Read Enable bit in the Present State register for additional information. 1 Ready to read buffer 0 Not ready to read buffer 发现有问题的板子刚好跟开发板在上面的位相反。 故想请教下,mmc_startup-> init_part->test_part_dos->mmc_bread->mm_send_cmd->esdhc_send_cmd这个函数流程具体作用是干什么的?然后这个问题可通过什么方式来进行下一步的调试。 谢谢! |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
722 浏览 0 评论
1123 浏览 1 评论
2505 浏览 5 评论
2840 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2685 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
664浏览 9评论
679浏览 7评论
682浏览 5评论
666浏览 5评论
imx6dl芯片与imx6q芯片互换启动无反应请问是什么问题呢
287浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 00:15 , Processed in 1.229104 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号