如何在产品上扩大储存?教你一招简单好用的!

你是不是经常遇到需要扩大库存的问题?毕竟总是有很多文件需要存储:视频、音频、文件。。。

但是芯片的空间寸土寸金呀!

内部不够只能外扩,然后就是要编写各种驱动,还有Flash替换。。。怎么听着就头疼!

教你一招简单好用的!

今天我们来介绍一下,LuatOS集成内部的一个开源SPI Flash通用驱动库 ------little_flash

它可以让你无需考虑不同Flash驱动差异,即可直接使用或者简单配置参数即可使用。无需再编写Flash驱动,真正的做到硬件随意更改Flash软件通用了。

特别说明:

本文档以Air780EP+LuatOS作为示例,但此驱动库为通用库不限制型号,所有型号都可使用,甚至你可以在你其他C开发产品上自行移植使用。

一、SPI Flash分类

SPI Flash主流一般分为:
NOR Flash和NAND Flash。

TF我们这里不算在内,严格的说它属于emmc,价格也高。

我们看下对比表:

这里就需要各位根据产品定义按需选择了。

二、实现原理

这里我们简单讲解一下实现原理,不感兴趣想直接使用的朋友,可以跳过直接看下一部分。

早期的Flash各个厂家指令不同,每家都要单独写驱动。

直到一个标准协议的出现:

SERIAL FLASH DISCOVERABLE PARAMETERS (SFDP) | JEDEC

详细介绍参见:

https://www.jedec.org/standards-documents/docs/jesd216b#

该协议规定了一个指令来读取Flash的所有参数,得益于它,目前市面上在产的NOR Flash基本都能直接驱动。

little_flash库就是支持了此协议,实现了NOR Flash的通用驱动。

接下来,我们说一下NAND Flash:

很可惜,虽然新版SFDP协议有描述NAND Flash,但是实际上大部分NAND Flash厂商都没有遵守。

市面上的NAND Flash一般是两种设计,一种是纯兼容NOR Flash指令,另一种是兼容部分NOR Flash指令,加一部分NAND Flash指令。

little_flash做了一套通用框架,只需要配置下产品几个指令和储存大小即可驱动NAND Flash,并且不支持SFDP协议的NOR Flash也可以通过配置参数方式进行支持。

三、相关准备工作

3.1 硬件准备

  • 合宙Air780EP开发板一套,包括天线、SIM卡;

  • SPI Flash模块

  • 杜邦线

  • USB线

  • PC电脑

3.2 软件准备

我们使用云编译方式编译一份固件,记得勾选little_flash库,其他功能按需选择。

云编译教程参考:

https://wiki.luatos.com/develop/compile/Cloud_compilation.html

四、API介绍

little_flash库API非常简单,只有两个:一个初始化,一个挂载。挂载到文件系统之后,就可以用语言的原生IO操作直接使用了。

4.1 lf.init(spi_device)

初始化little_flash,会自动探测flash并初始化。

参数:

返回值:

4.2 lf.mount(flash, mount_point, offset, maxsize)

挂载little_flash lfs文件系统。

参数:

返回值:

五、脚本代码

我们以Air780EP为例,下图是代码演示,并且做了相关注释。

六、效果演示

我们把固件和脚本烧录到开发板中,新朋友可参考相关教程。

LuatOS教程链接:

https://doc.openluat.com/wiki/26?wiki_page_id=3020

可以看到little_flash自动识别了NOR Flash,挂载成功后文件操作也都正常。

从此之后,告别SPI Flash驱动。

就算产品更换Flash,也无需修改代码,爽!

相关推荐
weixin_58606202几秒前
单片机原理与应用
单片机·嵌入式硬件
未来之窗软件服务29 分钟前
酒店智能门锁接口pro[V10] 对接酒店收银-SAAS本地化-未来之窗行业应用跨平台架构
stm32·单片机·嵌入式硬件·酒店管理系统·酒店门锁
夜间去看海44 分钟前
基于单片机的智能窗帘控制系统
单片机·嵌入式硬件
卓振思众3 小时前
智算中心动环监控:构建高效、安全的数字基础设施@卓振思众
物联网
漫途科技4 小时前
从‘盲管’到‘智网’,漫途精准构建排水管网监测方案
大数据·网络·物联网
csncn214 小时前
java异或校验
java·开发语言·物联网
环球生活说4 小时前
2024京东·雪浪小镇数字科技合肥交流会
人工智能·科技·物联网
哦豁灬5 小时前
树莓派pico上手
单片机·嵌入式硬件·micropython·树莓派pico
问就是想睡觉6 小时前
AIoT是什么?AIoT现状如何?
人工智能·物联网
boldht6 小时前
嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)
c语言·stm32·单片机·嵌入式硬件·嵌入式项目·单片机平衡小车