打印
[ARM7]

求助flash的存储问题

[复制链接]
2057|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
excellentyy|  楼主 | 2013-7-24 13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
forrest11| | 2013-7-24 14:32 | 只看该作者
先了解Flash块操作的原理,一定要分配一个空闲块。还要写读写函数。

使用特权

评论回复
板凳
jlass| | 2013-7-24 14:36 | 只看该作者
本帖最后由 jlass 于 2013-7-24 14:40 编辑

不使用mmu的情况下可以试试,指针直接赋值的就是实际地址
使用mmu时就不用想了,全是虚拟地址
另外:flash的操作需要先解锁,写一个数据也要好几步操作,norflash容易一点,nandflash就不建议你去试了(使用操作系统的话不用考虑这一些,系统已经帮你解锁了)。
个人建议你使用iic或者spi接口的储存芯片去处理会容易的多。

使用特权

评论回复
地板
excellentyy|  楼主 | 2013-7-31 01:47 | 只看该作者
jlass 发表于 2013-7-24 14:36
不使用mmu的情况下可以试试,指针直接赋值的就是实际地址
使用mmu时就不用想了,全是虚拟地址
另外:flash ...

我现在是不要用其他的芯片,只用内部的flash的读写  而且读写函数都已经找到了,现在的一个问题就是:我想测试一下存入的数据掉电是否丢失那个main函数该怎么写,该怎样操作,我只有串口大师,没有jtag调试工具,   就是说我的main函数写好 程序烧进去之后  然后断电  我怎样才能知道  flash中的那个数据 是掉电前的数据呢   因为如果我是赋值的话 第二次上电的时候,程序也在跑,不是相当于重新实现了一次flash的存储吗。  
  希望大大赐教,非常感谢。

使用特权

评论回复
5
jlass| | 2013-7-31 09:09 | 只看该作者
excellentyy 发表于 2013-7-31 01:47
我现在是不要用其他的芯片,只用内部的flash的读写  而且读写函数都已经找到了,现在的一个问题就是:我 ...

你的程序是烧写在哪里的?如果是内部flash的话,程序能启动不就证明了不会丢失吗?

使用特权

评论回复
6
excellentyy|  楼主 | 2013-7-31 13:32 | 只看该作者
jlass 发表于 2013-7-31 09:09
你的程序是烧写在哪里的?如果是内部flash的话,程序能启动不就证明了不会丢失吗? ...

程序肯定是写在flash上的,但是我要观察的是 程序运行过程中不是数据都是保存在ram中的嘛,我要实现的是在程序中将某个变量的数值保存到flash中,等到断电后 直接读取原来保存的数据。比如说一个变量i=0 运行时 不断自加1,突然断电后我要保存当前的这个i,然后再次上电时直接读取上次的那个变量i的值。flash的read和write函数我已经找到了。但是主函数我还不知道该怎么写,还请大牛赐教,非常感谢不厌其烦的解答我这个小菜鸟的问题。

使用特权

评论回复
7
excellentyy|  楼主 | 2013-7-31 13:39 | 只看该作者
forrest11 发表于 2013-7-24 14:32
先了解Flash块操作的原理,一定要分配一个空闲块。还要写读写函数。

恩啊,非常感谢,flash的操作原理大概了解了,flash的读写函数我也已经找到了,现状就是我要用flash保存一个变量,掉电后直接读取他。比如说一个int i = 0,程序运行时候遇到某种中断会自加1(假设就是按键吧),现在我想实现的就是掉电后吧当前的变量i的值存到flash中,然后上电的时候读取i的值,不让他从0开始计数。现在的困扰就是不知道主函数该如何写,还希望大牛不吝赐教,非常感谢。

使用特权

评论回复
8
jlass| | 2013-7-31 14:14 | 只看该作者
excellentyy 发表于 2013-7-31 13:32
程序肯定是写在flash上的,但是我要观察的是 程序运行过程中不是数据都是保存在ram中的嘛,我要实现的是 ...

uboot中环境变量的引用方式应该适合你的应用,自己看一下吧。关键就是烧录的时候指定地址块。

我估计裸奔的话,直接用汇编指定地址应该也可以。

使用特权

评论回复
9
airwill| | 2013-7-31 14:19 | 只看该作者
先了解一下FLASH 的写规则. 因为有个擦除过程比较费时间. 具体看相关函数.
可以考虑:
上电后主函数的初始化部分在读出变量后就擦除保存数据区, 预报掉电时更快地写入.
检测到掉电, 就调用 flash 写函数把变量写进去.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

9

帖子

0

粉丝