完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在为基于 SDK 版本的 iMX6Q 编写裸机 uSDHC 驱动程序,但遇到读取问题(尚未尝试写入)。我可以向 SDHC 卡发送命令并得到正确的响应,因此发送命令不是问题。我相信设置读取的代码也是正确的,包括 adma2 的设置。我正在使用 CMD17(读取单块)尝试使用 Boundary Devices 的已知良好 OTS 板读取已知良好 (16GB) SDCARD 的 MBR(扇区 0)。我用值 0x5a 初始化读取缓冲区(512 字节)以检测读取的内容。这是我得到的(缓冲区从 0x104098a0 开始):
最后的 55 aa 是正确的,一些 00 字节也可能是正确的。由于没有字节是 0x5a,因此从某处读取了 512 个字节。 以下是数据应该是什么: 以下是发送命令之前的寄存器: 下面是读取后的寄存器(注意INT_STATUS已经被清除): 在我的设置中,我使用了三个 adma2 描述符。第一个覆盖从缓冲区的开始直到第一个缓存行的开始。读取的数据被读入一个单独的未缓存缓冲区(在 DRAM 中),然后复制到实际缓冲区中。第二个用于读取其余数据直至最后一个完整的 32 字节(最后一个完整缓存行)。该数据被读入物理内存,然后虚拟内存失效,迫使缓存重新加载。第三个描述符用于读取剩余的任何内容,其作用与第一个描述符相同。 adma2 描述符在本例中设置(在未缓存的 DRAM 中),缓冲区在缓存行上启动,因此仅使用两个描述符(不需要第三个)。似乎没有任何描述符错误 (AMDA_ERR_STATUS = 0),使用的 2 个描述符的地址是 0x184000C0 和 0x184000C8。ADMA_SYS_ADDR reg 显示 0x184000D0,这表明所使用的 2 个描述符已被执行。INT_STATUS reg 中没有报告错误。 它出现某种计时问题或数据未准备好,卡可以足够快地发送数据 (@25MHz)。CIHB 和 CDIHB 都被选中,如您在附加代码中所见。 有什么想法可以从哪里开始寻找有关数据为何不正确的错误? |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1912个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36362 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4401 浏览 0 评论
6055 浏览 1 评论
6768 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4218 浏览 0 评论
624浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
620浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
611浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
697浏览 2评论
799浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 07:58 , Processed in 0.889513 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号