怎么做自己的网站卖东西,个人养老金交15年领多少,宁波高端网站建设联系方式,linux vps wordpress我们都知道芯片的储存都是寸土寸金的#xff0c;当你的产品需要存储照片、音频、文档等资源的时候#xff0c;有没有眉头一紧#xff1f;内部不够只能外扩#xff0c;但是外扩要编写各种驱动#xff0c;还有Flash替换#xff0c;这都要消耗头发啊#xff01;
但#x…我们都知道芯片的储存都是寸土寸金的当你的产品需要存储照片、音频、文档等资源的时候有没有眉头一紧内部不够只能外扩但是外扩要编写各种驱动还有Flash替换这都要消耗头发啊
但当你使用合宙的LuatOS开发就全然不同了~
今天我们来介绍一下LuatOS集成内部的一个开源SPI Flash通用驱动库——little_flash
它可以让你无需考虑不同Flash驱动差异即可直接使用或者简单配置参数即可使用。无需再编写Flash驱动真正的做到硬件随意更改Flash软件通用了。
特别说明 本文档以Air780EPLuatOS作为示例但此驱动库为通用库不限制型号所有型号都可使用甚至你可以在你其他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_id3020 可以看到little_flash自动识别了NOR Flash挂载成功后文件操作也都正常。
从此之后告别SPI Flash驱动。 就算产品更换Flash也无需修改代码爽