振南技术干货集: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.mzph.cn/news/178729.shtml

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

相关文章

手机爬虫用Fiddler详细教程

如果你正在进行手机爬虫的工作,那么一款强大而又实用的网络调试工具Fiddler将会是你的好帮手。今天,我将和大家分享一份详细的Fiddler教程,教你如何使用它来轻松捕获和分析手机App的网络请求。让我们一起来探索Fiddler的功能和操作&#xff0…

Java 发送邮件

Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) 。 你可以在 JavaMail (Version 1.2) 下载最新的版本。 你可以再 在JAF (Version 1.1.1)下载最新的版本。 下载并解压这些文…

你敢信?四行Python代码就能知道你那的天气!

今天给大家带来的Python实战项目是四行Python代码获取所在城市的天气预报,我们隐隐听到唏嘘声,不信四行Python代码可以获取是吗?那我们一起来看看: 四行Python代码就能知道你那的天气,你敢信? 使用Python获取天气预报…

paddleocr笔记

PP-OCRv1 PP-OCR中,对于一张图像,需要完成以下3个步骤提取其中的文字信息: 使用文本检测方法,获取文本区域多边形信息(PP-OCR中文本检测使用的是DBNet,因此获取的是四点信息)。对上述文本多边形…

sqli-labs关卡21(基于cookie被base64编码的报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场需要了解的前置知识1、什么是base64编码? 三、靶场第二十一关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于…

Toast UI Editor上传图片到Flask

Toast UI Editor国内文档几乎搜不到,国外文档也写得不是特别项目,没有太多举例的demo。一开始选择使用这个就是因为UI好看。不过看看源码把思路滤清了。 他会给把图片转成Base64,到时候发表单直接丢过去就行了,blob这个参数能拿到…

vue+elementUI的tabs与table表格联动固定与滚动位置

有个变态的需求,要求tabs左侧固定,右侧是表格,点击左侧tab,右侧表格滚动到指定位置,同时,右侧滚动的时候,左侧tab高亮相应的item 上图 右侧的高度非常高,内容非常多 常规的瞄点不适…

C++中的类与对象

类和对象的基本概念 C 和 C中 struct 区别 c 语言 struct 只有变量 c语言 struct 既有变量,也有函数 类的封装 我们编写程序的目的是为了解决现实中的问题,而这些问题的构成都是由各种事物组成,我们在计算机中要解决这种问题&#x…

vue3还用this吗?getCurrentInstance获取当前组件实例

在 Vue 2 中,this 关键字代表当前组件实例。在组件的选项对象中,this 可以用于访问组件实例的属性、方法以及 Vue 实例的一些特定方法。 在Vue3中,我们发现this是undefined,那我们真的没法使用this了吗?vu3给我们提供…

Vue3框架中让table合计居中对齐

第一步&#xff1a;给它加一个类名 center-table 如下&#xff1a; <el-table:data"datas.shows"max-height"600px"show-summarystripeborderstyle"width: 100%":header-cell-style"{ textAlign: center }":cell-style"{ text…

this.$refs,salesRankRefjj.searchRankCall is not a function

在vue项目中&#xff0c;在父组件使用$refs获取不到子组件的方法&#xff0c;为什么&#xff1f; 我的报错如下&#xff1a; [Vue wamn]: Error in v-on handler: "TypeError: this.$refs,salesRankRefjj.searchRankCall is not a function found in 代码如下&#xff1a…

【蓝桥杯 LCA 差分】 砍树

题目分析&#xff1a; 这道题还是比较裸的一道书上差分的题目了 对于每一对标记点(x,y) 他们之间的路径就是 x − > L C A ( x , y ) − > y x->LCA(x,y)->y x−>LCA(x,y)−>y 这条路径上的每一条边都要经过。 那么对于一条边&#xff0c;什么时候砍掉这条…

vue3中toRaw 与 markRaw

toRaw 返回由 reactive 或 readonly 方法转换成响应式代理的普通对象。 这是一个还原方法&#xff0c;可用于临时读取&#xff0c;访问不会被代理/跟踪&#xff0c;写入时也不会触发界面更新。 markRaw 标记一个对象&#xff0c;使其永远不会转换为代理。返回对象本身 应…

bash编程 数组和for循环的应用

bash编程 数组和for循环的应用 1、问题背景2、bash 定义数组3、for循环遍历输出数组所有元素4、编写bash脚本输出每个端口是否在监听状态 1、问题背景 linux服务器开机后&#xff0c;需要检查一组端口是否在监听&#xff0c;以便判断这些端口对应的服务是否在运行。可以考虑使…

解释LED显示屏的裸眼3D特效原理

LED电子大屏幕的3D特效技术正在不断发展&#xff0c;而实现这一技术的原理主要包括分光、分色、分时和光栅等四种方法。这些原理都有各自的特点和应用场景&#xff0c;下面将对它们进行详细介绍。 1. 分光方法 分光方法是一种基于偏振光的3D显示技术。通过使用偏振滤镜或偏振片…

leetCode 841. 钥匙和房间 图遍历 深度优先遍历+广度优先遍历 + 图解

841. 钥匙和房间 - 力扣&#xff08;LeetCode&#xff09; 有 n 个房间&#xff0c;房间按从 0 到 n - 1 编号。最初&#xff0c;除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而&#xff0c;你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房…

0005Java程序设计-ssm基于微信小程序的校园求职系统

文章目录 摘 要目 录系统设计开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据…

MicroPython STM32F4 RTC功能使用介绍

MicroPython STM32F4 RTC功能使用介绍 &#x1f516;STM32和ESP32 RTC功能差不多&#xff0c;相关篇《MicroPython ESP32 RTC功能使用介绍》&#x1f4cc;固件刷可参考前面一篇《STM32刷Micropython固件参考指南》&#x1f33f; 相关篇《Micropython STM32F4入门点灯》&#x1…

RH2288H V3服务器使用ISO安装系统

1.配置和服务器相同网段地址&#xff0c;RH2288H V3服务器bmc管理网口默认IP是192.168.2.100/24&#xff0c;默认用户root&#xff0c;默认Huawei12#$&#xff0c;网线连接BMC口&#xff0c;登录。默认密码可以在开机时按del键进入配置页面修改 2.配置raid&#xff0c;生产环境…

耗时一个星期整理的APP自动化测试工具大全

在本篇文章中&#xff0c;将给大家推荐14款日常工作中经常用到的测试开发工具神器&#xff0c;涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。 一、UI自动化测试工具 1. uiautomator2 openatx开源的ui自动化工具&#xff0c;支持Android和iOS。主要面向的编程语言…