硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2205|回复: 3
收起左侧

[ZLG EasyARM-RT1052] RT1052外置flash复合使用方法

[复制链接]

24

主题

121

回帖

193

积分

初级会员

积分
193
发表于 2021-12-31 16:54:29 | 显示全部楼层 |阅读模式
RT1052外置flash一般用于程序存储器。支持XIP模式在线运行代码。但这颗flash也是可以当作普通闪存来使用的。可以存储一些图片文件或者是现场记录的数据。
一般情况下代码尺寸不会很大。比如一颗8MB的flash,可以安排2M存储代码,剩余的6M开辟为文件系统,存储配套文件。移植流程如下:
1 - 根据官方SDK移植flash驱动,这个环节很重要。主要是flash的字节读,页写,块擦除这几个接口函数。读数据地址已经映射为内存地址很方便。写,擦除操作需要关闭全局中断,意味着os会暂停。
2 - LittleFs文件系统移植,文件系统shell控制台移植。在此处可安排文件系统具体占用的flash空间。通过shell做一些交互操作(因为实际系统总会有第一次运行的时候,不建议实时格式化)。
3 - usbX移植,方便通过U盘自动把文件拷贝到flash文件系统(levelX没有移植成功,否则也可考虑用levelx代替lfs)。

以上这些移植过程,官方SDK都有相关例程,自己做点简单搬运调试即可。测试步骤:
1 - 通过ide将flash全部擦除包括文件系统。
2 - 下载代码(此时无文件系统)。
3 - 通过shell对文件系统格式化,创建所需文件夹。
4 - 插上U盘,系统自动会把U盘内容拷贝到flash。
5 - 实测稳定性很好。写过程因为关闭了全局中断,所以os应该是会暂停。但因为实时写频率不会很高,比如只是保存一些设置参数的话,写时间不会很长。
     对于50K的jpg文件,写时间约为50ms。连续下载160个jpg文件,大约5.5M,实测写时间90s,基本可接受。

    需要注意的是,文件转存可以采用多次写方式,这样缓冲区可以小一点。并且这个缓冲区还只能放在nocache里面,测试过clean cache方式和动态内存方式都不成功,也可能是方法不大对。
回复

使用道具 举报

24

主题

121

回帖

193

积分

初级会员

积分
193
 楼主| 发表于 2021-12-31 17:00:15 | 显示全部楼层
补充一点:U盘读写文件线程的优先级可考虑设为最低比如跟运行LED一个优先级。这是因为批量写时间会很长。
另外就是对flash写,一定要加把互斥锁。lfs不像filex是threadx亲儿子。不确定其内部有没有互斥处理。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2022-6-23 16:54:20 | 显示全部楼层
大佬可以发一下源码吗
回复

使用道具 举报

10

主题

22

回帖

52

积分

初级会员

积分
52
发表于 2023-6-15 17:45:13 | 显示全部楼层
是把程序搬运到sdram运行的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-8 00:24 , Processed in 0.252019 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表