加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

打造自己的硬件仿真平台8 - 仿真FLASH并移植一个FAT文件系统在仿

发布时间:2020-12-15 17:40:04 所属栏目:百科 来源:网络整理
导读:最近LZ心情不是很爽,一半由于晚上睡不好觉,一半由于公司动荡对我们这块定位不是很清楚,有点看不到前景,干的比较郁闷 。 今天讲讲如何在仿真平台上实现仿真Flash元器件,严格说是NVRAM,掉电能保存的存储单元。这应该是嵌入式里面最常用的元器件,包括Nan

最近LZ心情不是很爽,一半由于晚上睡不好觉,一半由于公司动荡对我们这块定位不是很清楚,有点看不到前景,干的比较郁闷


今天讲讲如何在仿真平台上实现仿真Flash元器件,严格说是NVRAM,掉电能保存的存储单元。这应该是嵌入式里面最常用的元器件,包括Nand Flash,Nor Flash,EEPROM,FRAM,MRAM等等,我们希望平台能提供各种大小,控制方式的NVRAM给firmware应用使用。


先看一个firmware的应用实例,我在仿真平台上创建了一块64 K的FRAM (不需要擦写扇区),然后写了个firmware应用移植了一个FAT的文件系统在这块仿真的64K FRAM上,如下图,

我创建的仿真FRAM

Firmware应用FAT文件系统跑在这块仿真NVRAM的效果

从图上我们可以看出,

1 - 在仿真平台上,我们能看到原始的Flash 的raw data,能看到在我们格式化FAT12之后,NVRAM的0扇区被写入了Fat文件的magic number (xxxMSDOS5xxxx),证明已经在仿真的FLASH格式化成功。

2 - 写个简单的fat文件系统应用来测试我们的移植的文件系统,从上图我们可以看到我创建了3个1.txt 2.txt 3.txt在0:/目录,然后打开1.txt写入5个字节0x5a,然后打开1.txt读出5个字节,控制台显示5a 5a 5a 5a 5a证明我们刚才打开文件,写入文件操作是成功。

3 - 有了这个利器,我们就可以在没有开发板,没有实际硬件的时候,直接可以调试应用,移植文件系统进行文件操作或者任何你想要掉电保存的数据。


首先来看看如何在仿真平台实现仿真FLASH元器件,

FLASH的元器件的属性有,

1 - 扇区,块,默认数据0xff.

2 - 块,扇区写之前需要先擦除,快速读写的NVRAM不需要

3 - 读写数据按块,扇区操作。

了解到FLASH这些常用属性之后,我们就可以通过软件模拟FLASH元器件的操作达到仿真的目的,我们提供给用户可配置的项如下图:

我们实现FLASH的操作是通过PC文件来做的,

1 - 用户创建好FLASH配置之后,仿真平台为用户创建相应大小的2进制文件保存在软件安装根目录下,以便下次打开之后FLASH (文件)内容不会丢失。

2 - 得到FRIMWARE的读写命令时候,按照上面提到的FLASH行为对2进制文件进行读写擦除操作。

3 - 提供显示GUI读,搜索,查询FLASH内容,如图1所示。

基本上仿真平台这块的大体思路就是这样,也没有太难的地方,需要注意的地方对写操作的临界区保护。

提供给firmware使用的接口用

//////////////////////////////////////////////////////////
//                                                      //
//        Virtual Flash                                 //
//                                                      //
//////////////////////////////////////////////////////////
extern int SimuWriteFlash(int ID,int startAddr,unsigned char *buf,int len);
extern int SimuReadFlash(int ID,int len);
extern int SimuEraseSec(int ID,int secID);
extern int SimuEraseAllSeces(int ID);
extern int SimuGetFlashStatus(int ID);

Firmware就可以利用这些接口来实现自己的应用,fat文件系统的移植很简单,主要是修改diskio.c文件,将上面的仿真flash接口添加到文件里即可。


任何问题可以通过weibo923@sina.com联系我

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读