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

这篇具有很好参考价值的文章主要介绍了振南技术干货集: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 卡

znfat,技术干货集,fpga开发
图 18.55 使用 Image2Lcd 软件将图片转为 bin 格式

znfat,技术干货集,fpga开发
图 18.56 VGA 显示图片实验的硬件平台( FPGA )

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

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

znfat,技术干货集,fpga开发
图 18.57 VGA 显示图片实验效果

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

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

znfat,技术干货集,fpga开发
图 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所示。

znfat,技术干货集,fpga开发
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 平台,加之实验者高超的技艺,最终的实验效果

znfat,技术干货集,fpga开发
图 18.60 TTS 语音合成实验硬件平台

znfat,技术干货集,fpga开发
图 18.61 此实验中使用 NIOSII IDE 进行程序开发

znfat,技术干货集,fpga开发
图 18.62 《跳跃小猫》动画播放实验效果

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

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

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

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

大家可以在 gitee 搜索znFAT,或者直接在振南网站(znfat,znmcu.com)下载,有疑问可直接加我微信 ZN1234 咨询。znfat,技术干货集,fpga开发文章来源地址https://www.toymoban.com/news/detail-773789.html

到了这里,关于振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(9)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图灵日记之java奇妙历险记--异常&&包装类&&泛型

    在java中,将程序执行过程中发生的不正常行为称为异常 异常可能在编译时发生,也可能在程序运行时发生,根据发生的时机不同,可以将异常分为: 编译时异常 在程序编译期间发生的异常,称为编译时异常,也称为受检查异常 运行时异常 在程序执行期间发生的异常,.称为运行时异常

    2024年01月23日
    浏览(28)
  • 【C++历险记】面向对象|菱形继承及菱形虚拟继承

    个人主页:兜里有颗棉花糖💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【C++之路】💌 本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长,共同进步。🍓 单继承:一个子类 只有一个直接父类 时称这个继承

    2024年02月10日
    浏览(29)
  • 【C++历险记】国庆专辑---探索多态迷宫的代码之旅

    🎉博客主页:.小智 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:C++终极篇 🎉代码仓库:小智的代码仓库 多态多态顾名思义就是多种形态,比如我们要完成某一件事情,不同的对象去完成,我们产生的结果是不一样的。 举个栗子我们平时的买火车票,就有这几种分

    2024年02月08日
    浏览(26)
  • 图灵日记之java奇妙历险记--抽象类和接口

    在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息描绘一个具体的对象,这样的类就是抽象类 使用abstract修饰的方法称为抽象方法 使用abstract修饰的类称为抽象类 抽象类是不可以进行实例化的

    2024年02月03日
    浏览(32)
  • 图灵日记之java奇妙历险记--数据类型与变量&&运算符

    看下面这个栗子,宝子们 输出的\\\"cheer up!!!\\\"就是字面变量 字面常量的值在程序的整个生命周期中是不变的 字面常量的分类: 字符串常量 整形常量 浮点数常量 字符常量 布尔常量:只有两种true和false 空常量 注意:字符串,整形,浮点型,字符型以及布尔型,在java中都被叫作数据类型

    2024年02月04日
    浏览(33)
  • Hadoop历险记(七 Hive配置和启动hiveservice2服务)

    之前讲了hive的元数据,它存储着hiveSQL映射和hdfs具体文件数据的对应关系。 但是元数据存在单独的mysql中 直接将它暴露给外部是不安全的,所以hive特别增加了一个元数据服务。 它作为元数据和外部客户端之间的一个中间人。 metastore有三种服务配置模式 同时也可以说这是h

    2024年02月03日
    浏览(34)
  • 林浩然与杨凌芸的Java时光魔法:格式化历险记

    林浩然与杨凌芸的Java时光魔法:格式化历险记 The Java Time Odyssey of Lin Haoran and Yang Lingyun: A Formatting Adventure 在编程世界的一隅,有一个名叫林浩然的程序员。他是个Java大侠,对代码世界的法则了如指掌,尤其擅长驾驭时间这个变幻莫测的维度。而他的生活伴侣、同样是码界巾

    2024年02月20日
    浏览(26)
  • 前台测试转后台优化历险记,应届生薪资8K逆袭,从此扶摇直上九万里!

    优橙教育每一期都会有不少从前台测试转到后台的小伙伴应邀而来,其实每个人的经历都是大致相同的,这时候肯定会有很多小伙伴问,为什么出来花钱出来参加培训而不是在项目上转呢? 或许是因为在项目上摸爬滚打太久了,吃不下领导画的大饼了;也或许是因为确实整天

    2024年02月13日
    浏览(40)
  • 数通王国历险记之TCP协议的三次握手和四次挥手

    目录 前言  一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢? 二、TCP的建立——三次握手 1,提前知道TCP协议报文中都有些啥? 2.第一次握手 总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接 3,第二次握手 总的来说:就是PC2同意和PC1建立连接,同时确

    2024年02月11日
    浏览(30)
  • K8S历险记-从零开始kubeadm单机安装部署k8s保姆级教程

    1.查看系统版本信息以及修改配置信息 1.1 查看cpu信息 k8s安装至少需要2核2G的环境,否则会安装失败 1.2 安装k8s时,临时关闭swap ,如果不关闭在执行kubeadm部分命令会报错 1.3 安装k8s时,可以临时关闭selinux,减少额外配置 1.4 关闭防火墙 1.5 设置网桥参数 1.6 修改hosts文件

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包