TransFlash存储卡在嵌入式系统调试中的应用
2.4 FAT32文件系统移植
在文中,FAT32文件系统移植主要包括系统初始化和文件管理程序修改(主要是文件读取)。FAT32的初始化就是找到各个部分的起始扇区位置。首先查找MBR的分区表,获取分区信息,然后找到每个分区的DBR,再根据DBR中的BPB得到分区的起始扇区、结束扇区、文件系统类型、FAT表个数、每簇占用扇区数等信息。最后根据下面的算法得到文件分配表FAT、文件目录表FDT和数据区DATA的起始扇区。FAT32读取文件流程如图4所示。
2.5 设计Blob命令下载系统镜像
Blob启动之后,首先初始化一些基本的硬件设备如串口等,然后检测系统内存映射,设置CPU运行频率等一些参数,接着就进入了命令行模式。
在Blob中提供tfdownload命令,主函数的形参就是接收到的命令内容和参数。若参数为“init”,则调用TF卡驱动的初始化,否则将此参数作为文件名传给FAT32文件系统打开并读取文件内容。最终实现“tfdownloadinit”调用TF卡驱动初始化TF卡。使用“tfdownload”+文
件名可以调用FAT32文件系统和TF卡的驱动下载该文件名的镜像到内存中。
2.6 MakeFile文件修改与交叉编译
(1)TF卡驱动与FAT32文件系统编译
按照Blob中驱动程序的结构,TF卡驱动与FAT32文件系统源文件保存在/src/blob/Platform/Common/Source目录下,而FAT32文件系统头文件在/src/blob/Platform/Common/include目录下,要在编译Blob的时候将添加的驱动一起编译,需要更改相应的Makefile。
在/src/blob/Platform/Source下有三个Makefile文件,分别是Makefile.am,Makefile和Makefile.in,修改Makefile.am即可,Makefile和Makefile.in会自动修改。主要增加Makefile的头文件寻找目录和编译文件。
(2)Blob命令编译
src/commands下的命令编译由同目录的Makefile确定,同样需要修改Makefile使添加的命令编译到Blob中去。另外,要使该命令在Blob中生效,还需要修改Blob的configure.in文件,在configure.in中添加:blob_commands=“$blob_commands,tfdownload”;。
(3)编译Blob
linux-2.6.25中集成了Blob,用linux-2.6.25的工具链编译好之后,在…/pxalinux/MHN-LINUX-PLATFORM/rel/target/bin中,boot_nontrust.bin就是生成的Blob镜像。
2.7 系统镜像下载的实现
先用tfdownload init命令初始化TF卡驱动,然后使用tfdownload下载系统镜像到内存中,再使用Nandwrite命令写入NandFlash中。
3 Android下挂载TF卡实现数据存储
在Android系统中使用TF卡做储存器,必须先将TF卡挂载到Android上。要启用void,需要在Android启动配置文件init.rc中关闭mountd并开启void服务。通过对配置文件init.rc进行下面的修改完成此项功能。
service void/system/bin/void //vold服务开启
socket void stream 0660 root mount
……
#service mountd/system/bin/mountd//mountd服务关闭(被注释了)
#socket mountd stream 0660 root mount
void.conf文件是void程序挂载设备的配置文件,里面记载了挂载设备的设备路径、设备类型以及挂载的目标位置(挂载点)。需要在该文件中加入TF卡的挂载信息,然后,将void.conf加入到system/etc目录下,void程序就可以直接读取该配置文件了。
FAT32属于Windows分区,因为Windows分区里面的文件是没有权限这个概念的,所以在Linux系统中使用此分区时要手动指定默认权限。挂载TF卡之后Android的/sdcard目录不能直接通过chmod命令来修改对于system组的读写权限,在system下是无法直接访问TF卡的,需要在挂载的时候添加权限。在void中,真实挂载TF卡的操作如下:
rc=mount(deVpath,vol->mount_point,“vfat”,flags,“utf8,uid=1000,gid=1000,fmask=711,dmask=700,shortname=mix ed”);
其中uid代表属主,uid=1 000代表system用户,fmask和dmask分别对应文件和目录的权限8进制码的反码。
4 设计结果展示
本文调试的数据采集与传输单元实物如图5所示,TF卡位于PCB板右上角。使用该单元录制视频并保存在TF卡中,设定录制时间为30 s,30 s后关闭,取出TF卡,将TF卡与PC连接,录像文件效果如图6所示。
使用TF卡下载系统镜像操作步骤如下:
(1)用“tfdownload init”命令初始化TF卡驱动,返回“TF CARD INIT SUCCESS!”即表示TF卡初始化成功。
(2)然后使用“tfdownload”+文件名的方式下载系统镜像到内存中,显示“TFCARD download done!”即表示TF卡下载镜像成功。
(3)最后使用Nandwrite命令将内存中的镜像写入NandFlash中,返回“Done!”即表示写入成功。
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)