振南技术干货集: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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/194166.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式和awk

目录 一、正则表达式 1.正则表达式基本介绍 2.正则表达式分类 3.基本正则表达式分类 4.代表字符 5.表示次数 6.位置锚定 7.分组或其他 8.扩展正则表达式 二、awk 1.语法 2.选项 3.基础用法 4.内置变量 5.条件判断 6.数组 总结:本章主要介绍了正则表…

分享:身份证阅读器在ARM Linux系统调用libwlt2bmp.so解码库实现身份证头像解码

头像解码库:libwlt2bmp.so 照片文件名:photo.bmp 原始身份证相片数据:574C66007E00320000F........(此处省略) 调用身份证阅读器Linux开发包,然后调用libwlt2bmp.so解码库文件,传入身份证原始…

0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 嗨,大家好,今天我们来介绍【航拍VR视频补天】。之前已经教给了大家如何处理航拍图片的补天,肯定有很多小伙伴也在好奇,航拍的VR视频…

地图标注系统v0.10.1

微启地图标注系统 thinkphpuniapp前端,微信小程序已适配,近期更新抖音小程序和QQ小程序,后期上分销功能,标注系统用户粘性不算大,本着小程序用完即走的理念,暂时没打算适配安卓和iOS 主要功能 用户端&am…

移动安全威胁:今天和明天的危险

随着技术的发展,个人和公司的设备、数据和隐私所面临的威胁也在发生变化。在本文中,我们将仔细研究当今移动设备安全面临的主要威胁,并共同探讨不久的将来的前景。 但首先让我们从基础开始:如何对移动设备发起攻击? …

1.ORB-SLAM3中如何保存多地图、关键帧、地图点到二进制文件中

1 保存多地图 1.1 为什么保存(视觉)地图 因为我们要去做导航,导航需要先验地图。因此需要保存地图供导航使用,下面来为大家讲解如何保存多地图。 1.2 保存多地图的主函数SaveAtlas /*** brief 保存地图* param type 保存类型*/ void System::SaveAtlas(…

机器学习中的概率与统计知识点汇总

引言 在学习高级知识时,理解基本概念至关重要。为什么?因为基础知识是您构建高级知识的基础。如果你把更多的东西放在薄弱的基础之上,它最终可能会分裂,这意味着你最终无法完全理解你所学的任何知识。因此,让我们尝试…

如何正确选择爬虫采集接口和API?区别在哪里?

在信息时代,数据已经成为了一个国家、一个企业、一个个人最宝贵的资源。而爬虫采集接口则是获取这些数据的重要手段之一。本文将从以下八个方面进行详细讨论: 1.什么是爬虫采集接口? 2.爬虫采集接口的作用和意义是什么? 3.爬虫…

智慧城市政务一网统管解决方案:PPT全文34页,附下载

关键词:智慧政务解决方案,智慧城市解决方案,智慧政务一网统管解决方案,一网统管治理理念,一网统管治理体系,一网统管治理手段,智慧政务综合服务平台建设 一、智慧城市政务一网统管建设背景 一…

CocosCreator 之 Tween缓动系统的使用

版本: 3.4.0 语言: TypeScript 环境: Mac 简介 在CocosCreator 3.x版本后, Tween缓动系统代替了原有的Action动作。官方使用缓动系统的主要目的之一是用于解决离线动画无法满足需求时的动态动画问题。 简单的示例: …

R语言期末考试复习二

上篇文章的后续!!!! http://t.csdnimg.cn/sqvYD 1.给向量vec1设置名为"A","B","C","D","E","F","G"。 2.将矩阵mat1的行名设置为"Row1"&#…

8 个适用于电脑的顶级免费分区恢复软件

Windows PC 上的数据管理有时可能会带来压力,尤其是当您有多个分区时。大多数时候,磁盘管理工具使分析磁盘、释放空间甚至创建分区变得非常容易。但有时会发生不可预见的事件,可能导致分区丢失,从而造成潜在的数据灾难。嗯&#x…

ATA-7030高压放大器在等离子体实验中的应用有哪些

高压放大器在等离子体实验中有多种重要应用。等离子体是一种带电粒子与电中性粒子混合的物质,其具有多种独特的物理性质,因此在许多领域具有广泛的应用,例如聚变能源、等离子体医学、材料加工等。下面安泰电子将介绍高压放大器在等离子体实验…

pycharm安装PyQt5及其工具

PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程_pycharm pyqt5-CSDN博客 上面是原文链接,根据原文链接,我重新记录一下。IDE:pycharm 2023.2.5 一共需要安装5个。 在PyCharm中如何完整优雅地安装配置…

Spring-SpringFramework特性以及IOC相关知识

SpringFramework五大模块 特性 IOC思想和DI IOC是容器,用于管理资源 IOC:Inversion of Control 反转控制 DI:Dependecy Injection 依赖注入 组件以预先定义好的方式接受来自容器的资源注入 IOC在Spring中的实现 spring提供两种方式&…

2023.11.27如何使用内网穿透工具实现Java远程连接操作本地Elasticsearch搜索引擎

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar内网穿透工具实现Java远程连接操作本地Elasticsearch。 什么是elasticsearch?一个开源的分布式搜索引擎&#xff0…

Vue 3 面试经验分享

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

powershell获取微软o365 21v日志

0x00 背景 o365 21v为o365的大陆版本,主要给国内用户使用。微软提供了powershell工具和接口获取云上日志。微软o365国内的代理目前是世纪互联。本文介绍如何用powershell和配置证书拉取云上日志。 0x01 实践 第一步,ip权限开通: 由世纪互联…

正则表达式 通配符 awk文本处理工具

目录 什么是正则表达式 概念 正则表达式的结构 正则表达式的组成 元字符 元字符点(.) 代表字符. 点值表示点需要转义 \ r..t 代表r到t之间任意两个字符 过滤出小写 过滤出非小写 space空格 [[:space:]] 表示次数 位置锚定 例&#xff1a…

小航助学题库蓝桥杯题库stem选拔赛(21年1月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…
最新文章