新闻中心

EEPW首页 > 消费电子 > 设计应用 > 基于CortexM3的SD卡图片浏览器

基于CortexM3的SD卡图片浏览器

作者:时间:2011-01-14来源:网络收藏


2 软件设计

为使整个系统正常读取SD卡的数据文件和目录,需再创建一个可被Windows操作系统认知的文件系统。考虑到兼容性和方便性,本设计在 μC/OSII操作系统的基础上移植了一种小型嵌入式文件系统FatFs。该文件系统具有支持多种操作系统、易于移植和存储速度快的特点。

2.1 SD卡驱动设计

SD卡驱动不但需要完成SD卡控制器中相应寄存器的设置和向SD卡发送命令,还要实现SD卡的初始化、读写等操作。目的是为其上层提供相应的功能函数,屏蔽直接对硬件的具体操作。SD卡的驱动使用了ZLG/SD的MMC/SD的软件包。软件包中提供一些常用的API函数,只需调用相关的API 函数就可以实现对SD卡的访问,其中包括SD_Initialize(初始化SD卡)、SD_ReadBlock(读SD卡的一个块)、 SD_WriteBlock(写SD卡的一个块)、SD_EraseBlock(擦除SD卡的多个块)等。

2.2 FatFs文件系统设计

FatFs是一个开源的文件管理系统,常用于小型嵌入式系统中实现文件系统,支持FAT12、FAT16、FAT32,遵循ANSI C标准,不依赖于硬件平台。对FatFs的移植,首先需要定义数据类型并与CPU.H的数据类型匹配;其次,使FatFs中的底层函数直接调用 ZLG/SD软件包的函数。例如:

DRESULT disk_read (BYTE drv, BYTE *buff, DWORD sector, BYTE count){
if(count==1){
SD_ReadBlock (sector, buff);//读取SD卡的一个块,调用SD_ReadBlock
}
else{
SD_ReadMultiBlock (sector, count, buff);//读取SD卡的多个块,调用SD_ReadMultiBlock
}
return FALSE;
}

由于篇幅有限,底层函数调用SD软件包的函数不一一列出。通过这些操作就可以调用f_open、f_read、f_write等函数来进行文件的创建、读写等操作。

3 图片解码分析

3.1 JPG格式的分析

JPEG专家组开发了2种基本的压缩算法、2种数据编码方法和4种编码模式。在实际应用中,绝大多数JPG图像使用的是DCT(离散余弦变换)、Huffman(哈夫曼)编码、顺序模式。JPG编码过程主要包括颜色转换、DCT变换、量化、熵编码及Huffman编码等部分。

软件实现图像解码的过程就是图像编码的逆过程,程序编程步骤如下:

① 初始化FatFs文件系统,并利用f_open函数打开jpg格式的文件,用f_read从JPG格式文件中读取图片编码的相关信息,如图像大小、量化表、Huffman表等。

② 读取最小编码单元数据,对其进行熵解码、反量化、反离散余弦变换、YCrCb模式向RGB模式转换等,并将最后的解码数据保存至Buffer或直接输出至显示。

③ 不断重复第②步过程,直至整张图片解码完毕。


关键词: PDA

评论


相关推荐

技术专区

关闭