基于ARM9和μC/OS-II操作系统的SD卡文件系统的设计与

发布者:RainbowJoy最新更新时间:2018-02-09 来源: eefocus关键字:ARM9和  μC  OS-II  操作系统  SD卡  文件系统 手机看文章 扫描二维码
随时随地手机看文章

    随着嵌入式式技术的不断发展,ARM处理器凭借其高性能、廉价、耗能低的优质特性而得到广泛应用。文中主要针对货车动态称重系统中大量实时载重数据存取的需求,在ARM9嵌入式处理器和μC/OS-II操作系统基础上,设计实现了一种SD卡文件系统。该系统具有实时性强、存取速率高、易维护,易移植等特点。

    1 硬件接口电路设计

    本系统硬件开发平台处理器为S3C2440A,是三星公司推出的16/32位RISC微处理器,ARM920T内核,主频400 MHz,最高可达533 MHz,内部具有丰富的系统外围控制器和多种通信接口。SD卡支持SPI和SD两种通信模式,S3C2440A具有SD卡接口,支持SD总线模式,所以不再像低端的ARM处理器那样采用SPI模式,而是采用SD总线模式,这样可以大大提高SD卡的读写速度。S3C2440A与SD卡读写器的接口电路如图1所示。     

基于ARM9-μC/OS-II软硬件平台的SD卡文件系统的设计与实现

    SD卡的DAT0~DAT3、CLK(时钟线)和CMD(命令线)分别连接到S3C2440A的SDDATA0~SDDATA3、SDCLK和SDCMD引脚。SD卡支持单线和宽总线的数据传输,宽总线数据一次传4位,数度更快,因此,此设计采用宽总线方式。

    2 SD卡文件系统的设计与实现

    μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务小型的嵌入式操作系统,它采用可剥离式内核实施任务调度,实时性很强,而且每个任务具有唯一的优先级,能够保证就续表中任务优先级最高的任务优先执行。μC/OS-II大部分代码是用移植性很高的C语言编写的,只极少部分与处理器密切相关的部分代码用汇编语言编写,因此只需要做很少的工作就可以很方便地将它移植到各种不同构架的微处理器上。

基于ARM9-μC/OS-II软硬件平台的SD卡文件系统的设计与实现

    为了增强软件的可移植性,易维护性,程序设计时采用层次化,模块化设计。模块化结构如图2所示,除了用来进行管理的操作系统外,共分为4个模块,包括SD卡底层驱动,文件系统,API接口,用户应用程序。底层驱动完成SD卡初始化,以及实质上的读写功能;文件系统采用PC机普遍支持的FAT32文件系统规范来设计,完成文件的创建,读写,删除功能;API接口封装文件系统提供的函数,供上层应用使用;用户应用程序通过调用文件系统提供的API函数,完成相应的功能。各个模块的具体实现下面会做以说明。

    2.1 底层驱动设计

    2.1.1 SD卡初始化

    SD卡读写操作都是基于命令的,通过向SD卡发送命令并读取命令的响应来实现对SD卡的控制。在SD卡读写之前,首先要进行初始化操作。这是确保SD卡能进行正常数据读写的前提,SD卡初始化完成了SD卡上电,确认,设置逻辑地址,使其进入传输状态以及设置总线带宽几大主要工作。需要注意的是,在发送使SD卡空闲命令CMD0之前至少等待74个时钟,确保SD卡进入SD总线模式。SD卡初始化代码编写如下:

 

65
56

    2.1.2 SD卡读写实现

    初始化完戚之后,就可对SD卡进行读写操作,通过设置SDI数据控制寄存器SDIDCON来确定SD卡的读写长度,读操作时数据长度作没有明确限制,写操作时,每次写的长度必须为BLOCK的倍数。SD卡的读写可以一次性读写单块数据,也可以一次性读写多块数据,多块数据的读写结束时,要发送CMD12结束指令。主要实现函数:Write_Card_Block()-写入单块数据;Write_Card_Data()-写入多块数据;Read_Card_Block()-读多块数据;Read_Card-Data()-读多块数据。

    2.2 文件系统设计

    2.2.1 FAT32文件系统概述

    Windows95 OSR2和Windows 98开始支持FAT32文件系统,它是对早期DOS的FAT文件系统的增强,由于文件系统的核心一文件分配表FAT扩充为32位,所以称为FAT32文件系统。FAT32包含DBR、保留扇区、FAT1、FAT2(第一个FAT的备份)、根目录、数据区5部分。DBR(Dos Boot Rec ord)是操作系统引导记录区;保留扇区是为了对DBR作备份或留待以后升级时用;文件分配表区共保存了两个相同的FAT表,文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的;FAT32根目录区(ROOT区)不再是固定区域、固定大小,可看作是数据区的一部分;数据区用来存放真正要记录的文件数据,本系统定义的一簇为4K个字节。

    2.2.2 文件系统初始化

    文件系统初始主要是读取SD卡的DBR扇区(0扇区),并分析该扇区内容,从而获取每扇区字节数,每簇扇区数,FAT开始扇区号,根目录开始扇区号等关键信息,为文件的创建,读写等操作做准备,文件系统初始化函数代码如下:

     

