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

    文章

    1616

    浏览量

    147696
  • 音频
    +关注

    关注

    29

    文章

    2831

    浏览量

    81297
  • 指令
    +关注

    关注

    1

    文章

    606

    浏览量

    35629
收藏 人收藏

    评论

    相关推荐

    何在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

    MCXN947系列高性能微控制器产品介绍

    基于Arm® Cortex®-M33的双核边缘人工智能新品MCXN947系列,搭配功能强大且完全开源的AWTK GUI框架,可轻松令产品方案实现成本与性能的完美平衡。
    的头像 发表于 08-06 16:14 984次阅读
    MCXN947系列高性能微控制器<b class='flag-5'>产品</b>介绍

    何在PSOC Creator启用BLE 5.0?

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

    何在Micro SD卡设置写保护?

    我们了解客户对Micro SD卡写保护的疑问。在这篇文章中,拓优星辰将详细解释如何在Micro SD卡设置写保护,以及相关的步骤和注意事项。
    的头像 发表于 07-11 16:37 1469次阅读
    如<b class='flag-5'>何在</b>Micro SD卡<b class='flag-5'>上</b>设置写保护?

    何在ADXL355禁用LPF?

    何在ADXL355禁用 LPF
    发表于 06-04 06:00

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

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

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

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

    求助,如何在TC399使用FOC?

    我想问一个关于如何在 TC399 使用 FOC 的问题? 谢谢你的回答!
    发表于 01-30 08:30

    何在VDAC使用外部频闪功能?

    何在 VDAC 使用外部频闪功能? 它使用上升边缘吗? 我看不到具体说明。
    发表于 01-30 08:12

    何在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

    解码CXL存储器扩展设备(

    解码CXL存储器扩展设备(
    的头像 发表于 12-04 15:33 408次阅读
    解码CXL存储器<b class='flag-5'>扩展</b>设备(<b class='flag-5'>上</b>)

    何在树莓派Pico使用红外线接收模块?

    在树莓派 Pico 使用红外线接收模块(HX1838 型),我们采用开源的 pico_ir 库。
    的头像 发表于 11-30 09:08 2096次阅读
    如<b class='flag-5'>何在</b>树莓派Pico<b class='flag-5'>上</b>使用红外线接收模块?

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

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

    何在LCD显示汉字和英文

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