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

news2024/9/24 9:24:50

注解目录

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.coloradmin.cn/o/1263686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Solidworks模型上色技巧以及增加快捷键快速打开和关闭“阴影效果和楼板反射”

Solidworks模型上色技巧 Chapter1 给Solidworks模型上色技巧设置外观的方法具体操作删除颜色的技巧这样操作: Chapter2 SOLIDWORKS小技巧 | SolidWorks装配体零件快速上色自动设置Chapter3 solidworks装配图如何去掉阴影?Solidworks2022中的阴影效果怎么…

5.24每日一题(判断原函数是否为周期函数的基本定理 )

原函数为周期函数的充要条件:f(x)在某区间上的积分为0

高中生分科考试--座位编排系统

这个系统是帮我一同学的哥哥的做的座位编排系统,他是某个学校的教育从事者 基本需求:就是能够根据他提供的各个分科班级同学的成绩单来选择相同分科的考场编排(按成绩高低),同时输入相应的考场数,和每个考…

【算法萌新闯力扣】:旋转链表

力扣题目:旋转链表 开篇 今天是备战蓝桥杯的第25天和算法村开营第3天!经过这3天的学习,感觉自己对链表的掌握程度大大地提升,尤其是在帮村里的同学讨论相关问题时。本篇文章,给大家带来一道旋转链表的题目&#xff0c…

【VROC】看Intel VROC如何给NVMe SSD做RAID

在当今对硬盘性能要求越来越高的环境中,SATA和SAS接口由于自身的限制,其性能很难突破600MiB/s的瓶颈。因此,对于需要更高底层硬件性能的行业,如数据库等,对NVMe盘的需求越来越迫切。然而,NVMe盘直通到CPU&a…

2005-2022年全球各国经济距离数据

2005-2022年全球各国经济制度距离数据 1、时间:2005-2022年 2、指标:国家、年份、经济距离1(根据美国传统基金会世界经济自由度指数整理)、经济距离2(参考(Kogut&Singh,1988)构建经济制度距离) 3、范…

dst-admin饥荒管理后台 RCE漏洞复现(CVE-2023-0646、CVE-2023-0647、CVE-2023-0649)

0x01 产品简介 dst-admin饥荒管理后台是qinming99个人开发者的一个用 Java 语言编写的 web 程序。 0x02 漏洞概述 dst-admin饥荒管理后台kickPlayer、cavesConsole、sendBroadcast等接口处配置不当,导致破解口令后的攻击者可以进行命令注入,获取服务器权…

第五节HarmonyOS ArkTS声明式开发范式

ArkTS声明式开发范式: 规范中各个内容说明如下: 装饰器 1、基本UI装饰器Entry、Component Entry 装饰struct,页面的入口。 Component 装饰struct,表示该struct具有基于组件的能力。 2、数据装饰器State、Prop、Link State…

【ShardingSphere专题】SpringBoot整合ShardingSphere(一、数据分片入门及实验)

目录 前言阅读对象笔记正文一、ShardingSphere介绍1.1 ShardingSphere-JDBC:代码级别1.2 ShardingSphere-Proxy:应用级别1.3 横向对比图 二、ShardingSphere之——数据分片2.1 基本介绍2.2 分片的形式2.2.1 垂直分片2.2.2 水平分片 2.3 数据分片核心概念…

Python实现性能自动化测试

一、思考❓❔ 1.什么是性能自动化测试? 性能 系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试 使用程序代替手工提升测试效率性能自动化 使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数,统计系统负载能力生成报告 2.Python中的性能自动…

代码随想录算法训练营 ---第四十九天

前言: 今天是买卖股票的最佳时机系列,本系列之前在学习贪心思想时做过一些。 第一题: 简介: 本题在读题时我们要注意到几个细节 1.本题股票买卖只有一次。2.我们要在最低点买股票,在最高点卖股票。 我的思路&#…

基于Java SSM框架+Vue实现药品保健品购物网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现药品保健品购物网站演示 摘要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 ssm药源购物网站,主要的模块包括两个用户,管理员权限:用…

C++初阶--String类的使用

string类 在C语言中,我们总是用char* 的类型来创建一个变量,存储一个字符串;当我们想对它进行修改或者读写时,需要自我创建空间和使用string.h的库函数来进行操作它; 而在C中,C专门提供了一个头文件 stri…

揭秘论文开题报告写作技巧,全程无忧,附赠技术路线图模板!

最近不少学校开始让准毕业生撰写论文开题报告,如果是第一次接触学术论文的朋友,多少会卡在概念的理解上,就像题主说到的,开题报告中包含的各个部分,如研究目的、研究目标、研究内容等,容易让人眼花缭乱。 …

ChatGPT到底是如何运作?

自从2022年11月30日发布以来,ChatGPT一直占据着科技届的头条位置,随着苹果的创新能力下降,ChatGPT不断给大家带来震撼,2023年11月7日,首届OpenAI开发者大会在洛杉矶举行,业界普遍认为,OpenAI的开…

2021年12月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 下图两个积木的值分别是? A:false true B:false false C:true true D:true false 答案:A 第2题 小猫和小狗是非常好的朋友,他们发明了一种加密方法:用两位数字代表字母。…

【Linux进阶之路】进程间通信

文章目录 一、原理二、方式1.管道1.1匿名管道1.1.1通信原理1.1.2接口使用 1.2命名管道 2.共享内存2.1原理2.2接口使用 3.消息队列原理 4.信号量引入原理 总结 一、原理 进程间的通信是什么?解释: 简单理解就是,不同进程之间进行数据的输入输出…

python之pyqt专栏7-信号与槽3

在上一篇文章中python之pyqt专栏6-信号与槽2-CSDN博客中,我们可以了解到对象可以使用内置信号,这些信号来自于类定义或者继承过来的。我们可以对这些信号可以通过connect连接槽函数。 需求 现在有一个需求,有两个UI界面“untitled.ui”和“u…

微信小程序开发——项目开发入门

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 概述 本文重点介绍微信小程序开发者工具的下载与安装与项目开发入门。 下载开发者工具 请在官方网站下载微信小程序开发工具;图示如下: 请依据实际…

基于mvc的大学生家教信息网站系统php+vue

运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp5 前端框架:vue.js 服务器:apache 数据库:mysql 数据库工具:Navicat/phpmyadmin 开发软件:hbuilderx/vscode/Dreamweaver/PhpSt…