当前位置: 首页 > article >正文

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

注解目录

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.2 精彩的第三方项目应用


7.汉字电子书(基于 STM8 )**

这里我们来实现一个简单的“电子书”实验。所谓“电子书”,就是读取存储设备(如 SD 卡


图 18.55 使用 Image2Lcd 软件将图片转为 bin 格式


图 18.56 VGA 显示图片实验的硬件平台( FPGA )

或 U 盘)中的文本文件(比如 TXT),将其中记录的字符显示在显示器件上(比如液晶)。在这一过程中,文件系统和字库是最重要的两个部分。文件系统用于读取存储设备上的文本文件,字库则记录了字符所对应的字模信息。

在这个实验中,我们使用 STM8 单片机作为核心,SD 卡作为存储设备NOKIA5110 液晶模块作为显示器件。字库采用GBK 16X16 点阵字库,文本文件格式为最简单的 TXT 格式文件系统方案使用振南的 znFAT。


图 18.57 VGA 显示图片实验效果

实现过程:STM8 单片机使用 nFAT 文件系统方案读取 SD卡上的 TXT 文本文件数据(字符的编码数据),依字符编码计算其字模数据在字库文件中的偏移位置,通过对字库文件进行数据定位及读取,得到字模数据。将字模写入 NOKIA5110 液晶中,从而完成字形的显示在此期间,还要控制好字符在液晶上显示时的翻页及格式换行等操作,最终使用字符可以正确而且工整地展现在我们面前。

我们会发现,在这个实验中字库文件与 TXT 文本文件均存放在 SD 卡上。我们要对它们同时进行操作,也就是说这两个文件要同时处于打开的状态,并同时进行数据的定位与读取操作。这正是 znFAT 的“多文件”功能。图 18.58 为实际的实验效果。


图 18.58 简易汉字电子书实验效果

8.文本语音合成实验(TTS ,基于 NUC120 )*

说起 TTS,可能你会比较陌生。它的全称为 Text-To-Speech,即文字转为语音。(它的逆向应用,从语音转为文字,现在也很火,即 ASR 技术,感兴趣的可以百度一下。)说到它的应用其实我们经常都会遇到。在一些高级的 MP3、MP4、电子书或手机上,可能会有这样的功能

即把文本,比如小说、短信、网页等,通过语音读出来。这种技术就叫作 TTS在这里我们就要实现一个简单的 TTS 功能,将一个 TXT 文件中的文字转为相应的语音通过喇叭播放出来。此实验中使用中国台湾新唐(Nuvoton)的 NUC120 芯片(Cortex-MO内核);TTS 功能使用专门的 TTS 芯片 SYN6288,它可以支持中文与英文,而且还支持多种编码方式,如GB2312、GBK 和UNICODE 等。TXT 文本文件存放在 SD 卡中,文件系统使用振南的 znFAT,从而可以轻松实现对文件的打开及其数据的读取操作。实验示意如图 18.59所示。


18.59 TTS语音合成实验示意

分多次读取 SD卡上的 TXT 文件的数据(SYN6288 的接收缓冲区最大为 200 字节,因此要分多次向其发送文本编码数据)。SYN6288 采用标准串口方式进行数据通信,NUC120 只需使用 znFAT 读取 TXT 数据通过 UART 发送给 SYN6288 即可。此实验硬件平台如图18.60 所示。

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

这一实验振南以前做过,是一个小猫跳跃的动画播放,他是基于 51 和 OLED 来进行实现的。这里我将其移植到了 FPGA 上,基于NIOS 软核来进行实现(芯片为 EP2C5Q208)。在我的开发板上外扩了一片32MB 的SDRAM,因为在程序中是将整个 ZNV 文件读到 RAM(什么是ZNV,请参见相关章节),然后再送到 LCD12864 进行显示播放。一开始有一个 loading 的过程,就是在读文件。(NIOSIL上的代码是必须依赖于具体订制的 NIOS CPU 的实验中有大量与 CPU 相关的内容。NIOSII 的开发使用 NIOSII IDE,如图 18.61 所示。实验效果如图 18.62 所示。

实际上还有很多的精彩实验,很多是源自于广大网友的,正所谓“高手在民间”。这些实验充满了丰富的想象力,涉及很多不同的 CPU 平台,加之实验者高超的技艺,最终的实验效果


图 18.60 TTS 语音合成实验硬件平台


图 18.61 此实验中使用 NIOSII IDE 进行程序开发


图 18.62 《跳跃小猫》动画播放实验效果

实在可称得上炫目。但是因为种种原因振南只是收集到了其中一小部分,列举如上,供大家赏析。

这章就到这里。振南并没有去讲文件系统和 znFAT 的相关技术内容,因为短短一章,根本讲不清楚,而且也并不是每个人都感兴趣。如果这一章激起了你的兴趣,那可以看看《嵌入式FAT32文件系统设计与实现--基于振南 znFAT》一书。

znFAT 最初发布于 2011 年,中间有无数次的迭代,基本定型于 2014 年,经过 10 年的传播和衍化,现在已经成为与 FATFS 齐名的嵌人式 FAT 文件系统方案得到了广泛的应用和

认可。它应该是市面上占用资源最少,移植最为简单的纯国产方案之一了。声明:znFAT 加人开源软件认证体系,我本人也是坚实的开源软件支持者。大家可以免费获取 znFAT 的源码并使用、学习、修改、传播,但为了它更好的发展,请注明出处,如“此项目引用了znFAT,特此声明”

大家可以在 gitee 搜索znFAT,或者直接在振南网站(znfat,znmcu.com)下载,有疑问可直接加我微信 ZN1234 咨询。


http://www.kler.cn/news/149379.html

相关文章:

  • 【代码】数据驱动的多离散场景电热综合能源系统分布鲁棒优化算法matlab/yalmip+cplex/gurobi
  • java学习part21枚举
  • 选择跨网数据摆渡系统时,你最关注的功能是哪些?
  • 设置MATLAB启动时弹到上次退出时的工作文件夹
  • java List集合(ArrayList,LinkedList,Vector)
  • 【黑马程序员】——微服务全套——实战篇1
  • 5 时间序列预测入门:LSTM+Transformer
  • 数组中的第 K 个最大元素(C++实现)
  • UE5学习(游戏存档,两种适应性的射线检测,时间膨胀)
  • 解决Python中删除临时文件时的文件占用问题
  • C++调用GPIB驱动头文件ni488.h内容详细分拆解
  • SEO工具-免费功能最全的5款SEO工具
  • 如何选择一款安全稳定的跨境浏览器?
  • 西南科技大学(数据结构A)期末自测练习二
  • TCP与UDP
  • pgsql 更新A表的x字段通过查询b表的z字段
  • scoi - 2013 -- 数数题解(这道题是一个非常好的数位dp题)
  • 利用sql语句来统计用户登录数据的实践
  • Pytorch:torch.utils.data.DataLoader()
  • 系列五、Spring整合MyBatis不忽略mapper接口同目录的xxxMapper.xml
  • 搜索引擎语法
  • Alibaba Java诊断工具Arthas查看Dubbo动态代理类
  • 【古月居《ros入门21讲》学习笔记】14_参数的使用与编程方法
  • 你知道显卡型号上的数字是什么意思吗?数字越大就越好吗?
  • 34.基于webpack搭建开发环境
  • ground truth 在深度学习任务中代表的是什么意思?
  • 第二证券:机构密集调研消费电子、半导体产业链
  • 三大录屏软件推荐,让你轻松录制屏幕
  • Vue实现纯前端导入excel数据
  • FFmpeg介绍