查看: 5904|回复: 13

[已解决] KEA8 FLASH模拟EEPROM 最小flash块是多少

[复制链接]

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
74
最后登录
2018-5-2
发表于 2016-9-21 08:50:23 | 显示全部楼层 |阅读模式
KEA8 FLASH模拟EEPROM 最小flash块是多少?官网驱动里划分了3块512字节的flash给EEPROM用,本身代码量又占用了2K多,发现空间不够用了,想优化下,分个2块最小的flash块给eeprom用。

最佳答案

大哥年 发表于 2017-6-19 09:13 你好,kea8FLASH模拟eeprom的例程再哪可以下到? 楼主你好! KEA8直接EEPROM代码我没有,但是我有一个以前KE系列用flash模拟EEPROM的,我附件给你,你可以参考。 我对比了下,KEA8和K ...
回复

使用道具 举报

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
74
最后登录
2018-5-2
 楼主| 发表于 2016-9-21 09:09:31 | 显示全部楼层
比如我只想划分2块FLASH给EEPROM用,要修改哪个定义?
#define EE_ALLOTED_SECTORS              (EE_ACTIVE_SECTORS + EE_READY_SECTORS)
按照官网驱动里EE_READY_SECTORS 为2
EE_ACTIVE_SECTORS最小为1,那样最小为3了
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24888
最后登录
2025-7-20
发表于 2016-9-21 11:09:10 | 显示全部楼层
xljxjh 发表于 2016-9-21 09:09
比如我只想划分2块FLASH给EEPROM用,要修改哪个定义?
#define EE_ALLOTED_SECTORS              (EE_ACTIV ...

不要随意改,active和ready的比例是考虑到读写速度和擦写次数优化的结果
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
74
最后登录
2018-5-2
 楼主| 发表于 2016-9-21 15:59:00 | 显示全部楼层
不改的话,代码空间不够用了,单单flash模拟eeprom就占用了2K多的空间,然后划分了3块512字节的flash空间给eeprom用又占用了1.5K,这样加起来单单模拟eeprom就要消耗掉将近4K的空间,KEA8只有8K的空间,剩下的4K就不够用了,我改了下#define EE_ACTUAL_READY_SECTORS         0x1U 和#define EE_START_ADDRESS        0x1c00U   只划分了2块512字节的flash给EEPROM,程序是能跑,就怕以后有什么bug,还有KEA8的flash块最小单位是多少的?
官网驱动里是512字节#define FLASH_SECTOR_SIZE           0x00000200U /* 512B in byte */  
这个flash块最小只能是512字节?还是可以64字节或128字节。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
74
最后登录
2018-5-2
 楼主| 发表于 2016-9-21 16:02:00 | 显示全部楼层
KEA8比KEA16便宜一点,还有KEA8封装小,KEA8空间够用的话就用KEA8了,KEA16里自带EEPROM,有16K的空间,肯定是够用,但是成本还有封装大小都上去了。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
74
最后登录
2018-5-2
 楼主| 发表于 2016-9-21 16:13:22 | 显示全部楼层
我对擦写次数要求不高,因为产品主要就是刚使用那会的定标需要写入数据,次数很有限,最多几次而已,以后反正都是从那个地址里面读出起初的定标数据。 KEA8flash新的状态下会出现坏区的情况吗,如果不会,我可不可以直接像操作EEPOM那样指定数据的地址,以后每次都在这个地址上擦除和读写数据,比如我要保存的数据量是8个16位的数据,我给这8个数据指定好地址,以后每次要写新数据的话我就把flash整块擦除再写入那8个数据。因为我擦写次数有限,所以不用考虑flash的擦除寿命。现在就担心的是万一我指定了那8个地址,万一某个地址是坏区。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
74
最后登录
2018-5-2
 楼主| 发表于 2016-9-21 16:19:41 | 显示全部楼层
按上面那样的逻辑写的话,能缩小很多代码量,官方驱动是循环的在3块flash里写数据,某块数据写满才进行擦除操作,不需要每写一次数据就要擦除一次,这样擦除的次数是少了,我擦除次数有限,可以不需要像他那样完美的操作。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

新手上路

Rank: 1

积分
16
最后登录
2016-10-10
发表于 2016-9-21 17:32:44 | 显示全部楼层
Flash可擦除的最小单位就是sector, 不同芯片的Flash sector size是不同的。KEA8共有16个sector,每个sector是512 bytes. 如果EEPROM的需求size比较小的话,可以只用一个sector做EEPROM.
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24888
最后登录
2025-7-20
发表于 2016-9-22 09:16:23 | 显示全部楼层
本帖最后由 小恩GG 于 2016-9-22 09:17 编辑
xljxjh 发表于 2016-9-21 16:19
按上面那样的逻辑写的话,能缩小很多代码量,官方驱动是循环的在3块flash里写数据,某块数据写满才进行擦除 ...

Flash的sector size是不能更改的,如果你对擦写次数要求很低的话,可以减少模拟EEPROM的sector数,还是建议你测试一下,看看是否满足你的要求。有问题再交流吧

回复 支持 反对

使用道具 举报

该用户从未签到

25

主题

112

帖子

0

中级会员

Rank: 3Rank: 3

积分
385
最后登录
2019-8-21
发表于 2017-6-14 13:49:49 | 显示全部楼层
xljxjh 发表于 2016-9-21 16:13
我对擦写次数要求不高,因为产品主要就是刚使用那会的定标需要写入数据,次数很有限,最多几次而已,以后反 ...

大哥,请问你这个flash模拟eeprom更改后测试效果有异常吗?能否共享一下你的FLASH模拟eeprom代码参考下?我需要flash模拟eeprom的数据很少,就几个,我还没添加这个flash模块感觉都快超了8KB了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 08:55 , Processed in 0.107664 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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