专利名称:一种sd卡控制器的数据传输方法
技术领域:
本发明涉及SD卡技术领域,特别涉及一种SD卡控制器的数据传输方法。该数据传输方法可能区分传输的数据是用于实现SD卡存储功能的普通数据,还是用于扩展SD卡 功能或提高SD卡性能的私有数据,该私有数据可以用来实现SD卡的固件更新、二次开发、 安全控制以及硬件模块诊断等功能。
背景技术:
SD卡(Secure Digital Memory Card,中文翻译为安全数码卡)是一种基于半导 体快闪记忆器的新一代记忆设备,它在数码相机、个人数码助理(PDA)和多媒体播放器等 便携式装置上已广泛使用。目前,SD卡的应用越来越广,已经扩展到一些安全应用领域,要 求具有加解密功能、固件更新、启动安全控制以及硬件模块诊断等功能。传统的SD卡一次 性掩膜固件,并且只有单一的数据存储功能,不支持固件更新、二次开发、安全控制以及硬 件模块诊断等功能。为满足上述需求,本发明根据SD卡数据传输的特点设计了一种SD卡 控制器的私有数据传输方法,通过特有的协议,可以实现SD卡的二次开发、固件更新及安 全控制,而且可以实现对SD卡内部所有硬件模块的诊断。
发明内容
本发明提供一种SD卡控制器的数据传输方法,其目的在于区分传输的数据是用于实现SD卡存储功能的普通数据,还是用于扩展SD卡功能或提高SD卡性能的私有数据, 解决数据传输过程中区分不同用途数据的问题。为达到上述目的,本发明采用的技术方案是一种SD卡控制器的数据传输方法, 在数据传输过程中,SD卡控制器作为从端,访问设备作为主端,为了区分主端与从端之间传 输的数据是用于SD卡实现存储功能的普通数据,还是用于扩展SD卡功能或提高SD卡性能 的私有数据,事先在SD卡控制器模拟或携带的存储空间中定义一个或多个扇区作为私有 扇区,并且在私有数据传输格式中定义有私有数据特征字段,该私有数据特征字段上定义 有私有数据特征值。当主端向从端写数据时,首先判断该写数据是否对私有扇区进行写操作,如果不 是,则进入SD卡普通数据处理流程,如果是,则再判断该写数据传输格式中私有数据特征 字段上的值是否与私有数据特征值匹配,如果不是,则进入SD卡普通数据处理流程,如果 是,则进入私有数据处理流程。在主端向从端读私有数据或者连续读私有数据之前,主端向从端发送私有读使能 命令,该私有读使能命令启动私有读使能状态,当主端向从端读数据时,首先判断该读数据 是否对私有扇区进行读操作,如果不是,则进入SD卡普通数据处理流程,如果是,则再判断 私有读使能状态是否已启动,如果不是,则进入SD卡普通数据处理流程,如果是,则进入私 有数据处理流程,在主端向从端读私有数据或者连续读私有数据之后,主端向从端发送私 有读关闭命令,该私有读关闭命令关闭私有读使能状态。
总之,由于上述技术方案运用,本发明使得SD卡控制器不仅能够保持原有SD卡控 制器传输普通存储数据的功能,而且还可以将SD卡控制器模拟成一张具有有效容量的SD 卡功能,同时还提供了主端访问从端的一种私有数据传输通道,利用该通道可以传输用于 扩展SD卡功能或提高SD卡性能的私有数据,使SD卡控制器支持通过普通SD读卡器来实 现对模拟卡的基本操作;支持通过PC端工具下载数据到片内(指控制器内)FLASH或SRAM 指定位置,支持通过PC端工具下载代码到片内FLASH或SRAM指定位置中运行;支持通过自 定义CMD56命令实现下载数据到片内FLASH或SRAM指定位置,支持通过CMD56命令下载代 码到片内FLASH及SRAM指定位置中运行。在此基础上实现对SD卡的固件更新、二次开发、 启动安全控制以及硬件模块诊断等功能。
附图1为本发明SD卡控制器硬件框图。附图2为本发明SD卡控制器数据传输中的写数据流程图。附图3为本发明SD卡控制器数据传输中的读数据流程图。附图4为本发明控制流程图。附图5为本发明下载代码或数据流程图。附图6为本发明检测控制器内部硬件模块流程图。附图7为本发明更新固件流程图。
具体实施例方式下面结合附图及实施例对本发明作进一步描述实施例图1为SD卡控制器硬件框图,从图中可以看出CPU为中央处理器,ROM用于安装 固件,SRAM和EFLASH用于运行程序或存储数据,SD2. 0接口是SD卡控制器与访问设备之间 的接口,FIFO是SD接口使用的一种先进先出数据缓存器,NAND FLASH接口用于连接NAND 型FLASH存储器,加密引擎模块用于安全控制,PIT为可编程定时器。在数据传输过程中,SD卡控制器作为从端,访问设备作为主端,为了区分主端与从 端之间传输的数据是用于SD卡实现存储功能的普通数据,还是用于扩展SD卡功能或提高 SD卡性能的私有数据,本发明SD卡控制器的数据传输方法是事先在SD卡控制器模拟或 携带的存储空间中定义一个或多个扇区作为私有扇区,并且在私有数据传输格式中定义有 私有数据特征字段,该私有数据特征字段上定义有私有数据特征值。为了避免普通数据与 私有数据可能出现冲突误判的情况,应选择SD卡上文件系统保留的扇区或SD卡最大容量 处的扇区作为私有扇区(优先选择这些扇区,一般SD卡访问不到这些扇区,为避免冲突)。如图2所示,当主端向从端写数据时,首先判断该写数据是否对私有扇区进行写 操作,如果不是,则进入SD卡普通数据处理流程,如果是,则再判断该写数据传输格式中私 有数据特征字段上的值是否与私有数据特征值匹配,如果不是,则进入SD卡普通数据处理 流程,如果是,则进入私有数据处理流程。如图3所示,在主端向从端读私有数据或者连续读私有数据之前,主端向从端发 送私有读使能命令,该私有读使能命令启动私有读使能状态。当主端向从端读数据时,首先判断该读数据是否对私有扇区进行读操作,如果不是,则进入SD卡普通数据处理流程,如 果是,则再判断私有读使能状态是否已启动,如果不是,则进入SD卡普通数据处理流程,如 果是,则进入私有数据处理流程,在主端向从端读私有数据或者连续读私有数据之后,主端 向从端发送私有读关闭命令,该私有读关闭命令关闭私有读使能状态。上述有关内容解释如下1、主端的访问设备指可以访问SD卡控制器的设备,例如PC机通过SD读卡器来访 问SD卡控制器,笔记本电脑自带SD卡接口后也可以访问SD卡控制器。2、所述“SD卡控制器模拟或携带的存储空间”其含义是指下列四种情况之一(1) SD卡控制器通过内部程序模拟存储空间;(2) SD卡控制器通过外部程序模拟存储空间;(3) SD卡控制器内部存储介质的存储空间;(4) SD卡控制器外部存储介质的存储空间。3、所述“在私有数据传输格式中定义有私有数据特征字段”中的“定义有”包含两 层含意第一层是定义一个私有数据特征字段;第二层是定义多个私有数据特征字段(至 少两个私有数据特征字段)。所述“该私有数据特征字段上定义有私有数据特征值”中的 “定义有”包含两层含意第一层是私有数据特征字段的全部均定义有私有数据特征值;第 二层是私有数据特征字段的部分定义有私有数据特征值。私有数据特征值可以是一串带某 种规则的特殊字符串。4、所述“判断该写数据传输格式中私有数据特征字段上的值是否与私有数据特征 值匹配”中的“匹配”包含两层含意第一层是校验私有数据特征字段上的值是否与私有数 据特征值相同;第二层是校验私有数据特征字段上的值与私有数据特征值之间是否存在特 殊规律,比如相反或符合某一计算公式等等。5、所述“在主端向从端读私有数据或者连续读私有数据之前”,其中,“读私有数 据”是指读一个扇区的数据,“连续读私有数据”是指一个接一个的读多个扇区的数据,中间 不间断读操作。6、所述“私有读使能命令启动私有读使能状态”含义是指通过寄存器或者存储器 建立一个标志,而所述“私有读关闭命令关闭私有读使能状态”含义是取消该标志。比如用 “ 1 ”来表示建立标志,用“ 0 ”表示取消该标志。由以上内容可知,本发明SD卡控制器中的固件不但可以支持标准的SD命令,模拟 一张带有指定容量的SD卡,而且为主端访问设备提供了一种进行私有数据访问的特殊通 道,这种私有通道是通过一整套自定义通讯协议来实现的,主端访问设备利用这种通讯协 议可以实现对SD卡的各种特定操作。如下载数据、下载代码及对硬件进行测试等。比如, SD卡控制器中的固件首先模拟一张512M SD卡,文件系统为FAT16 (也可以模拟实现其他容 量或文件系统的SD卡),PC机通过读卡器或其他带SD读卡器的设备就可以打开并对SD卡 进行读写访问操作。由于PC机通过读卡器访问SD卡是以扇区为单位进行的,固件对指定 扇区的数据进行了特殊处理,定义了一套传输协议,为PC机或其他带SD读卡器的设备访问 SD卡提供了一种进行私有数据访问的特殊通道。所有的私有数据访问都是PC机或其他带 SD读卡器的设备通过写操作的方式发送到SD卡控制器上,SD卡控制器收到后根据定义的 传输协议进行命令的判断与处理,从而实现PC机或其他带SD读卡器的设备对SD卡的各种操作。考虑的SD卡传输的特点,本发明主端访问从端的通道有以下三种方式(1)命令扇区 在数据传输过程中,主端以访问扇区的方式访问从端,即这种方式是直接对扇区 进行操作。当主端向从端写数据时,按图2流程区分普通数据和私有数据。当主端向从端 读数据时,按图3流程区分普通数据和私有数据。(2)命令文件事先在SD卡控制器内部定义一个或多个文件作为私有文件,并定义该私有文件 占用的存储空间地址是所述私有扇区地址,在数据传输过程中,主端以访问文件的方式访 问从端。这种方式表面上看是对文件进行操作,由于私有文件占用的存储空间地址是私有 扇区地址,实际上在SD卡控制器内部仍然将对文件的操作转为对扇区进行操作。然后,当 主端向从端写数据时,按图2流程区分普通数据和私有数据。当主端向从端读数据时,按图 3流程区分普通数据和私有数据。(3) SD 命令事先利用SD协议为用户提供的CMD56命令(该命令是SD协议提供的一个自定义 块传输命令,支持SD读卡器以扇区为传输单位对SD卡进行读或写操作),建立一个或多个 私有数据传输命令,并定义该私有数据传输命令操作的数据区地址是所述私有扇区地址, 在数据传输过程中,主端以SD命令方式访问从端。这种方式表面上看是对SD命令进行操 作,实际上在SD卡控制器内部仍然将对命令的操作转为对扇区进行操作。然后,当主端向 从端写数据时,按图2流程区分普通数据和私有数据。当主端向从端读数据时,按图3流程 区分普通数据和私有数据。命令扇区方式简单易实现,但可能存在与正常数据产生冲突,存在误判的可能性; 命令文件方式实现相对复杂,但可以降低与正常数据产生冲突、误判的可能性;SD命令最 可靠,但PC机无法通过普通的读卡器使用自定义的CMD56命令访问SD卡控制器。三种通 道访问方式虽然各有优缺点,但他们可以满足不同的应用场合,因此本发明应具有上述三 种通道访问方式中的至少一种。为了实施本发明,现将通讯协议的有关内容举例说明如下1、私有数据传输格式私有数据的长度为512字节,与一个扇区数据长度相等,SD读卡器以普通数据的 方式向SD卡控制器特定的扇区发送,SD卡控制器收到后对传输的数据进行分析,判断是否 为私有数据,如果是则进入私有数据处理流程,否则,进入普通数据处理流程。私有数据传 输格式见下表1 : 表1为私有数据传输的命令扇区数据格式定义其中
私有数据特征值为一串带某种规则的特殊字符串,不足部分补零,用于区分是普通数据,还是私有数据。数据区用于传输代码或数据的区域。保留区保留本字段作为以后扩展用。私有命令定义私有命令的字段,长度为4字节私有命令参数区用于传输私有命令的操作参数,每个参数的长度为4字节,最多 可以传递8个参数。2、私有命令私有命令定义见下表2:
图4为控制流程图,从图中可以看出硬件初始化后首先判断存储器A位置是否为 Oxffffffff,如果是则启动固件,否则读取B位置的值C,然后跳转到C值指定的位置去运 行已通过固件下载的代码。这种设计方式可以避免最终产品继续运行固件而带来的安全隐
)Qi、O图5为下载代码或数据流程图。不再详细描述。图6为检测控制器内部硬件模块流程图。不再详细描述。图7为更新固件流程图。不再详细描述。上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人 士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明 精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
权利要求
一种SD卡控制器的数据传输方法,在数据传输过程中,SD卡控制器作为从端,访问设备作为主端,其特征在于为了区分主端与从端之间传输的数据是用于SD卡实现存储功能的普通数据,还是用于扩展SD卡功能或提高SD卡性能的私有数据,事先在SD卡控制器模拟或携带的存储空间中定义一个或多个扇区作为私有扇区,并且在私有数据传输格式中定义有私有数据特征字段,该私有数据特征字段上定义有私有数据特征值;当主端向从端写数据时,首先判断该写数据是否对私有扇区进行写操作,如果不是,则进入SD卡普通数据处理流程,如果是,则再判断该写数据传输格式中私有数据特征字段上的值是否与私有数据特征值匹配,如果不是,则进入SD卡普通数据处理流程,如果是,则进入私有数据处理流程;在主端向从端读私有数据或者连续读私有数据之前,主端向从端发送私有读使能命令,该私有读使能命令启动私有读使能状态,当主端向从端读数据时,首先判断该读数据是否对私有扇区进行读操作,如果不是,则进入SD卡普通数据处理流程,如果是,则再判断私有读使能状态是否已启动,如果不是,则进入SD卡普通数据处理流程,如果是,则进入私有数据处理流程,在主端向从端读私有数据或者连续读私有数据之后,主端向从端发送私有读关闭命令,该私有读关闭命令关闭私有读使能状态。
2.根据权利要求1所述的数据传输方法,其特征在于在数据传输过程中,主端以访问 扇区的方式访问从端。
3.根据权利要求1所述的数据传输方法,其特征在于事先在SD卡控制器内部定义 一个或多个文件作为私有文件,并定义该私有文件占用的存储空间地址是所述私有扇区地 址,在数据传输过程中,主端以访问文件的方式访问从端。
4.根据权利要求1所述的数据传输方法,其特征在于事先利用SD协议为用户提供的 CMD56命令,建立一个或多个私有数据传输命令,并定义该私有数据传输命令操作的数据区 地址是所述私有扇区地址,在数据传输过程中,主端以SD命令方式访问从端。
全文摘要
一种SD卡控制器的数据传输方法,其特征在于为了区分传输的数据是普通数据,还是私有数据,事先在SD卡控制器的存储空间中定义私有扇区,并定义私有数据特征字段及特征值,写数据时,先判断是否对私有扇区操作,再判断特征值是否匹配,从而区分普通数据和私有数据;读私有数据前先发送私有读使能命令启动私有读使能状态,读数据时,先判断是否对私有扇区操作,再根据私有读使能状态来区分普通数据和私有数据。本发明提供了一种私有数据传输通道,利用该通道可以传输用于扩展SD卡功能或提高SD卡性能的私有数据,在此基础上实现对SD卡的固件更新、二次开发、启动安全控制以及硬件模块诊断等功能。
文档编号G06F3/06GK101840379SQ20101016645
公开日2010年9月22日 申请日期2010年4月26日 优先权日2010年4月26日
发明者匡启和, 王廷平, 肖佐楠, 郑茳 申请人:苏州国芯科技有限公司