CN102708075A - 一种sd卡硬件控制装置及控制方法 - Google Patents

一种sd卡硬件控制装置及控制方法 Download PDF

Info

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
Application number
CN2012101511486A
Other languages
English (en)
Inventor
王祖强
李淑青
周小龙
宋健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN2012101511486A priority Critical patent/CN102708075A/zh
Publication of CN102708075A publication Critical patent/CN102708075A/zh
Pending legal-status Critical Current

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

一种SD卡硬件控制装置及控制方法
技术领域
本发明涉及一种在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)。
CN2012101511486A 2012-05-15 2012-05-15 一种sd卡硬件控制装置及控制方法 Pending CN102708075A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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卡文件管理控制器

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
何伟等: "基于FPGA的SD卡控制器设计及应用", 《世界科技研究与发展》 *
何伟等: "基于SoPC的SD卡控制器IP核的设计", 《电子技术应用》 *
李欢等: "基于Avalon总线的SD卡读写控制器的设计", 《现代电子技术》 *
杨爽等: "基于NiosII和SD卡的数据采集系统的设计", 《核电子学与探测技术》 *

Cited By (8)

* Cited by examiner, † Cited by third party
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