NIOS2下的SDHC调试

本想自己做个简单易用的SPI控制器IPcore挂在NIOS2处理器上,整理半天却发现组件库里有3wire SPI外设,看看软件说明书配置一下也是很easy的,于是放弃了自己DIY组件的打算。

这两天调试了一下,之前用SF-EP1C板调试过2G以下的SD卡。这下面对SDHC卡,由于之前的经验,配合官方又臭又长的2.0的规格书(话说回来,最终帮大忙的还是这个spec,还是很享受那句话“忠于原文”),今天把SDHC的底层驱动函数稍微都整理好了,过阵子可以交给同事继续软件开发工作了。

这个SDHC的调试过程还有那么些讲究,这里特权同学也啰嗦一下,也许能给读者您带来一点灵感。

1.  通常在调试情况下,如果发给SDHC卡发送CMD0命令,SDHC一般都会回到IDLE。但是特权发现有些时候不可以,那么这时候要是不重新上下电,很可能你会耗费大量时间郁闷在某阶段调试程序怎么老是不通。所以特权同学刚开始调试时的做法很简单,给FPGA的配置芯片(同时烧录FPGA配置数据和软件程序的存储器)烧录软件调试对应的硬件FPGA配置文件以及一个对与SDHC接口的SPI总线不做任何处理(初始化为高电平)的软件程序。然后每次运行调试软件时重新上一次电。这样保证万无一失,绝不会死在SDHC不回IDLE的窘境下。

2.  说点实在的,上电初始化的过程依次需要发送以下指令和回复:

CMD0—R1                 sdhc_write_cmd(0,0);—0x01

CMD8—R7                 sdhc_write_cmd(8,0x1aa);—0x01000001aa

CMD58—R3               sdhc_write_cmd(58,0);—0x0100ff8000

ACMD41—R1            sdhc_write_cmd(55,0);--0x01

sdhc_write_cmd(41,0x40000000);--0x00

CMD58—R3               sdhc_write_cmd(58,0);—0x01c0ff8000

其中,例如sdhc_write_cmd(58,0,0x95); 58表示index,0表示argument。具体涵义准备深究的人肯定都明白了。

最后,发两个图片作证,哈哈!

读取DBR扇区数据:

往某一扇区写入数据:

说实话,特权同学并不愿意很深入去做软件。不过做一些底层的驱动工作,完成一些基本的时序接口的设计也算是硬件工程师分内的工作。一点不懂软件的硬件工程师不是一个合格的硬件工程师,至少他将来很难成为一个称职的系统工程师。所以,在年轻的时候,苦活脏活累活都是应该好好去做的……

转载于:https://www.cnblogs.com/GL-BBL/archive/2012/08/18/2645651.html

转特权:NIOS2下的SDHC调试相关推荐

  1. 命令行界面命令模式及相互切换、交换机命令行操作模式及模式间的切换过程、命令行界面基本功能、命令的快捷键功能、交换机基本配置命令、交换机特权模式下基本命令、交换机全局配置模式下基本命令、

    1.命令行界面命令模式及相互切换   锐捷交换机命令行管理界面分成若干不同的模式,用户当前所处的命令模式决定了可以使用的命令,不可跨模式执行命令.以下给出三种基本模式.   用户模式(User EXE ...

  2. ubuntu18.04下双机驱动调试

    环境搭建: https://blog.51cto.com/haidragon/2337256 这里要先说下如果要下内核断点要先在编译前去掉写保护,但是下自己写的驱动可以不要. 第二个最好编译完后压缩v ...

  3. 一份简单的在 Linux下编译及调试 C 代码的指南

    摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...

  4. matlab debug出现k,MATLAB下的程序调试

    文章主要内容摘自<MATLAB 7.0从入门到精通>,求是科技编著. 程序错误一般分为两种:语法错误和逻辑错误.对于语法错误通常MATLAB会报错,并指出错误所在位置方便用户纠正.对于逻辑 ...

  5. linux中多进程调试,linux下用gdb调试多进程

    今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的. 一.多进程调试的命令 1.set follo ...

  6. Linux下的程序调试——GDB

    无论是多么优秀的程序员,都难以保证自己在编写代码时不会出现任何错误,因此调试是软件开发过程中的一个必不可少的 组成部分.当程序完成编译之后,它很可能无法正常运行,或者会彻底崩溃,或者不能实现预期的功能 ...

  7. Linux下获取xml调试信息等级

    Linux下获取XML调试信息等级 #ifndef _LOG_H_ #define _LOG_H_#include <stdio.h> #include <string.h> ...

  8. Jquery下的Ajax调试方法

    Jquery下的Ajax调试方法 介绍 本文介绍Jquery下的Ajax调试方法:很多调试方法,就是一点就通,但是,在还没有通之前,会让人困惑,不知所以然: Ajax 可以为用户提供更为丰富的用户体验 ...

  9. openstack windows下远程debug调试(komodo)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

最新文章

  1. [转帖]Linux中的15个基本‘ls’命令示例
  2. React+webpack热更新配置
  3. R语言聚类算法的应用实例
  4. Mac下crontab -e没结果的解决办法
  5. java oauth2.0_教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
  6. HDU.1009 FatMouse' Trade
  7. puppet详解(七)——cron资源详解
  8. 你与30W奖金只差一个 Apache Flink 极客挑战赛的报名
  9. 算法 - 差分进化(DE)算法
  10. python k线斜率计算公式_通达信K线斜率指标公式
  11. MATLAB Cholesky分解
  12. 微信小程序实现扫码登录网站
  13. Effective Java 2.0_中英文对照_Item 7
  14. android——java.lang.IllegalStateException: Fatal Exception thrown on Scheduler
  15. 洛谷1489 猫狗大战
  16. 虚拟机克隆之后的IP修改问题
  17. 医疗环境电子数据交换标准HL7 v3.0的新进展
  18. android按住录音按钮_Android模仿微信录音、发送语音效果实现
  19. 项目管理小小知识点总结
  20. 埃斯顿机器人 王杰高_卓越工程师讲坛——南京埃斯顿机器人工程有限公司总经理王杰高博士做客我校新年首期卓越工程师讲坛...

热门文章

  1. 计算机改名字sql2008不能登录,Win7电脑修改计算机名称后SQL2008数据库无法登录提示无法连接到load怎么处理...
  2. ubuntu18.04 编译rtt-lwr
  3. 教你几招解决电脑假死现象
  4. linux内核协议栈 TCP层数据发送之发送新数
  5. js 数字转为罗马数字(互转换),I 、II 、 III 、IV、V
  6. android仿最新版本微信相册--附源码
  7. 用程序 揭秘 用手机号尾号暴露你年龄的 骗局
  8. 数据安全被篡改的风险分析解决方案
  9. 试图共享文件夹时出现错误,没有启动服务器服务,此时尚未创建共享资源,试图共享时出现错误,没有启动服务器服务,此时尚未创建共享资源...
  10. 利用交通实时数据和社交媒体数据对飓风疏散期间的交通需求进行预测