CN102708075A - 一种sd卡硬件控制装置及控制方法 - Google Patents
一种sd卡硬件控制装置及控制方法 Download PDFInfo
- Publication number
- CN102708075A CN102708075A CN2012101511486A CN201210151148A CN102708075A CN 102708075 A CN102708075 A CN 102708075A CN 2012101511486 A CN2012101511486 A CN 2012101511486A CN 201210151148 A CN201210151148 A CN 201210151148A CN 102708075 A CN102708075 A CN 102708075A
- Authority
- CN
- China
- Prior art keywords
- card
- read
- file
- write
- memory card
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种SD卡硬件控制装置及控制方法,属SD卡控制技术领域。该装置由寄存器组、状态机、Avalon主端口、Avalon从端口、CRC7和CRC16校验模块组成,可以控制SD卡每次读写若干扇区,无需CPU的干预。本发明控制方法还提供了相应的FAT16文件系统设计方法,通过编写硬件控制器的驱动函数,构造文件系统操作函数,最终在SD卡上实现FAT16文件系统的操作,使读写后的SD卡可以直接与电脑等其他平台交换文件。本发明大大提高了SD卡读写速度和CPU利用率,方便了对SD卡进行文件管理,只需把数据接口稍加修改,便可移植到别的嵌入式系统中,具有广阔的应用前景。
Description
技术领域
本发明涉及一种在Nios Ⅱ嵌入式系统下的SD卡硬件控制装置及控制方法,属SD卡控制技术领域。
背景技术
SD卡是一种基于半导体快闪记忆器的新一代记忆设备,具有大容量、高速度和低功耗等特点,被广泛应用于手机、数码相机等消费类电子设备和工业控制领域,目前越来越多的电子设备提供SD卡扩展接口。在嵌入式系统中,一般是通过软件控制MCU的IO口模拟SD卡的时序,实现SD卡的初始化和读写。此种方式速度较慢,无法满足大数据量传输的要求,严重影响了SD卡的使用效率,且占用太多的MCU资源,阻碍整个系统的性能提高。《电子技术应用》杂志2009年7月第7期38-41页《基于ARM7的SD卡读写控制在数据采集系统中的应用》一文即是采用这种方法实现SD卡的控制。
此外,在嵌入式系统环境下可以很容易地实现SD卡的基本读写操作,但这种情况下的SD卡很难与PC机等其他平台进行数据交换,因此有必要构建SD卡的文件系统。FAT16文件系统实现方便,管理性能好,很适合管理SD卡中的文件。
Nios Ⅱ嵌入式系统属于一种可编程的片上系统(SOPC),它可以在一个FPGA 芯片中实现Nios Ⅱ嵌入式处理器、Avalon系统总线、自定义IP核和各种硬件接口。由于FPGA可以重复编程,且可以构建各种硬件功能模块,因此,这种嵌入式系统开发周期短,功耗低,功能易于扩展,在各领域得到迅速推广。
发明内容
本发明的目的是为了克服上述技术中的不足,在可配置的Nios Ⅱ嵌入式系统平台上,提供了一种SD卡硬件控制装置及控制方法,以有效提高SD卡的初始化和读写速度,实现对SD卡文件的有效管理,方便SD卡和各种平台的数据交换。
为实现上述目的,本发明采用以下技术方案:
一种SD卡硬件控制装置,包括Avalon主端口、Avalon从端口、寄存器组、CRC7校验模块、CRC16校验模块和状态机,其特征在于寄存器组包括状态移位寄存器、控制寄存器、中断使能寄存器、内存地址寄存器和数据移位寄存器,Avalon主端口和寄存器组中的数据移位寄存器相连接;Avalon从端口分别和寄存器组中的状态移位寄存器、控制寄存器、中断使能寄存器及内存地址寄存器相连接;CRC7校验模块分别和寄存器组中的状态移位寄存器和控制寄存器相连接;CRC16校验模块和寄存器组中的数据移位寄存器相连接;状态机分别和寄存器组、CRC7校验模块及CRC16校验模块相连接;Avalon主端口和外部的SDRAM控制器相连接;Avalon从端口和外部的Nios Ⅱ处理器相连接;SD卡硬件控制装置通过数据线、控制线和SD卡相连接。
上述的状态机是一个状态控制器,它是由Verilog语言编写,一般称为状态机,作为模块烧写到FPGA中,实现预期的功能。
本发明SD卡硬件控制装置由Verilog硬件描述语言设计,可以方便地挂接在Nios Ⅱ嵌入式系统的Avalon总线上,从而有效控制系统中的SD卡,实现SD卡的大数据量吞吐。该装置控制SD卡工作在SD模式,各部分的功能如下:
Avalon主端口:发起一次数据传输,实现SD卡与外设内存的数据交互。
Avalon从端口:实现Nios Ⅱ处理器对SD卡硬件控制装置的控制,接收来自处理器的控制信号。
寄存器组:该装置的驱动程序通过操作寄存器组与硬件通信,实现SD卡的初始化和读写操作。状态寄存器具有移位功能,可以寄存SD卡返回的状态信息,数据寄存器也具有移位功能,从而实现数据的发送和接收。
状态机,实现SD卡硬件控制装置内部的状态控制,使得该装置可以按顺序对SD卡上电复位,发送控制命令,接收响应以及读写SD卡。
CRC7校验模块,实现对SD卡控制命令的校验。
CRC16校验模块,实现对传输的SD卡数据块的校验。
在该装置内部,Avalon主端口与数据移位寄存器通过数据连接线进行双向的数据传输,Avalon从端口与其他寄存器相连,实现处理器与SD卡控制器的通信。最后,数据移位寄存器连接到CRC16校验模块,完成数据块的校验,控制寄存器连接到CRC7校验模块进行控制命令的校验。这些模块都在状态机的有效控制下,完成对SD卡的初始化,发送控制命令,接收应答响应和读写SD卡。状态机实现所有的SD卡命令索引、响应分析及对发送和接收数据通道的控制。该装置是基于Nios Ⅱ嵌入式系统设计的,因此它还需连接一些外部硬件,与其相连的外部硬件的功能如下:
Nios Ⅱ处理器:发起对SD卡的初始化和读写操作,实现对SD卡硬件控制装置的控制。
SDRAM控制器:控制外接的SDRAM,以便存储从SD卡读出或将要写入SD卡的数据。
SD卡:即是本装置控制的对象。
一种上述SD卡硬件控制装置对SD卡进行控制的方法,步骤如下:
(1)在Nios ⅡIDE开发环境下编写SD卡硬件控制装置的设备驱动函数,设备驱动函数通过对寄存器映像的操作实现与硬件控制装置的通信,完成对SD卡的初始化和读写操作,这些设备驱动函数包括file_list,cluster_search,read_SD,write_SD函数;
(2)根据上一步编写的设备驱动函数,构造出SD卡FAT16文件系统的API函数,为应用层的开发提供标准的API函数接口,这些API函数包括f_mount,f_open,f_write,f_read,f_delete函数;
(3)调用上一步构造的API函数,即能在SD卡中创建文件、读写文件及删除文件,完成对SD卡中FAT16文件的操作,通过FAT16文件系统读写本发明装置中的SD卡就像在电脑上读写SD卡一样方便,并能使SD卡直接与电脑的操作系统交换文件;
(4)对硬件系统上电复位,包括对SD卡进行初始化,使SD卡进入工作状态;
(5)NiosⅡ处理器将要读写的扇区号、读写的方式、内存的起始地址以及要读写的扇区个数信息发送给SD卡硬件控制装置,该装置将其转换为符合SD卡物理层标准的SD卡命令格式并送到SD卡;
(6)SD卡硬件控制装置接收SD卡返回的应答信号,将有效信息寄存到状态寄存器中,Nios Ⅱ处理器通过Avalon从端口读取这些信息,从而获知SD卡的状态;
(7)启动SD卡的读写,此时读写由Avalon主端口控制,读写过程在SD卡和SDRAM之间进行,无需Nios Ⅱ处理器的干预,有效提高了处理器的工作效率,增大了SD卡数据吞吐率:
a.首先读取SD卡的FAT表和FDT表,将非空目录项组成一个链表,通过遍历链表得到根目录下所有文件和文件夹信息;
b.读取文件时先从FDT表中获取该文件起始簇号信息,然后根据FAT表得到文件的簇链;
c.由此簇链找到文件的对应扇区;
d.读取这些扇区的内容即是文件的内容,写入文件的方法与此类似;
(8)判断读写是否完成,是则结束任务,否则转入步骤(5)。
上述步骤(1)中设备驱动函数中的file_list函数、cluster_search函数、read_SD函数及write_SD函数是通用的公知函数。
上述步骤(2)中API函数中的f_mount函数、f_open函数、f_write函数、f_read函数及f_delete函数是通用的公知函数。
本发明的SD卡硬件控制装置在读写SD卡时只需软件发起读写,之后无需处理器的控制,全由硬件控制,有效提高了SD卡数据读写速度和嵌入式处理器的工作效率。本发明的SD卡硬件控制装置的控制方法设计了与该装置匹配的FAT16文件系统,完善了SD卡文件管理功能,提高了SD卡的使用效能。该装置和方法具有很强的兼容性,可以很容易移植到各种嵌入式系统中,具有广阔的应用前景。
附图说明
图1是本发明装置SD卡硬件控制装置的结构示意图。
图2是上述SD卡硬件控制装置的控制方法的流程框图;其中(1)-(8)为其各个步骤。
具体实施方式
下面结合附图和实施例对本发明做进一步说明,但不限于此。
实施例1:
本发明实施例1如图1所示,一种SD卡硬件控制装置,包括Avalon主端口、Avalon从端口、寄存器组、CRC7校验模块、CRC16校验模块和状态机,其特征在于寄存器组包括状态移位寄存器、控制寄存器、中断使能寄存器、内存地址寄存器和数据移位寄存器,Avalon主端口和寄存器组中的数据移位寄存器相连接;Avalon从端口分别和寄存器组中的状态移位寄存器、控制寄存器、中断使能寄存器及内存地址寄存器相连接;CRC7校验模块分别和寄存器组中的状态移位寄存器和控制寄存器相连接;CRC16校验模块和寄存器组中的数据移位寄存器相连接;状态机分别和寄存器组、CRC7校验模块及CRC16校验模块相连接;Avalon主端口和外部的SDRAM控制器相连接;Avalon从端口和外部的Nios Ⅱ处理器相连接;SD卡硬件控制装置通过数据线、控制线和SD卡相连接。
实施例2:
一种上述SD卡硬件控制装置对SD卡进行控制的方法,如图2所示,步骤如下:
(1)在Nios ⅡIDE开发环境下编写SD卡硬件控制装置的设备驱动函数,设备驱动函数通过对寄存器映像的操作实现与硬件控制装置的通信,完成对SD卡的初始化和读写操作,这些设备驱动函数包括file_list,cluster_search,read_SD,write_SD函数;
(2)根据上一步编写的设备驱动函数,构造出SD卡FAT16文件系统的API函数,为应用层的开发提供标准的API函数接口,这些API函数包括f_mount,f_open,f_write,f_read,f_delete函数;
(3)调用上一步构造的API函数,即能在SD卡中创建文件、读写文件及删除文件,完成对SD卡中FAT16文件的操作,通过FAT16文件系统读写本发明装置中的SD卡就像在电脑上读写SD卡一样方便,并能使SD卡直接与电脑的操作系统交换文件;
(4)对硬件系统上电复位,包括对SD卡进行初始化,使SD卡进入工作状态;
(5)Nios Ⅱ处理器将要读写的扇区号、读写的方式、内存的起始地址以及要读写的扇区个数信息发送给SD卡硬件控制装置,该装置将其转换为符合SD卡物理层标准的SD卡命令格式并送到SD卡;
(6)SD卡硬件控制装置接收SD卡返回的应答信号,将有效信息寄存到状态寄存器中,Nios Ⅱ处理器通过Avalon从端口读取这些信息,从而获知SD卡的状态;
(7)启动SD卡的读写,此时读写由Avalon主端口控制,读写过程在SD卡和SDRAM之间进行,无需Nios Ⅱ处理器的干预,有效提高了处理器的工作效率,增大了SD卡数据吞吐率:
a.首先读取SD卡的FAT表和FDT表,将非空目录项组成一个链表,通过遍历链表得到根目录下所有文件和文件夹信息;
b.读取文件时先从FDT表中获取该文件起始簇号信息,然后根据FAT表得到文件的簇链;
c.由此簇链找到文件的对应扇区;
d.读取这些扇区的内容即是文件的内容,写入文件的方法与此类似;
(8)判断读写是否完成,是则结束任务,否则转入步骤(5)。
Claims (2)
1.一种SD卡硬件控制装置,包括Avalon主端口、Avalon从端口、寄存器组、CRC7校验模块、CRC16校验模块和状态机,其特征在于寄存器组包括状态移位寄存器、控制寄存器、中断使能寄存器、内存地址寄存器和数据移位寄存器,Avalon主端口和寄存器组中的数据移位寄存器相连接;Avalon从端口分别和寄存器组中的状态移位寄存器、控制寄存器、中断使能寄存器及内存地址寄存器相连接;CRC7校验模块分别和寄存器组中的状态移位寄存器和控制寄存器相连接;CRC16校验模块和寄存器组中的数据移位寄存器相连接;状态机分别和寄存器组、CRC7校验模块及CRC16校验模块相连接。Avalon主端口和外部的SDRAM控制器相连接;Avalon从端口和外部的Nios Ⅱ处理器相连接;SD卡硬件控制装置通过数据线、控制线和SD卡相连接。
2.一种如权利要求1所述的SD卡硬件控制装置对SD卡进行控制的方法,步骤如下:
(1)在Nios ⅡIDE开发环境下编写SD卡硬件控制装置的设备驱动函数,设备驱动函数通过对寄存器映像的操作实现与硬件控制装置的通信,完成对SD卡的初始化和读写操作,这些设备驱动函数包括file_list,cluster_search,read_SD,write_SD函数;
(2)根据上一步编写的设备驱动函数,构造出SD卡FAT16文件系统的API函数,为应用层的开发提供标准的API函数接口,这些API函数包括f_mount,f_open,f_write,f_read,f_delete函数;
(3)调用上一步构造的API函数,即能在SD卡中创建文件、读写文件及删除文件,完成对SD卡中FAT16文件的操作,并能使SD卡直接与电脑的操作系统交换文件;
(4)对硬件系统上电复位,包括对SD卡进行初始化,使SD卡进入工作状态;
(5)Nios Ⅱ处理器将要读写的扇区号、读写的方式、内存的起始地址以及要读写的扇区个数信息发送给SD卡硬件控制装置,该装置将其转换为符合SD卡物理层标准的SD卡命令格式并送到SD卡;
(6)SD卡硬件控制装置接收SD卡返回的应答信号,将有效信息寄存到状态寄存器中,Nios Ⅱ处理器通过Avalon从端口读取这些信息,从而获知SD卡的状态;
(7)启动SD卡的读写,此时读写由Avalon主端口控制,读写过程在SD卡和SDRAM之间进行:
a.首先读取SD卡的FAT表和FDT表,将非空目录项组成一个链表,通过遍历链表得到根目录下所有文件和文件夹信息;
b.读取文件时先从FDT表中获取该文件起始簇号信息,然后根据FAT表得到文件的簇链;
c.由此簇链找到文件的对应扇区;
d.读取这些扇区的内容即是文件的内容,写入文件的方法与此类似;
(8)判断读写是否完成,是则结束任务,否则转入步骤(5)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101511486A CN102708075A (zh) | 2012-05-15 | 2012-05-15 | 一种sd卡硬件控制装置及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101511486A CN102708075A (zh) | 2012-05-15 | 2012-05-15 | 一种sd卡硬件控制装置及控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102708075A true CN102708075A (zh) | 2012-10-03 |
Family
ID=46900872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101511486A Pending CN102708075A (zh) | 2012-05-15 | 2012-05-15 | 一种sd卡硬件控制装置及控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102708075A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309828A (zh) * | 2013-05-31 | 2013-09-18 | 杭州晟元芯片技术有限公司 | 一种sd卡从控制器及控制方法 |
CN103324589A (zh) * | 2013-06-26 | 2013-09-25 | 四川九洲电器集团有限责任公司 | Sd卡控制系统 |
CN106295432A (zh) * | 2016-08-09 | 2017-01-04 | 上海盈方微电子有限公司 | 一种sd卡的数据检测方法及系统及外接sd卡的卡槽 |
CN106569481A (zh) * | 2016-11-03 | 2017-04-19 | 航天科工防御技术研究试验中心 | 一种fpga重构装置和方法 |
CN108268414A (zh) * | 2018-03-26 | 2018-07-10 | 福州大学 | 基于spi模式的sd卡驱动器及其控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605048A (zh) * | 2008-06-11 | 2009-12-16 | 北京泰美世纪科技有限公司 | 对手机电视发射端进行网络管理的方法、系统和装置 |
CN102436428A (zh) * | 2011-11-11 | 2012-05-02 | 华南理工大学 | 基于fpga的sd卡文件管理控制器 |
-
2012
- 2012-05-15 CN CN2012101511486A patent/CN102708075A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605048A (zh) * | 2008-06-11 | 2009-12-16 | 北京泰美世纪科技有限公司 | 对手机电视发射端进行网络管理的方法、系统和装置 |
CN102436428A (zh) * | 2011-11-11 | 2012-05-02 | 华南理工大学 | 基于fpga的sd卡文件管理控制器 |
Non-Patent Citations (4)
Title |
---|
何伟等: "基于FPGA的SD卡控制器设计及应用", 《世界科技研究与发展》 * |
何伟等: "基于SoPC的SD卡控制器IP核的设计", 《电子技术应用》 * |
李欢等: "基于Avalon总线的SD卡读写控制器的设计", 《现代电子技术》 * |
杨爽等: "基于NiosII和SD卡的数据采集系统的设计", 《核电子学与探测技术》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309828A (zh) * | 2013-05-31 | 2013-09-18 | 杭州晟元芯片技术有限公司 | 一种sd卡从控制器及控制方法 |
CN103309828B (zh) * | 2013-05-31 | 2016-03-09 | 杭州晟元数据安全技术股份有限公司 | 一种sd卡从控制器及控制方法 |
CN103324589A (zh) * | 2013-06-26 | 2013-09-25 | 四川九洲电器集团有限责任公司 | Sd卡控制系统 |
CN106295432A (zh) * | 2016-08-09 | 2017-01-04 | 上海盈方微电子有限公司 | 一种sd卡的数据检测方法及系统及外接sd卡的卡槽 |
CN106569481A (zh) * | 2016-11-03 | 2017-04-19 | 航天科工防御技术研究试验中心 | 一种fpga重构装置和方法 |
CN106569481B (zh) * | 2016-11-03 | 2019-03-26 | 航天科工防御技术研究试验中心 | 一种fpga重构装置和方法 |
CN108268414A (zh) * | 2018-03-26 | 2018-07-10 | 福州大学 | 基于spi模式的sd卡驱动器及其控制方法 |
CN108268414B (zh) * | 2018-03-26 | 2023-07-21 | 福州大学 | 基于spi模式的sd卡驱动器及其控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101839974B (zh) | 一种双接口雷达数据记录仪 | |
CN101498994B (zh) | 一种固态硬盘控制器 | |
CN103034603B (zh) | 多通道闪存卡控制装置及其控制方法 | |
CN102063274B (zh) | 存储阵列和存储系统及数据访问方法 | |
CN201583944U (zh) | 一种采用fpga实现基于pci总线的实时采集卡 | |
CN103051687B (zh) | 一种将应用业务部署到云存储虚拟机的系统及方法 | |
CN103500076A (zh) | 一种基于多通道slc nand与dram缓存的新usb协议计算机加速设备 | |
CN102708075A (zh) | 一种sd卡硬件控制装置及控制方法 | |
CN107957970A (zh) | 一种异构多核的通讯方法及固态硬盘控制器 | |
CN203812236U (zh) | 一种基于处理器和现场可编程门阵列的数据交换系统 | |
CN111475436A (zh) | 一种基于pcie交换网络的嵌入式高速sata存储阵列系统 | |
CN201732160U (zh) | 一种双接口雷达数据记录仪 | |
CN102521184A (zh) | 一种在pci总线上实现数据高速传输的方法 | |
CN101339492A (zh) | 原生sata的固态硬盘控制器 | |
CN102736594A (zh) | 一种智能配电终端统一平台模块化设计方法 | |
CN103500075A (zh) | 一种基于新材料的外接的计算机加速设备 | |
CN205986931U (zh) | 一种基于NVMe SSD的交换机 | |
CN100383721C (zh) | 一种异构双系统总线的对象存储控制器 | |
CN101788888A (zh) | 一种实现目标端驱动的方法及该目标端驱动 | |
CN105955919A (zh) | 基于FPGA的多MCU读写NANDFlash的实现方法 | |
CN101251831B (zh) | 支持主从设备互换的移动存储器和主从设备互换方法 | |
CN105630400A (zh) | 高速海量数据存储系统 | |
WO2006078983A2 (en) | Low-power solid state storage controller for cell phones and other portable appliances | |
CN111339030B (zh) | 一种基于fpga的云文件系统及其数据处理方法 | |
CN102508807B (zh) | 一种基于sparc v8处理器的总线结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121003 |