76
76

     

    2.2.3 文件创建

    SD卡上创建文件或目录的过程就是在文件目录表FDT中申请登记项的过程,为此程序设计时定义了如下结构体:   

76
76

    在文件目录项FDT中申请登记项动作就是通过对上述结构体的操做来完成的,操作流程,也是文件创建流程如图3所示,当把SD卡插入卡插槽时,系统首先初始化SD卡,即读取SD卡的DBR扇区(0扇区)获取相关信息,接下来打开所要创建文件的路径,如果路径不存在,创建该路径,如果存在,搜寻FAT表,找空闲簇。再接下来把要创建的文件的相关信息(文件名,文件大小,创建时间,属性等)填入上述结构体,把该结构体写入文件目录项FDT,相应的扇区写入数据,最后更新FAT链表。文件创建实现函数为FAT32_Creat_File()。     



76

    2.2.4 文件读写

    文件系统对SD卡上文件的管理都是以簇为单位进行的。要读文件,就要首先找到文件,查找文件就是把文件名和文件目录项FDT中的文件名匹配。如果匹配不成功,说明该文件不存,此时就可以利用函数FAT32_Creat_Flie()创建。如果匹配成功读就找到了该文件,在匹配成功的那个目录登记项中找到该文件的起始簇号,知道了该起始簇号,就可以根据FAT表中的簇链关系找到到第2簇,第3簇,直到最后一簇文件结束。写文件时,由于FAT2是FAT1的备份,要保证两者的一致性,就要对它们做同样的写操作。主要的函数有:FAT32_Open_File()-打开文件;FAT32_Read_File()-读文件;FAT32_Write_File()-写文件;FAT32_Close_File()-关闭文件。

    2.2.5 文件删除

    FAT32文件系统中所谓的删除实际上只是把文件名称的第一个字母改成一个特殊字符(在文件目录登记项上做一个删除标记),把文件在FAT表中占用的簇标记为空簇,但文件包含的数据仍在磁盘上,下次将新的文件保存到磁盘时,这些簇可能被新的文件使用,从而覆盖原来的数据。因此,只要不保存新的文件,被删除文件的数据实际上仍旧完整无缺地保存在磁盘上。文件删除函数为:FAT32_DeleteFile()。

    2.3 API接口设计

    API接口模块要是向用户应用程序提供文件的创建读写删除功能,该模块通过调用文件系统的相关函数来实现。主要的借口函数有:OS_ CreateFile()-创建文件;OS_OpenFile()-打开文件;OS_WriteFile()-文件写入数据;OS_WriteFile()-读文件数据;OS_CloseFile()-关闭文件;OS_DeleteFile-删除文件。

    2.4 用户应用程序设计

    该模块通过直接运用文件系统提供的API接口函数完成对称重数据信息的操作,只需要对μC/OS-II操作系统直接负责,并不需要考虑文件系统的具体实现问题以及底层硬件驱动问题。

    3 结束语

    本设计作为货车车载动态称重系统的数据存储模块,采用容量大、体积小、性价比高的存储介质SD卡来存储长时间段的测量数据,对FAT32进行了裁剪,并结合SD卡的底层的读写程序,从而实现了嵌入式SD卡文件系统,这样就能很方便通过上位机对SD卡记录货车称重数据进行查询,综合分析以及备份。同时该方法为其它数据采集系统提供了一种非易失性存储器的解决方案,采集到的数据会以标准文件的格式记录到SD卡上,便于文件的统一管理。


关键字:ARM9和  μC  OS-II  操作系统  SD卡  文件系统 引用地址:基于ARM9和μC/OS-II操作系统的SD卡文件系统的设计与

上一篇:基于μCOS-II的CAN通讯模块设计
下一篇:利用NAND Flash实现对嵌入式系统的远程更新

推荐阅读最新更新时间:2024-03-16 15:54

改写游戏史及3C产品的「芯片界明日之星」:感测芯片
    实现新世代智能生活 感测芯片应用起飞 移动、挥棒、跳跃,2006年,采用感测芯片技术所推出的电视游乐器Wii,改写了游戏史。装在Wii摇杆里头的芯片,让使用者能抓住无线摇杆,身历其境地做三度空间,前后、上下、左右的移动操作,另外的影像感测芯片,则可让使用者的位置与屏幕上做同步移动。而不需要任何控制器的Kinect,则是靠著摄影机镜头捕捉使用者的动作,一次可轻松撷取彩色影像、3D影像及声音讯号等,同时运用了三种深度感测芯片技术。 和一般用在计算机里的芯片不同,感测芯片因为能够精确判读外在环境的状况,接收讯息后还可进一步侦测出距离、光线、温度、影像或动作,敏锐的反应让它可添加在原本平凡无奇的产品里,让人类的生活变得比以前更智能化
