sd卡烧写原理
SD卡工作原理介绍和工作原理图
SD卡工作原理介绍和工作原理图大容量SD卡在海洋数据存储中的应用本设计使用8 GB的SDHC(High Capacity SD Memory Card,大容量SD存储卡),为了方便卡上数据在操作系统上的读取,以及数据的进一步分析和处理,在SDHC卡上建立了FAT32文件系统。
海洋要素测量系统要求数据存储量大、安全性高,采用可插拔式存储卡是一种不错的选择。
目前,可插拔式存储卡有CF卡、U 盘及SD卡。
CF卡不能与计算机直接通信;U盘需要外扩接口芯片才能与单片机通信,增加了外形尺寸及功耗;而SD卡具有耐用、可靠、安全、容量大、体积小、便于携带和兼容性好等优点,非常适合于测量系统长期的数据存储。
1 SD卡接口的硬件设计STM32F103xx增强型系列是意法半导体公司生产的基于Cortex-M3的高性能的32位RISC内核,工作频率为72 MHz,O端口和连接到2条APB总线的外设。
内置高速存储器(128 KB的闪存和20 KB 的SRAM),以及丰富的增强I,STM32F103xx系列工作于-40,+105?的温度范围,供电电压为2.0,3.6 V,与SD 卡工作电压兼容,一系列的省电模式可满足低功耗应用的要求。
SD卡支持SD模式和SPI模式两种通信方式。
采用SPI模式时,占用较少的I,O资源。
STM32F103VB包含串行外设SPI接口,可方便地与SD卡进行连接。
通过4条信号线即可完成数据的传输,分别是时钟SCLK、主机输入从机输出MISO、主机输出从机输入MOSI和片选CS。
STM32F103VB与SD卡卡座的接口电路如图1所示。
SD卡的最高数据读写速度为10 MB,s,接口电压为2.7,3.6 V,具有9个引脚。
SD卡使用卡座代替传输电缆,减少了环境干扰,降低了出错率,而且1对1传输没有共享信道的问题。
SD卡在SPI模式下各引脚的定义如表1所列。
2 SD卡接口的软件设计本设计采用STM32F103VB自带的串行外设SPI接口与SD卡进行通信,这里只介绍SPI模式的通信方式。
嵌入式芯片程序常见烧写方法
嵌⼊式芯⽚程序常见烧写⽅法⼀般刚拿到⼿中的板⼦是没有程序的,此时需要向板⼦⾥⾯烧写程序。
常见的⽅法如下:1、通过UART如STC51单⽚机,Hi3518等⽚⼦,是通过UART进⾏烧写程序的,烧写时需要配合⼚商提供的相应的PC机烧写软件。
2、通过USB烧写与UART相似,只是⽐UART烧写速度快得多。
3、通过JTAG烧写需要使⽤专⽤的JTAG⼯具与上位机配合。
4、通过SWIO烧写需要相应的烧写⼯具配合。
5、通过SD卡进⾏烧写系统⽀持从SD卡进⾏启动,启动时将SD卡⽂件复制到RAM中,然后运⾏这⼀⼩段程序,这⼀⼩段程序就可以⽤来烧写到板⼦上的FLASH 上。
6、通过专⽤的烧录器进⾏烧写。
这个是适⽤于⼤批量⽣产时,⼀次可以同时烧录成百⽚。
我在⼯⼚产线上看到,⼯⼈将⼀个⼀个的FLASH放置在烧录器上,然后压紧治具,在电脑上⼀点上位机,就完成了所有的⽚⼦烧写。
下⾯着重说⼀下SD卡烧写开发时,SD卡主要⽤来烧写U-boot,烧写完U-boot后,就⽤UBOOT来烧写内核、⽂件系统。
使⽤SD卡烧写的⽅式,前提是SOC⽀持SD卡启动,SOC上电开机后,能从SD卡中加载固件并运⾏。
1、制做SD启动卡;2、将卡启动UBOOT烧⼊SD卡分区中。
此时是将SD卡看做⼀个FLASH来使⽤,直接使⽤裸数据写⼊。
SOC启动后,从⾃动从这⾥复制数据到IRAM,并运⾏;3、将⽀持FLASH启动的UBOOT,通过PC机放⼊SD卡中。
4、将SOC设置为SD卡启动,插卡,上电,等待SD卡中的UBOOT被加载到DRAM中运⾏起来,然后通过UBOOT命令,将SD卡中的⽀持FLASH启动的UBOOT烧⼊到FLASH 中。
5、掉电,拔卡,将SOC设置为FLASH启动,重新上电即可。
SD卡的结构原理和基本读写操作方式
SD卡的结构原理和基本读写操作方式摘要:本文首先介绍了SD Memory Card ( Secure D ig ita l MemoryCard)的基本结构和原理,着重对SD 卡的命令字和操作流程进行介绍。
接着研究了三星32位嵌入式处理器S3C2410与SD 卡硬件接口电路及其对SD卡的基本读写操作方式。
1 引言SD卡( Secure DigitalMemory Card)是一种基于Flash的新一代存储器,它着重数据存储的安全、容量和性能,是许多便携式电子产品如数码相机、手提电话, PDA 等理想的外部存储介质。
2 SD的基本概念2. 1 SD的通信协议SD卡系统可以在两种通信协议下工作: SD协议和SP I协议。
用户可以在硬件初始化时自由选择SD卡系统的通信协议。
对于特定的硬件电路,用户只需使用一种通信协议即可。
本文根据笔者的硬件,仅讨论最常用的SD协议。
2. 2 SD数据传输方式SD支持两种数据传输方式: 1 - bit方式(标准总线)和4- bit方式(宽总线)。
在1 - bit方式下,数据仅仅在数据线0(DAT[ 0 ])上传输。
在4 - bit方式下,数据在4 根数据线(DAT[ 3: 0 ])上同时传输。
在4 - bit数据传输方式下,最高的数据传输速率可达100Mb / sec。
表1列出了在两种方式下SD接口信号的定义。
上电后,缺省状态下系统工作于1 - bit方式。
在SD卡处于传输状态时,用户可以自由地更改为1 - bit或4 - bit方式。
2. 3 SD 通信原理SD总线是一个星型的总线结构,系统中允许有一个主控器,最多可达十个从设备( SD卡)。
在系统初始化时,主控器分别为每一个设备分配一个设备地址,此后主控器就可以根据此设备地址独立操作该设备。
SD总线通信是基于命令和数据位流的,每一个数据流都包括一个起始位和一个结束位。
每一个SD命令表征一个卡操作的开始。
SD命令由命令线(CMD)进行传输。
sd卡工作原理
sd卡工作原理SD卡(Secure Digital card)是一种用于存储数字信息的储存设备。
它是由Toshiba、SanDisk和Panasonic联合推出的一种便携式存储设备,通常用于存储照片、音乐、视频等文件。
那么,SD卡是如何工作的呢?下面,我们来了解一下SD卡的工作原理。
1. SD卡的基本结构SD卡由多个部分组成,包括控制器、存储器、晶振器和接口等。
其中,控制器是SD卡的关键部分,它负责管理SD卡的读写操作和数据交换。
存储器则是用于存储数据的部分,晶振器主要用于产生时钟信号,接口则用于与设备进行通信。
2. SD卡的读写过程当需要读取SD卡内的数据时,设备会向SD卡发送请求,SD卡通过控制器进行数据读取操作,并将读取的数据返回给设备。
当需要向SD卡写入数据时,设备会发送数据到SD卡,SD卡通过控制器将数据存储到存储器中。
3. SD卡的文件系统SD卡中的文件系统是通过文件分配表(FAT)来进行管理的。
FAT是一种简单的文件系统,它将文件分割成多个簇,每个簇的大小为固定值。
当存储一个文件时,FAT会分配一定数量的簇来存储该文件,并将每个簇的使用情况记录在一个文件分配表中。
当需要读取文件时,设备通过文件分配表来查找文件并读取相应的簇。
4. SD卡的数据安全SD卡具有一些安全功能,例如密码保护和数据加密等。
密码保护功能通过限制访问SD卡的设备来保护数据安全。
数据加密功能则是将数据加密后再存储到SD卡中,从而保证数据的安全性。
总之,SD卡是一种方便快捷的存储设备,它可以轻松地存储和传输各种类型的数据。
了解SD卡的工作原理有助于更好地使用和维护这种设备。
SD卡基础原理及读写程序
SD卡基础原理及读写程序1、简介:SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。
本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。
SD 卡内部结构及引脚如下图所示2、SD卡管脚图:3、SPI模式下SD各管脚名称为:注:一般SD有两种模式:SD模式和SPI模式,管脚定义如下:(A)、SD MODE 1、CD/DATA3 2、CMD 3、VSS1 4、VDD 5、CLK 6、VSS2 7、DATA0 8、DATA1 9、DATA2(B)、SPI MODE 1、CS 2、DI 3、VSS 4、VDD 5、SCLK 6、VSS2 7、DO 8、RSV 9、RSVSD 卡主要引脚和功能为:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz 的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。
SD卡以命令形式来控制SD卡的读写等操作。
可根据命令对多块或单块进行读写操作。
在SPI模式下其命令由6个字节构成,其中高位在前。
SD卡命令的格式如表1所示,其中相关参数可以查阅SD卡规范。
4、MicroSD卡管脚图:5、MicroSD卡管脚名称:SD 卡与MicroSD卡仅仅是封装上的不同,MicroSD卡更小,大小上和一个SIM卡差不多,但是协议与SD卡相同。
一般我们用单片机操作SD 卡时,都不需要对FAT分区表信息做处理,原因如下:1)、操作FAT分区表要增加程序代码量、增加SRAM的消耗,对于便携应用来说代码大小和占用SRAM的多少至关重要。
内存卡的工作原理
内存卡的工作原理
内存卡是一种用于存储数据的电子设备,常见的有SD卡、TF 卡等。
它的工作原理可以简单描述如下:
1. 存储单元:内存卡的存储单元是由许多闪存芯片组成的。
这些闪存芯片内部有大量的存储单元,通常是由浮动栅电容或浮动栅电晕管来存储电荷。
每个存储单元可以存储一定的二进制信息(0或1)。
2. 控制电路:内存卡中还有一个控制电路,负责与主机(如相机、手机等)进行通信,并控制存储单元的读写操作。
3. 存储操作:当主机需要读取内存卡中的数据时,控制电路会通过总线将指令发送给内存芯片,告诉它要读取哪个地址的数据。
内存芯片会根据指令找到相应的存储单元,并将数据读取出来反馈给控制电路,再由控制电路传递给主机。
4. 写入操作:当主机需要向内存卡写入数据时,控制电路会将数据传递给内存芯片的指定存储单元,并通过一系列操作将数据写入。
5. 数据保持:内存卡的数据可以长时间保存,即使断电也不会丢失。
这是由于闪存芯片的存储单元使用特殊的物理结构来实现数据的长期保持,而不需要持续的电力支持。
总的来说,内存卡的工作原理是通过控制电路与存储单元进行读写操作,并利用闪存芯片的特殊结构来实现数据的存储和保
持。
它在各种电子设备中被广泛应用,如数码相机、手机、平板电脑等。
sd工作原理
sd工作原理
SD卡(Secure Digital Card)是一种可移动存储设备,用于存储和传输数据。
它由闪存芯片和控制器芯片组成。
SD卡的工作原理如下:
1. 插入SD卡:将SD卡插入到设备的SD卡槽中。
2. 识别SD卡:设备通过识别SD卡槽中的接触点,确定SD 卡的存在。
3. 供电和信号传输:设备向SD卡提供电源,并通过SD卡槽中的引脚与SD卡进行数据传输。
4. 控制器识别:控制器芯片通过与SD卡进行通信,识别SD 卡的容量、类型和速度等信息。
5. 数据读写:设备通过控制器芯片向SD卡发送读写命令,控制芯片将读写请求翻译成SD卡能够理解的指令,SD卡将数据从闪存芯片中读取或写入。
6. 数据传输:SD卡通过与控制器芯片的数据引脚进行数据传输,将读取或写入的数据传送到设备中或从设备中接收数据。
7. 读写完成:数据传输完成后,SD卡将传输成功的信息发送给设备,设备通过控制器芯片接收并处理这些信息。
8. 移除SD卡:在使用完毕后,可以通过操作系统或设备设置中的“安全移除”功能,断开SD卡与设备的连接,并从SD卡槽中取出SD卡。
总结:SD卡的工作原理是通过设备识别和供电、控制器与SD卡的通信、控制器翻译读写请求、通过数据引脚进行数据传输等步骤,实现数据存储和传输的功能。
sd卡工作原理
sd卡工作原理
SD卡(Secure Digital Card),是一种使用闪存技术存储数据的存储设备。
它采用了非易失性存储硅片作为存储介质,通过控制接口来读写数据。
SD卡的工作原理如下:
1. 电压传输:SD卡通过引脚传输电信号来读取和写入数据。
其中,CMD(命令)和CLK(时钟)两个引脚用于控制SD 卡的操作,DAT(数据)引脚用于读写数据。
2. 初始化和寻址:当SD卡插入设备中时,设备会发送特定的命令来初始化SD卡。
初始化完成后,设备会向SD卡发送寻址命令,用于确定要读写的数据区域。
3. 数据读写:通过引脚传输的命令和数据来实现数据的读写操作。
设备会发送相应的命令告知SD卡需要读取或写入数据,并通过DAT引脚传输具体的数据。
4. 数据保护:SD卡采用了多种数据保护机制来确保数据的完整性和安全性。
例如,CRC(循环冗余校验)用于检验传输过程中数据是否发生错误,密码保护和加密机制用于保护数据的安全性。
5. 垃圾回收:由于闪存技术的特性,SD卡的存储单元在多次擦除和写入后会出现损耗。
为了延长SD卡的使用寿命,SD 卡会自动进行垃圾回收操作,将已经无效的数据块标记为可用
状态,以便后续的数据写入。
总的来说,SD卡通过电压传输、初始化和寻址、数据读写、
数据保护和垃圾回收等步骤来实现数据的存储和读取。
它是一种方便、可靠的存储设备,广泛应用于各种便携式电子设备中。
sd卡工作原理
sd卡工作原理
SD卡,全名Secure Digital Memory Card,是一种常见的存储媒介,与我们的手机、相机等电子设备密不可分。
那么它的工作原理是什么呢?
首先,SD卡的内部结构主要包括控制器和存储芯片两部分。
其中,控制器是SD卡的“大脑”,负责管理芯片的读写、缓存、错误修复等操作。
存储芯片则是具体的存储介质,通常采用闪存技术。
当我们将SD卡插入设备时,设备会先发送一条指令给SD卡控制器,以确认SD卡是否存在。
接着,设备可以向SD卡发送读写指令,控制器会根据指令将相应的数据读取或写入存储芯片。
SD卡的读写速度受多种因素影响,例如存储芯片类型、读写模式、设备接口等。
在使用SD卡时,我们需要注意保护数据的完整性和安全性,避免误删除、病毒攻击等风险。
总的来说,SD卡作为一种方便、可靠的存储媒介,其工作原理虽然复杂,但通过掌握一些基本知识,我们可以更好地利用它为生活、工作带来便利。
- 1 -。
SD卡硬件原理图及其读写程序
SD卡硬件原理图及其读写程序2011-03-28 17:45转载自sail_007最终编辑sail_007 最近开始整理以前画过原理图和程序今天先整理出了SD卡的硬件和SPI方式的读写程序。
今后会陆续写把DS1302时钟芯片GPRS模块CAN总线通信PWM数控电压也整理出来。
一方面是想帮自己总结一下另外如果还能帮助到其他的单片机爱好者那也就更好了。
当然水平有限整理出来的东西可能也有许多错误的地方也请高手能指出不胜感激。
先发张SD卡的原理图。
说明我用的是5V单片机SD卡则是3.3v如果直接连接引脚长期使用会影响SD卡寿命。
我一开始选用了普通的光耦触发可能是导通速率不够快无法实现SPI通信后来我就改用9013就行了。
下图上US1是SD卡壳其实1到9引脚对应了SD卡的9个引脚10号引脚是卡插入标志也就是说当有SD卡插入时10号引脚会接3.3v的地这样单片机就可以查询是否有卡了。
在SPI总线模式下CS为主控制器向卡发送的片选信号SCLK为主控制器向卡发送的时钟信号INDataIn为主控制器向卡发送的单向数据信号MISODataOut为卡向主控制器发送的单向数据信号。
程序如下说明我用的是freescale的DP256单片机该单片机有SPI 设备接口只要将其初始化成功便可完成通信设置。
uchar CMD0RespCMD1RespCMD59RespCMD16RespCMD9RespC MD17RespCMD24RespCMD58Resp void SD_Initializevoiduchar csdbuf16TempValue ucharcmdparam4recbuf600resp4resptype uchar sendbuf600 ulong len ulong i ulong BlockAdd SD_InsertDetect Pim.pts.bit.pts70 //cs0 SD_SPIDelay25 Pim.pts.bit.pts71 //cs1 SD_SPIDelay2Pim.ddrs.bit.ddrs70 //pin cs direction Spi0.spicr1.bit.spe0 //spi enable Pim.ddrs.bit.ddrs71 //pin cs directionPim.pts.bit.pts70//cs0 Spi0.spibr.byte0x02 //8MHz31.25kHz0x07-0x00 Spi0.spicr1.bit.mstr1 //master modeSpi0.spicr1.bit.ssoe1 //ss output enable Spi0.spicr1.bit.cpol0//cpol0 //cpol1 070215 Spi0.spicr1.bit.cpha0 //cpha0Spi0.spicr2.byte0x18 //normal drive input pullup TempValueSpi0.spisr.byte//clear SPIF first step TempValueSpi0.spidr.byte//clear SPIF second stepSpi0.spicr1.bit.spe1 //spi enable CMD0RespSD_ResetSDCMD1RespSD_ActiveInit whileCMD1Resp0x01CMD1RespSD_ActiveInit 白开水易拉罐主页博客相册个人档案好友i贴吧看看Ta是谁吧页码1/5Ww2011/6/26/wolf9s/blog/item/47e2a620 212d80268744f98c.htmlvoid SD_SPIDelayuint value uint i for i 0 i valuei SPI_SendByte0xFF // 发送0xFF clock out 0xFF uchar SD_ResetSDvoid uchar param4 0000respSD_SendCmdCMD0 param SD_R1 resp return resp / 函数名称:void SPI_SendByte Name: void SPI_SendByte 功能描述: 通过SPI接口发送一个字节Function: send a byte by SPI interface 输入: INT8U byte: 发送的字节Input: INT8U byte: the byte that will be send 输出: 无Output: NULL / voidSPI_SendByteuchar byte uchar TempValue Spi0.spidr.byte byte / 发送数据放入SPI数据寄存器/ while0 Spi0.spisr.byte 0x80 / 等待SPIF置位即等待数据发送完毕/ / wait for SPIF being set that is wait for finishing of data being send / TempValueSpi0.spidr.byte / 函数名称: INT8U SPI_RecByte Name:INT8U SPI_RecByte 功能描述: 从SPI接口接收一个字节Function: receive a byte from SPI interface 输入: 无Input: NULL 输出: 收到的字节Output: the byte that be received / uchar SPI_RecBytevoid uint ReadCounter ReadCounter0Spi0.spidr.byte 0xFF while0 Spi0.spisr.byte 0x80 / 等待SPIF 置位即等待收到数据/ ReadCounter ifReadCounter25 break / wait for SPIF being set that is wait for being received data / returnSpi0.spidr.byte / 读取收到的字节read the byte received / / 函数名称: //INT8U SD_SendCmd Name: INT8USD_SendCmd 功能描述: 向卡发送命令并取得响应Function: send command to the cardand get a response 输入: INT8U cmd : 命令字Input: INT8U cmd : command byteINT8U param : 命令参数长度为4字节INT8U param :command parameterlength is 4 bytes INT8U resptype : 响应类型INT8U resptype: response type INT8U resp : 响应长度为1-5字节INT8U resp : responselength is 1-5 bytes 输出: 0: 正确0: 错误码Output: 0: right 0: error code / voidSD_SendCmduchar cmd uchar paramuchar resptype uchar resp long irlen uchar tmp Pim.pts.bit.pts70//cs0 SPI_SendBytecmd0x3F 0x40 / 发送命令头和命令字send command header and word / for i 3 i 0 i-- SPI_SendByteparami / 发送参数send parameters / SPI_SendByte0x95 / CRC校验码只用于第1个命令CRConly used for the first command / rlen 0 switch resptype / 根据不同的命令得到不同的响应长度/ / according various commandget the various response length / case 1: rlen 1 break case 2: rlen 2 break case 4: rlen 5 break default:SPI_SendByte0xFF Pim.pts.bit.pts71 break i 0 do / 等待响应响应的开始位为0 / / Wait for a responsea response is a start bitzero / tmp SPI_RecByte i while tmp 0x80 0 iSD_CMD_TIMEOUT for i rlen - 1 i 0 i-- respi tmp tmpSPI_RecByte / 循环的最后发送8clock at the last recycleclock out 8 clock / Pim.pts.bit.pts71//cs1 // return SD_NO_ERR //new statement 页码2/5Ww2011/6/26/wolf9s/blog/item/47e2a620 212d80268744f98c.html/ 函数名称: INT8U SD_ReadBlockName: INT8U SD_ReadBlock 功能描述: 从SD卡中读一个块Function: read a single block from sd card 输入: INT32U blockaddr: 块地址Input: INT32U blockaddr: address of block INT8U recbuf : 接收缓冲区长度512Bytes INT8U recbuf : the buffer of receivelength is 512Bytes 输出: 0: 正确0: 错误码Output: 0: right 0: error code / uchar SD_ReadBlockulong blockaddr uchar recbuf uchar param4resp // if blockaddrsds.block_num // return SD_ERR_OVER_CARDRANGE / 操作超出卡容量范围operate over the card range /SD_PackParamparam blockaddr / 将参数转化为字节形式change the parameter to bytes form / SD_SendCmdCMD17 param SD_R1 resp SD_ReadBlockDataSD_BLOCKSIZE recbuf/ 读出数据read data from sd card / return resp / 函数名称: INT8U SD_ReadBlockData Name: INT8USD_ReadBlockData 功能描述: 从SD卡中读取数据块Function: read block data from sd card 输入: INT32U len : 长度Input: INT32U len : length INT8U recbuf : 接收缓冲区INT8U recbuf : the buffer of receive 输出: 0: 正确0: 错误码Output: 0: right 0: error code / voidSD_ReadBlockDataulong len uchar recbuf uchar tmp ulong i 0 Pim.pts.bit.pts70//cs0 do / 等待接收数据开始令牌0xFE wait for receiving data start token 0xFE / tmp SPI_RecByte iwhiletmp 0xFF i SD_CMD_TIMEOUT for i 0 i len i recbufi SPI_RecByte / 接收数据receive data / i SPI_RecByte i i 0:错误码Output: 0: right 0: error code ucharSD_SetBlockLenulong length uchar param4respretSD_PackParamparam length //将参数转化为字节形式change the parameter to bytes form SD_SendCmdCMD16 paramSD_R1 resp return resp / / 函数名称: void SD_PackParam Name: void SD_PackParam 功能描述: 将32位的参数转为字节形式Function: change 32bit parameter to bytes form 输入: INT8U parameter: 字节参数缓冲区Input: INT8U parameter: the buffer of bytes parameter INT32U value : 32位参数INT32U value : 32bit parameter 输出: 无Output: NULL / void SD_PackParamuchar parameter ulong value valuevalue512 parameter3 ucharvalue 24 parameter2 ucharvalue 16 parameter1 ucharvalue 8 parameter0 ucharvalue / 函数名称: INT8USD_WriteBlock Name: INT8U SD_WriteBlock 功能描述: 向SD卡中写入一个块Function: write a block to sd card 输入: INT32U blockaddr: 块地址Input: INT32U blockaddr: address of block INT8U sendbuf : 发送缓冲区长度512Bytes INT8U sendbuf : the buffer of sendlength is 512Bytes 输出: 0: 正确0: 错误码Output: 0: right 0: error code / ucharSD_WriteBlockulong blockaddr uchar sendbuf 页码3/5Ww2011/6/26/wolf9s/blog/item/47e2a620 212d80268744f98c.html uchar param4resprettmp2 ulong i // if blockaddr sds.block_num // returnSD_ERR_OVER_CARDRANGE / 操作超出卡容量范围operate over the card range / SD_PackParamparam blockaddr / 将参数转化为字节形式change the parameter to bytes form / SD_SendCmdCMD24 param SD_R1 resp / 写单块命令write single block / SD_WriteBlockData0 SD_BLOCKSIZE sendbuf / 写入数据write data / return resp / 函数名称: INT8USD_WriteBlockData Name: INT8U SD_WriteBlockData 功能描述: 向sd卡写数据块Function: write block data to sd card 输入: INT8U bmulti : 是否为多块操作1:是0:否Input:INT8U bmulti : multi blocks operate 1:Y 0:N INT32U len : 长度INT32U len : length INT8U sendbuf: 发送缓冲区INT8U sendbuf : the buffer of send 输出: 0: 正确0: 错误码Output: 0: right 0: error code / void SD_WriteBlockDatauchar bmulti ulong len uchar sendbuf uint i uchar tmp Pim.pts.bit.pts70//cs0 SPI_SendByte0xFF / 开始发送数据之前发送8个clock clock out 8 clk before start / if bmulti 1SPI_SendByteSD_TOK_WRITE_STARTBLOCK_M / 写多块开始令牌start token of write multi blocks / elseSPI_SendByteSD_TOK_WRITE_STARTBLOCK / 写单块开始令牌start token of write single block / for i 0 i len iSPI_SendBytesendbufi / 发送数据send data / SPI_SendBytei 8 0xFF SPI_SendBytei 0xFF / 发送CRC16校验码send CRC16 check code / tmp SPI_RecByte Pim.pts.bit.pts71//cs1 SD_WaitBusy void SD_WaitBusy uchar tmpiPim.pts.bit.pts70//cs0 i0 do / 等待忙结束wait for being busy end / tmp SPI_RecByte i while tmp 0xFF i 10000 / 忙时收到的值为0xFF always receive 0xFF when card is busy /Pim.pts.bit.pts71//cs1 / 函数名称: void SD_HardWareInit Name: void SD_HardWareInit 功能描述: 初始化访问SD卡的硬件条件Function: initialize the hardware condiction that access sd card 输入: 无Input: NULL 输出: 无Output: NULL / uchar SD_InsertDetect uchar InflagifPim.ptp.bit.ptp30//sd insert Inflag1 else Inflag0 return Inflag 类别默认分类添加到搜藏分享到i贴吧浏览57 评论0 上一篇sd卡的读写转下一篇一般SD卡和SDHC卡读写函数 .c -... 最近读者网友评论发表评论姓名哦没他发内容插入表情▼ 闪光字页码4/5Ww2011/6/26/wolf9s/blog/item/47e2a620 212d80268744f98c.html 同时将此文章分享给好友验证码请点击后输入四位验证码字母不区分大小写发表评论�0�82011 Baidu看看Ta是谁吧页码5/5Ww2011/6/26/wolf9s/blog/item/47e2a620 212d80268744f98c.html。
SD卡读写操作详细说明
SD卡读写操作详细说明SD卡(Secure Digital Card)是一种常见的存储设备,广泛应用于各种数码设备,如相机、手机、音乐播放器等。
SD卡读写操作是指对SD卡进行数据的读取和写入操作。
本文将详细介绍SD卡的读写操作流程和相关细节。
一、SD卡读写操作的基本原理SD卡采用了Flash存储技术,数据的读写是通过对存储芯片中的电荷进行控制实现的。
每个存储单元可以存储一个位(0或1),多个存储单元可以组成字节、块等不同大小的数据单元。
二、SD卡的初始化在进行SD卡的读写操作之前,首先需要对SD卡进行初始化。
SD卡的初始化包括以下几个步骤:1.插入SD卡:将SD卡插入到SD卡插槽中。
2.电源供给:给SD卡供电,使其可以正常工作。
3.寻卡:通过命令与SD卡进行通信,找到SD卡并识别其属性和参数。
三、SD卡的读操作SD卡的读操作是指从SD卡中读取数据。
SD卡的读操作流程如下:1.发送读命令:通过控制器向SD卡发送读命令,告知SD卡要读取的数据的起始地址和长度。
2.接收应答:SD卡接收到读命令后,会返回一个应答信号,确认是否接收到了读命令。
3.读取数据:当SD卡接收到读命令后,在指定的地址范围内读取数据,并将数据传输给控制器。
4.数据传输:控制器接收到SD卡传输的数据后,将数据转发给主机或其他设备进行处理。
四、SD卡的写操作SD卡的写操作是指向SD卡中写入数据。
SD卡的写操作流程如下:1.发送写命令:通过控制器向SD卡发送写命令,告知SD卡要写入的数据的起始地址和长度。
2.接收应答:SD卡接收到写命令后,会返回一个应答信号,确认是否接收到了写命令。
3.写入数据:当SD卡接收到写命令后,在指定的地址范围内写入数据。
4.数据传输:控制器向SD卡传输要写入的数据,SD卡接收到数据后进行存储。
五、SD卡的块操作SD卡的读写操作是以块为单位进行的,一个块的大小一般为512字节。
SD卡的块操作流程如下:1.发送块命令:通过控制器向SD卡发送块命令,告知SD卡要进行块操作的起始块号和块数。
tf卡的工作原理
tf卡的工作原理
TF卡,全称为T-Flash卡(TransFlash卡),也被称为MicroSD卡,是一种可移动存储设备,广泛应用于移动设备、数码相机等电子设备中。
TF卡采用闪存技术,类似于硬盘或固态硬盘,但更小更轻便。
它的工作原理可以分为以下几个步骤:
1. 数据存储:TF卡内部由多个存储芯片组成,每个存储芯片
中包含多个存储单元。
这些存储单元是通过电荷的累积和释放来表示数据的0和1。
数据通过电路写入存储单元中,并在需
要读取时通过电路读取。
2. 控制器:TF卡的控制器是其核心部件之一,它负责管理存
储芯片和处理数据的读写操作。
控制器将主机(如手机、相机等)发送的指令翻译成对TF卡内部存储芯片的操作。
它还对
数据进行错误检测和修正,确保数据的可靠性和完整性。
3. 接口:TF卡使用了SPI(Serial Peripheral Interface)和SD (Secure Digital)等接口标准与主机进行通信。
通过接口标准,TF卡可以实现高速数据传输和与主机的互通。
4. 文件系统:TF卡上存储的数据需要按照一定的文件系统进
行组织和管理,常用的文件系统包括FAT32、exFAT等。
文
件系统可以实现数据的组织和索引,使得数据的存取更加方便和高效。
5. 软件支持:TF卡需要主机提供相应的软件支持才能正常工作。
主机通过驱动程序和操作系统来管理和控制TF卡的读写
操作。
总的来说,TF卡的工作原理就是通过闪存技术将数据存储在
存储芯片中,并通过控制器和接口与主机进行通信和数据交互,实现数据的存取和传输。
存储芯片烧录程序的原理
存储芯片烧录程序的原理
存储芯片烧录程序的基本原理:
1. 编译程序代码,生成可执行的机器代码。
2. 将机器代码通过编程器软件导入到存储芯片的缓冲存储区。
3. 编程器向芯片上的控制逻辑发送烧录命令。
4. 控制逻辑解锁存储阵列,使其进入可写状态。
5. 将缓冲区的机器代码按照一定时序写入存储阵列对应的存储单元。
6. 存储单元的极性会被反转,以表示0或1的逻辑状态。
7. 重复步骤4-6直至全部代码烧录完成。
8. 重新锁定存储阵列,使其进入只读状态。
9. 验证烧录的内容,如校验和检验等。
10. 复位芯片,根据烧录的程序代码运行。
通过电压或光的方式控制存储单元的开关状态,实现对存储芯片的编程,是其工作原理的核心。
双分区烧写
双分区烧写摘要:1.双分区烧写概念介绍2.双分区烧写原理3.双分区烧写优缺点分析4.双分区烧写应用场景5.双分区烧写操作方法6.双分区烧写常见问题及解决方法正文:双分区烧写是一种将存储器分为两个独立区域的技术,每个区域可以独立进行写入和擦除操作。
这种技术广泛应用于各种电子设备,如U盘、SD卡、eMMC等。
双分区烧写技术为用户提供了更加灵活和高效的使用体验。
双分区烧写原理是通过识别存储器中的独立区域,实现对不同区域的数据分别进行写入和擦除。
这种技术可以有效提高存储器的使用效率,减少擦写次数,延长存储器寿命。
双分区烧写的优点包括:1.提高存储器使用效率:双分区烧写可以根据用户需求,将不同类型的数据分别存储在不同的区域,提高存储器空间的利用率。
2.延长存储器寿命:通过将擦写次数分散到两个独立区域,双分区烧写可以有效降低单个区域的擦写次数,从而延长存储器的使用寿命。
3.数据安全性:双分区烧写可以实现对敏感数据的保护,将重要文件存储在一个独立的区域,提高数据安全性。
然而,双分区烧写也存在一些缺点:1.兼容性问题:部分设备不支持双分区烧写,可能导致无法正常使用。
2.操作复杂性:对于不熟悉技术的用户来说,双分区烧写的操作可能较为复杂。
双分区烧写技术在多种场景下都有广泛应用,如在嵌入式设备中存储操作系统和用户数据,或用于存储需要长期保存的数据。
双分区烧写的操作方法因设备而异,一般可以通过相关设备的管理工具或命令行进行操作。
在操作过程中,请确保设备支持双分区烧写技术,并遵循正确的操作流程,以免造成数据丢失或设备损坏。
在双分区烧写过程中,用户可能会遇到一些常见问题,如无法识别分区、写入失败等。
针对这些问题,可以尝试以下解决方法:1.检查设备是否支持双分区烧写技术。
2.更新设备驱动程序,确保与操作系统兼容。
3.更换存储器或设备,检查是否为硬件问题。
4.在操作前备份数据,避免因操作失误导致数据丢失。
总之,双分区烧写作为一种提高存储器使用效率和延长寿命的技术,已经越来越受到用户的关注和喜爱。
烧录的原理
烧录的原理烧录,是指将数字信息写入到光盘、光碟或者其他存储介质中的过程。
它是一种常见的数据存储方式,被广泛应用于光盘制作、音视频录制、软件发布等领域。
那么,烧录的原理是什么呢?接下来,我们将深入探讨烧录的原理及其相关知识。
首先,我们来了解一下烧录的基本原理。
烧录的过程主要包括两个步骤,首先是将数字信息转换成激光能够识别的信号,然后是利用激光将这些信号写入到存储介质中。
在烧录过程中,需要用到一种叫做激光烧录机的设备,它能够将数字信息以光的形式记录在光盘或光碟上。
接下来,我们来详细介绍烧录的原理。
在烧录过程中,首先需要将数字信息转换成激光能够识别的信号。
这一步通常是通过编码和调制来实现的。
编码是将数字信息转换成一系列的脉冲信号,而调制则是将脉冲信号转换成激光能够识别的模拟信号。
这些模拟信号会被发送到激光烧录机中。
然后,激光烧录机会利用激光将这些信号写入到存储介质中。
在光盘或光碟上,有一层特殊的材料,这种材料可以被激光加热并改变其物理状态。
当激光照射到这种材料上时,根据信号的不同,材料的物理状态会发生变化,从而形成了数字信息的记录。
这样,数字信息就被成功地写入到了存储介质中。
除了了解烧录的原理,我们还需要了解一些烧录的相关知识。
首先,不同类型的存储介质对烧录的要求也会有所不同。
例如,光盘和光碟通常需要使用激光烧录机进行烧录,而硬盘则需要使用磁头进行烧录。
其次,烧录的速度也是一个重要的参数。
烧录速度越快,烧录的效率就越高,但是也会增加烧录错误的可能性。
因此,在选择烧录速度时,需要根据实际情况进行权衡。
总的来说,烧录是一种常见的数据存储方式,它的原理主要包括将数字信息转换成激光能够识别的信号,然后利用激光将这些信号写入到存储介质中。
了解烧录的原理及其相关知识,有助于我们更好地使用和维护存储介质,提高数据存储的效率和可靠性。
希望本文能够帮助您更深入地了解烧录的原理,对您有所帮助。
实验5 SD卡烧写Linux操作系统20171211
实验五SD卡烧写Linux操作系统【实验目的】1.熟悉u-boot如何通过网络下载Linux操作系统。
2.掌握SD卡烧写Linux内核以及文件系统到Flash中。
【实验内容】1.制作SD卡启动卡。
2.使用SD卡,网络烧写Linux操作系统到Flash中。
3.理解根文件系统和yaffs文件系统的关系。
【预备知识】首先,掌握实验2.1的如何通过u-boot网络下载Linux操作系统。
【实验设备】1.PC机2.A8实验设备【实验步骤】制作SD卡启动卡。
首先,格式化SD卡,SD启动制作是在linux系统下进行的,所以很重要的一点,就是Ubuntu linux 能正确识别到SD卡(读卡器)。
虚拟机右下角里,选中--USB 2.0 Device连接(与主机断开连接)(C),把SD卡从windows转移到虚拟机中。
(root:123456)当SD连接到Ubuntu linux 的时候,会在/dev 目录下自动建立相应的设备节点(一般是/dev/sdb)。
检查设备节点是否生成。
当SD卡没被识别到的时候。
当SD卡被识别到的时候。
我们通过执行sd_fusing.sh脚本来把u-boot镜像写到SD卡,当然了,执行命令的时候需要用root权限,这个脚本主要的步骤是对SD卡进行分区、格式化成vfat 格式、写入bl1和 u-boot 镜像。
具体步骤如下:•进入u-boot源码目录下的的sd_fusing目录,这个u-boot是已经编译过的# cd sd_fusing•编译#make•制作SD启动,命令如下#./sd_fusing.sh /dev/sdb这样就制作好了一张可以启动的SD卡。
把光盘目录下sd-linux-flash文件夹内容拷贝到制作好的SD卡sdfuse文件夹(没有则新建)。
并把sd卡插入到实验箱的SD卡槽中(上卡槽)。
使用SD卡,网络烧写Linux操作系统到Flash中。
1.打开tftp工具,设置到要下载Linux内核的目录(光盘目录为net-linux-flash),内容如下:2.打开超级终端,连接成功。
AT89C52单片机的SD卡读写设计原理
本文主要介绍了SD卡在电能监测及无功补偿数据采集系统中的应用方案。
设计方案应用AT89C52读写SD卡有两点需要注意。
首先,需要寻找一个实现AT89C52单片机与SD卡通讯的解决方案;其次,SD卡所能接受的逻辑电平与AT89C52提供的逻辑电平不匹配,需要解决电平匹配问题。
通讯模式SD卡有两个可选的通讯协议:SD模式和SPI模式。
SD模式是SD卡标准的读写方式,但是在选用S D模式时,往往需要选择带有SD卡控制器接口的MCU,或者必须加入额外的SD卡控制单元以支持SD 卡的读写。
然而,AT89C52单片机没有集成SD卡控制器接口,若选用SD模式通讯就无形中增加了产品的硬件成本。
在SD卡数据读写时间要求不是很严格的情况下,选用SPI模式可以说是一种最佳的解决方案。
因为在SPI模式下,通过四条线就可以完成所有的数据交换,并且目前市场上很多MCU都集成有现成的SPI接口电路,采用SPI模式对SD卡进行读写操作可大大简化硬件电路的设计。
虽然AT89C52不带SD卡硬件控制器,也没有现成的SPI接口模块,但是可以用软件模拟出SPI总线时序。
本文用SPI总线模式读写SD卡。
电平匹配SD卡的逻辑电平相当于3.3V TTL电平标准,而控制芯片AT89C52的逻辑电平为5V CMOS电平标准。
因此,它们之间不能直接相连,否则会有烧毁SD卡的可能。
出于对安全工作的考虑,有必要解决电平匹配问题。
要解决这一问题,最根本的就是解决逻辑器件接口的电平兼容问题,原则主要有两条:一为输出电平器件输出高电平的最小电压值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。
一般来说,通用的电平转换方案是采用类似SN74ALVC4245的专用电平转换芯片,这类芯片不仅可以用作升压和降压,而且允许两边电源不同步。
但是,这个方案代价相对昂贵,而且一般的专用电平转换芯片都是同时转换8路、16路或者更多路数的电平,相对本系统仅仅需要转换3路来说是一种资源的浪费。
sd卡工作原理
首先看下脱离操作系统如何在S3C2410上实现SD卡的读写。
过程可以分为3个大的步骤:初始化sd 卡、写sd卡、读sd卡;下面的过程是我通过realview-MDK环境测试过的。
一、初始化sd卡
二、写sd卡
写sd卡可以分为3种方式:POLL、中断、DMA (1)POLL写
(2)中断写
(3)DMA写
三、读sd卡
读sd卡也可分为3中方式:POLL、中断、DMA (1)POLL读
(2)中断读
(3)DMA读
现在可以思考linux是如何管理管理SD卡的了。
Linux中SD驱动可以分为3层:块设备层(mmc_block.c ,mmc_sysfs.c,mmc_queue.c)、mmc协议层(mmc.c)、sd驱动层(s3c2410_sdi.c)。
下面从以下几个方面理解驱动:
1、s3c2410_sdi.c代码初始化过程;
2、SD卡块设备注册过程;
3、request及数据传输的实现。
下面介绍的过程参考的代码内核版本是2.6.8,其它版本过程类似。
一、s3c2410_sdi.c代码初始化过程
二、SD卡块设备注册过程
三、request及数据传输的实现。
sd卡工作原理
sd卡工作原理
SD卡是一种常见的存储媒介,具有小巧、便携、高容量等优点。
它是基于闪存技术制造的,闪存芯片中的每一个存储单元都是由一对浮栅晶体管组成的。
浮栅晶体管中存储着电荷,电荷的多少决定了存储单元的状态,即0或1。
当需要读取或写入数据时,SD卡将接收到的指令转换为电信号,通过控制电路控制闪存芯片中每个存储单元的电荷状态,实现数据存储或读取。
同时,SD卡还具有自我保护机制,能够防止数据丢失或损坏。
因此,SD卡在各种便携式设备的应用中得到了广泛的应用。
- 1 -。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sd卡烧写原理
一、概述
SD卡是一种常用的存储设备,它具有体积小、容量大、读写速度快等特点,并且可以被广泛应用于各种嵌入式系统中。
为了在嵌入式系统中使用SD卡,需要将系统镜像烧写到SD卡中,这就需要用到SD卡的烧写原理。
本文将详细介绍SD卡烧写原理。
二、SD卡的结构和工作原理
1. SD卡的结构
SD卡主要由控制器和闪存芯片组成。
其中,控制器负责与主机进行通信,并且管理闪存芯片的读写操作;而闪存芯片则是实际进行数据存储的地方。
2. SD卡的工作原理
当主机需要与SD卡进行通信时,首先会向SD卡发送一个命令。
这个命令包含了操作类型、数据地址、数据长度等信息。
接着,控制器会根据命令类型执行相应的操作,并且将结果返回给主机。
具体来说,如果是读操作,则控制器会从闪存芯片中读取相应的数据并发送给主机;如果是写操作,则控制器会将主机发送过来的数据写入到闪存芯片中。
三、 SD 卡烧写原理
1. 烧写流程
SD卡烧写的流程主要包括以下几个步骤:
(1)格式化SD卡
首先需要将SD卡进行格式化,以便清除SD卡中的数据,并且为接下来的烧写操作做好准备。
(2)分区
接着,需要对SD卡进行分区。
一般情况下,会将SD卡分为两个区域:一个用于存储引导程序和内核镜像,另一个用于存储文件系统。
(3)烧写引导程序和内核镜像
在完成分区之后,就可以开始烧写引导程序和内核镜像了。
这里需要
将引导程序和内核镜像按照一定的格式写入到相应的分区中去。
(4)烧写文件系统
最后,需要将文件系统烧写到SD卡中。
这里同样需要按照一定的格式将文件系统写入到相应的分区中去。
2. 烧写工具
为了方便进行SD卡烧写操作,通常会使用一些专门的工具来完成。
这些工具主要包括以下几种:
(1)dd命令
dd命令是Linux下的一个命令行工具,可以用来复制文件、转换文件格式等操作。
在进行SD卡烧写时,可以使用dd命令将镜像文件直接写入到SD卡中。
(2)Win32DiskImager
Win32DiskImager是一个Windows下的烧写工具,可以用来将镜像文件烧写到SD卡中。
它支持多种格式的镜像文件,并且可以对SD卡进行格式化、分区等操作。
(3)Etcher
Etcher是一个跨平台的烧写工具,支持Windows、Linux和MacOS 等多个操作系统。
它可以自动检测SD卡并进行格式化、分区等操作,并且支持多种格式的镜像文件。
四、总结
本文详细介绍了SD卡的结构和工作原理,并且阐述了SD卡烧写的流程和常用工具。
通过深入了解SD卡烧写原理,可以更好地应用SD卡进行嵌入式系统开发。