0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在产品上扩展大储存?全开源啦!

青山老竹农 来源:jf_82863998 2024-10-05 15:02 次阅读

​我们都知道芯片的储存都是寸土寸金的,当你的产品需要存储照片、音频、文档等资源的时候,有没有眉头一紧?

内部不够只能外扩,但是外扩要编写各种驱动,还有Flash替换,这都要消耗头发啊!

但,当你使用合宙的LuatOS开发就全然不同了~

今天我们来介绍一下, 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,也无需修改代码,爽!
11.jpg12.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1602

    浏览量

    147430
  • 音频
    +关注

    关注

    29

    文章

    2786

    浏览量

    80920
  • 指令
    +关注

    关注

    1

    文章

    600

    浏览量

    35535
收藏 人收藏

    评论

    相关推荐

    何在DRA821U使用Linux实现快速引导

    电子发烧友网站提供《如何在DRA821U使用Linux实现快速引导.pdf》资料免费下载
    发表于 09-03 10:11 0次下载
    如<b class='flag-5'>何在</b>DRA821U<b class='flag-5'>上</b>使用Linux实现快速引导

    使用xtr111应用在产品设计中,运行一段时间过后设备不工作怎么解决?

    在使用xtr111应用在产品设计中,起初设备运行稳定,运行一段时间过后设备不工作,其它器件完好,XTR111烧毁,无法工作。如下是原理图帮忙看看有哪些地方需要改善的。谢谢。 现在也在检查坏片的每个管脚对地阻抗与正常芯片对比,确认是哪个管脚发生了问题。
    发表于 08-14 07:14

    何在PSOC Creator启用BLE 5.0?

    我正在设计的电路中有一个 CYBLE-416045-02,但我不知道如何在 PSOC Creator 启用 BLE 5.0。 我在 GAP 设置中也没有看到 \"扩展广告 \"选项。 怎样才能做到这一点?
    发表于 07-24 08:06

    全开源高精度功率计,你的电力监控小助手!| VA Meter

    NEWVAMeterVAMeter是一款基于M5StampS3模块的高精度功率计,专注于电压与电流测量。其软硬件全开源,为用户提供了极大的灵活性和可定制性。内置两路串联的INA226电流电压测量电路
    的头像 发表于 06-01 08:29 379次阅读
    <b class='flag-5'>全开源</b>高精度功率计,你的电力监控小助手!| VA Meter

    4月19日-20日《产品EMC正向设计与检视》公开课火热报名中

    课程名称:《产品EMC正向设计与检视》讲师:吴老师时间地点:武汉4月19-20日主办单位:赛盛技术课程背景在产品系统设计阶段,如何在结构方面考虑电磁兼容设计?在产品PCB设计阶段,哪些
    的头像 发表于 03-16 08:16 179次阅读
    4月19日-20日《<b class='flag-5'>产品</b>EMC正向设计与检视》公开课火热报名中

    何在KW45-EVK使用RTC

    电子发烧友网站提供《如何在KW45-EVK使用RTC.pdf》资料免费下载
    发表于 01-03 09:41 0次下载
    如<b class='flag-5'>何在</b>KW45-EVK<b class='flag-5'>上</b>使用RTC

    激光打标机:如何在产品镭雕出不同效果?

    何在产品打出不同效果。首先,激光打标机可以通过控制激光的功率和速度,打出不同深度的标记。激光打标机具有高功率、高精度的特性,可以在金属、非金属等各种材料表面打出深
    的头像 发表于 11-28 20:37 500次阅读
    激光打标机:如<b class='flag-5'>何在产品</b><b class='flag-5'>上</b>镭雕出不同效果?

    何在LCD显示汉字和英文

    摘要:LCD是嵌入式常见设备,如何在LCD显示汉字和英文?矢量字体和点阵字体有何不同?同一个字符为何有多种编码?GB2312、GB18030指什么?他们之间有关系吗?嵌入式设备如何支持多国语言?从哪里获取字库?需要付费吗?以上问题,本文一一道来!
    的头像 发表于 11-28 10:20 2486次阅读
    如<b class='flag-5'>何在</b>LCD<b class='flag-5'>上</b>显示汉字和英文

    何在AT32 MCU使用FPU功能

    何在AT32 MCU使用FPU功能
    的头像 发表于 11-01 17:18 3896次阅读
    如<b class='flag-5'>何在</b>AT32 MCU<b class='flag-5'>上</b>使用FPU功能

    何在RZ/V2L评估板套件使用AI SDK

    本文章介绍如何在RZ/V2L评估板套件使用AI SDK。
    的头像 发表于 10-27 15:53 829次阅读
    如<b class='flag-5'>何在</b>RZ/V2L评估板套件<b class='flag-5'>上</b>使用AI SDK

    在基于AT32 RT-Thread的源码包中开启并下载Micropython开源

    Micropython Based On AT32 RTT讲述如何在基于AT32 RT-Thread 的源码包中开启并下载Micropython 开源包,并简单描述和展示了Micropython 在AT32 系列MCU 正常运
    发表于 10-25 07:06

    何在AT32F系列MCU使用FreeRTOS

    本指导手册描述了如何在AT32F系列MCU使用FreeRTOS。FreeRTOS是一款开源的嵌入式实时操作系统,目前在各种嵌入式应用中应用广泛。本指导手册包括FreeRTOS系统移植
    发表于 10-24 07:46

    监控摄像头云储存和内存卡储存有什么区别?

    从任何地方通过互联网访问您的监控数据。 2、数据备份:云储存提供数据冗余和备份,通常存储在多个服务器和数据中心,以确保数据安全性和可用性。 3、容量扩展:云储存通常可以无限扩展,我们不
    的头像 发表于 10-23 17:47 1.5w次阅读

    世界最伟大的开源作品-基于FPGA的开源摄影机--Axiom Camera

    上学的时候特别想要一个相机,一直到现在都还没有自己理想中的机器,挺遗憾! 不过最近通过GPT推荐的项目了解了这世界还有一个很伟大的开源项目-Axiom Camera-让你拥有一个自己的机器
    发表于 10-20 09:03

    何在Zynq SoC开始使用FreeRTOS

    该项目演示如何在 Zynq SoC 开始使用 FreeRTOS。
    的头像 发表于 10-18 09:44 1619次阅读
    如<b class='flag-5'>何在</b>Zynq SoC<b class='flag-5'>上</b>开始使用FreeRTOS