[手机便携]
linux操作系统交叉编译环境的建立方法
基于linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口建立连接关系。   但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的旧机器就可以),在该PC上安装桌面的Linux操作系统(如Red Hat Linux 8.0及以上),可以采用默认的安装选项(注意要包含ftp服务),这台PC作为Linux服务器,除管理员以外,一般不直接让其他人去操作。
[电源管理]
PIC单片机按键控制PWM输出LED灯亮度C语言程序
#include pic.h //调用头文件,可以去PICC软件下去查找PIC16F87XA单片机的头文件 __CONFIG(0x3b31); //定义配置字,晶振类型:XT,启动开门狗,禁止低电压编程 //************************************************************************ #define HC138_A RE2 //定义U6、U7、U8的A为RE2端口 #define HC138_B RE1 //定义U6、U7、U8的B为RE1端口 #define HC138_C RE0 //定义U6、U7、U8的C为RE0端口 //***************
[单片机]
迎合小接口设计 SlimPort/MHL支援Type-C连接器
    SlimPort与行动高画质链结(MHL)阵营将计划支援通用序列汇流排(USB)Type-C连接器。USB Type-C连接器标准定案在即,SlimPort和MHL两大传输介面阵营已隔空喊话,预计在新一代规格中支援USB Type-C连接器,以借力USB介面标准在个人电脑(PC)及行动装置市场的高渗透率,加速扩张其市场势力版图。 Analogix全球销售副总裁Matthew Robert Ready表示,USB Type-C连接器标准正式底定后,预期将会在笔记型电脑、平板装置及智慧型手机市场遍地开花,其中预计最快于2014年第四季即可见到率先导入USB Type-C连接器的笔记型电脑商品;尔后,随着成本续降,USB Type
[手机便携]
C语言编程--数组控制流水灯-2
/*********************** 数组控制流水灯--配套51单片机开发板 ********************/ #include AT89X51.H unsigned char code table ={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe,
[单片机]
基于AT89C51的电源切换控制器的设计与实现
摘要:介绍了基于A189C51的电源切换控制器的设计方案,从硬件结构,软件编制和抗干扰措施三方面进行了详细讨论。试验和实际运行表明,该电源切换控制器性能优.价格低.可靠性高。 关键词:AT89C51;电源切换控制器;工作模式 0 引言 随着现代工业的发展和社会的进步,人们对供电持续性的要求已越来越高,如要求供电电源采用两路甚至两路以上,一路为常用电源(如外线电源),另外的为备用电源(如内部的发电电源)。因此,需要一种能在电源之间进行自动切换的装置,以保证某路正在使用的电源在出现故障时能自动切换到另外的正常电源上,保证供电不问断或间断时间在允许的范围内。该电源切换装置必须具有反应灵敏、工作可靠、功能齐全、声光指示等特点。传统的电源
[应用]
嵌入式arm学习总结(三)--IIC 基于AT24C02
1.IIC---SDA、SCL IIC协议 发明者 Philips公司 通过IIC芯片收取版权税 近距离通信 标准模式 100KBIT/s 快速模式 400K 常用 S3C2440使用 高速模式 3.4M 上拉电阻 10K 如果速度越快,上拉电阻越小,增加驱动能力 2.IIC读写过程 IIC读过程: 1)开始 2)写芯片地址 3)写芯片内部地址 4)将写变成读 5)读数据 6)结束 IIC写过程 1)开始 2)写芯片地址 3)写芯片内部地址 4)写数据 5)结束 AT24c02芯片 它的芯片地址为 1010 a2,a1,a0,R/w a2,a1,a0硬件接地 0xa0
[单片机]
基于LabVIEWC8051F350的纺丝张力监控系统
0 引言 丝线张力是纺纱、假捻等加工过程中影响产品质量与加工效率的一个重要参数。其中,丝线张力波动越大,产品质量越差,并将影响后序加工产品的外观及舒适性。因此需对生产过程中丝线张力加以监测、控制,以减小丝线张力的波动。目前,国内对丝线张力的监测大多还停留在随机抽检阶段,监测准确性不高,效率较低;国外的一些监测设备可实现丝线张力实时监测,但价格昂贵且技术保密。因此迫切需要自主研究设计一套丝线张力在线监控系统。 1 系统总体运行机制 基于LabVIEW和C8051F350单片机的纺丝在线张力监控系统采用国产自主研制的专用张力传感器,以嵌入式混合信号微处理芯片8051F350单片机为下位机,运用虚拟仪器图形化开发平台LabVI
[测试测量]
基于LabVIEW<font color='red'>和</font><font color='red'>C</font>8051F350的纺丝张力监控系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved