振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(6)

简介: 振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(6)

注解目录

1、znFAT 的起源

1.1 源于论坛

(那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。)

1.2 硬盘 MP3 推了我一把

(“坤哥”的硬盘 MP3 播放器,让我深陷 FAT 文件系统不能自拔。)

1.3 我的导师-- 顾国昌教授

(哈军工时期的老教授,德高望重的人生导师。)

1.4 我的母校-- 哈工程

(隐藏牛校哈工程,网络名嘴张雪峰所言非虚。振南给你讲讲母校历史:哈军工、

工程学院、哈船院、哈工程。)

1.5 那场严重超时的答辩会

(20 分钟的答辩超时 1 小时,老师表示赞叹。现场承诺要把文件系统写成书。)

1.6 时隔多年的谢师会

(承诺必须兑现,5 年之后的谢师会,我擎书谢师。不要轻易作出承诺,除非你真

得能作到!)

2、高手如云 认清对手

2.1 国外 FAT 方案简介

1 )FATFS

2 )EFSL

3 )UCFS

4 )TFFS

5 )DOSFS

(列举那些主流 FAT 文件系统方案,并进行详细介绍。)

2.2 国内 FAT 方案简介

1 )ZLG/FS

2 )沁恒 FAT

(国内尚无成型开源的 FAT 文件系统方案。但是我们要支持国货。)

3、硬刚高手 挑战自己

3.1 与高手竞速

3.2 挑战自己

(这一节我写了一个月。环比各大知名方案,看看到底谁更快!最终,挑战了自我。)

4、znFAT 精彩应用大赏

4.1 振南的精彩实验

4.1.1 SD 卡 卡 WAV 音频播放器

4.1.2 SD 卡电子滚动屏

4.1.3 SD 卡 卡 MP3 播放器

4.1.4 AT89S51 离线下载器

4.1.5 数据采集导入 EXCEL

4.1.6 串口文件窃取器

4.1.7 录音笔于 (基于 VS1003B) )

4.1.8 文件无线传输实验

4.1.9 嵌入式脚本程序解释器

4.1.10 绘图板实验(基于 STM32F4 ,屏幕截图存为 BMP 图片)

4.1.11 MEMS 声音传感器“ 硅麦” 录音实验

(znFAT 的最大亮点在于各种精彩的应用,希望振南的这些实验可以让你眼前一亮。)

4.2 精彩的第三方项目应用

4.2.1 仿 仿 Metro UI 系统应用实验

4.2.2 通过 U 盘对产品进行升级

4.2.3 嵌入式网页服务器

4.2.4 STM32+LD3320 作声控音频播放器

4.2.5 BMP 图片浏览

4.2.6 VGA 显示 SD 卡中的图片(基于 FPGA) )

4.2.7 汉字电子书(基于 STM8) )

4.2.8 文本语音合成实验(TTS ,基于 NUC120) )

4.2.9 《跳跃小猫》动画播放(基于 FPGA NIOSII)

znFAT 精彩应用大赏

4.1 振南的精彩实验

6.串口文件窃取器

所需主要硬件:STC12L2K60S2(STC 出品的增强型 51 单片机,位于 ZN-X 开发板基板)SD/SDHC 卡

实验详细说明:

“串口文件窃取器”,顾名思义,是用来“盗取文件”的。一次和朋友的聊天中,提到了“如何从一台涉密计算机中盗取文件?”的问题。要知道在一些机要单位,办公电脑是绝对封锁的,不管是从软件上,还是硬件上。USB 口和网口可能都被堵上或拆掉了,机箱也加上了锁,阻断了一切文件被非法拷出的途径。要从这样一台守卫森严的电脑中把文件搞出来,是个挑战。其实这一“盗取文件”的行为并不一定就是不良行为,有时候为了维权,也许我们也需要一些特殊手段,比如从封锁的电脑中得到一些证据等

经过思考,我们最终敲定了一个方案--“串口文件传输”。这一方案大致包括以下几个部分:

(1)电脑端的串口通信和文件发送软件;

(2)用于接收串口数据的外部设备;

(3)用于将接收到的数据进行存储的存储介质,并可将数据存为文件;(4)用于控制数据传输与通信的通信协议。实验示意如图 18.20 所示。

图 18.20 串口文件窃取器的实验示意图

电脑端使用什么软件来发送文件数据呢?有人说:“用串口助手就可以了!”不错,但你有没有考虑到对于一个封锁的电脑来说,串口助手又如何放进去呢?有人说:“那只能现编了?”他的意思是说如果电脑上有 VC 或 VB 等软件开发环境,我们可以自已去实现一个简易的串口通信软件。但是如果没有任何软件开发环境呢?又或者没有那么多时间去让你写这样一个软件呢?其实我们可以使用 Windows 自带的一个串口通信软件----超级终端,如图 18.21所示。(现在最新的 WIN7WIN10 已经没有超级终端了,振南在这里只是举一个例子。

图 18.21 文件传输使用 Windows 自带的超级终端

光有串口通信还不行,还要有文件数据发送功能,并遵循一定的通信协议(用于控制数据的传输)。其实在超级终端中都有(菜单;传送->发送文件),如图 18.22 所示。

图 18.22 超级终端中的文件发送功能

单击发送文件之后,可以看到上图的对话框,用于选择要发送的文件,以及使用的数据传输协议。我们在这里选择 modem。什么是 Xmodem? 请看本书“大话文件传输”这一章。

实验硬件平台如图 18.23 所示。

图 18.23 串口文件窃取器实验硬件平台

实验效果如图 18.24 所示。

7.录音笔

所需主要硬件:STC12L2K60S2

VS1003B(MP3 解码器)

SD/SDHC 卡

USB 串口模块(用于输出打印信息)

实验功能描述:此实验使用 VS1003B 的录音功能,VS1003B 通过 SPI接口输出 ADPCM编码的音频数据。STC51 单片机创建 WAV 文件,将数据存入其中,最终形成波形音频文件。

图 18.24 串口文件窃取器的实验效果

实验中,通过按键来控制录音的启停。可多次录音,每次都会创建新的 WAV 文件,如 RECO.WAV RECI.WAV等。录制的 WAV 文件,可以在 SD 卡上看到,通过电脑上的播放软件进行回放。实验示意如图 18.25 所示。

图 18.25 录音笔实验示意图

实验硬件平台如图 18.26 所示。

图 18.26 录音笔实验硬件平台

效果如图 18.27 所示。(录制音频的波形图和运行 log 。)

振南评注:VS1003B 一直以来我都只是在使用它的音频解码功能,而没有用到它的录音功能。虽然有过几次要做录音实验的想法,但都是浅尝辄止,并没有实质性的成果。还好最后终于完成了这个录音笔实验,现在感觉 VS1003B 的录音功能还是挺简单的。实现录音功能的最大问题在于数据的存储速度。对于音频数据采集来说,在给定一个采样频率之后,它在单位时间内所产生的数据量就是一定的了。我们必须要在这段时间内完成接收数据与写人文件的操作,一点都不能慢,否则必然影响后面音频数据的处理,最终可能导致音频文件播放的失真,

图 18.27 录音笔实验演示视频截图

或者根本放不出声音。比如对于 8 kHz,单通道的 16 位音频录音来说,它的数据速率为 128Kbps,这要求 SPI接口必须要快,znFAT向 SD 卡中写人数据的效率一定要足够高。所以,在此实验中振南使用了硬件 SPI,并开启了 ZFAT 的各种缓冲加速机制,这使得音频录制毫无压力。

基于 znFAT 在单片机上实现“数码相框/视频播放器/相机/录像机”这些实验的详细讲解请移步本书相关章节!

8.文件无线传输实验

所需主要硬件;STC15L2K60S2、STM32F103RBT6、SD/SDHC 卡NRF24L01 模块

实验详细介绍:

在振南的 ZN-X 开发板上配备了 NRF24L01 射频收发模块的接口,兼容 NORDIC 公司官方公版模块,如图 18.28 所示。

图 18.28 振南的ZN—X 开发板所支持的 NRF24L01 模块

znFAT 文件系统与射频能有什么关系呢?它们搭配在一起又能实现什么功能呢?应该说它的意义还是比较大的,可以实现文件数据的无线传输功能。这为文件系统的应用创造了新的思路。

你有没有过这样的经历:当你进入飞机场时,会通过蓝牙或无线网络接收到一些信息文件,诸如通知、新闻或邮件等;再比如有的时候我们需要为野外工作的设备升级固件,但又很难接近设备,也许你会希望有一种脱机烧录器,可以读取 SD 卡上的程序文件,通过无线方式完成烧录工作。有了基于射频的无线通信技术之后,很多东西都可以驭之于数里之外了

NRF24L01 是非常经典的 2.4 GHZ 射频通信芯片,它以高可靠性高数据传输速率等优点得到人们的广泛应用。此实验中使用NRF24L01,51 与STM32(两块 ZN-X 开发板),再配以SD卡与振南的 znFAT 文件系统方案,最终完成文件的无线传输与存储。实验示意如图18.29 所示。

图 18.29 文件无线传输实验示意图

实验中 51 单片机读取 SD 卡中的某一文件,将其数据按一定的通信协议分多以无线方式传至STM32,STM32 接收数据解析后将有效数据写入 SD 卡的文件中。在这个过程中,SD卡,NRF24L01 等硬件的底层驱动以及 zFAT 文件系统其实都不是问题,它们在这里都已经比较成熟了。最重要的其实是通信协议,它是决定数据传输是否成功的核心因素。

振南这里使用的是一种自定义的文件传输协议,它简单易行,又能基本上保证数据的正确性。协议具体内容如图 18.30 所示。

图 18.30 文件无线传输协议

在具体的实现中,首先检测数据头是否为’@’,如果是则认为它是一个合法的数据包,进而开始对后面的数据进行解析,否则认为它是一个非法数据包,输出错误提示。由于NRF24L01一次最多只能收发 32 字节的数据,所以本协议中数据包总长度为 32 字节。每次传输的最大有效数据长度为 28 字节,其余 4 个字节分别用于记录数据头有效数据长度与当前数据包的包号(0~N)。有效数据长度用来告诉我们从此包数据中提取多少有效数据,写入SD 卡中;数据包号可用于检测是否存在数据包丢失,进而采取相应的措施(比如重传,不过此实验中没有实现重传机制,如果出现包现象,则直接将数据补 0。要实现重传可以使用现成的成熟协议,比如Xmodem)。

实验硬件平台如图 18.31 所示。

实验过程中的串口信息如图 18.32 所示。

图 18.31 文件无线传输实验平台与功能示意

图 18.32 文件无线传输实验中的串口信息

此实验中使用 51 来发送数据(文件打开与数据读取),STM32 接收数据(文件创建与数据写入),当然也可以反过来。振南在做这些实验的时候,尽量使用更多种类的单片机,用意在于向大家展示 znFAT 良好的可移植性。这也是 ZN-X 开发板上同时配备三种 CPU 的初衷之一。

实验完成之后,在数据接收方的 SD 卡中会出现一个与源文件完全相同的文件,我们可以对它们进行比较,以验证数据传输是否正确。(可以使用 Windows 命令行中的 FC 命令,也可以使用文件比较软件,比如 Beyond Compare)。

相关文章
|
6月前
|
传感器 开发框架 算法
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(7)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(7)
|
6月前
|
存储 算法 语音技术
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(3)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(3)
|
6月前
|
存储 IDE 语音技术
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(9)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(9)
|
6月前
|
存储 语音技术 芯片
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(8)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(8)
|
6月前
|
传感器 数据采集 算法
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(4)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(4)
|
6月前
|
存储 机器学习/深度学习 机器人
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(1)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(1)
|
6月前
|
数据采集 传感器 语音技术
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(5)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(5)
|
6月前
|
存储 传感器 数据采集
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(2)
振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(2)