楼主: henrei-290209

[已解决] KEA128 无法在线擦除Flash

[复制链接]

该用户从未签到

5

主题

51

帖子

0

注册会员

Rank: 2

积分
168
最后登录
1970-1-1
 楼主| 发表于 2016-6-23 04:03:53 | 显示全部楼层
小恩GG 发表于 2016-6-22 16:05
楼主不着急,我帮你去问问我们的codewarrior工程师。

谢谢版主大力帮助
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24864
最后登录
2025-7-18
发表于 2016-6-23 15:57:38 | 显示全部楼层
楼主你好!
刚刚我又测试了你的代码,我现在这边情况是这样的。
实际上测试下来,虽然加了attribute,但是flash擦除还是能够实现的,只不过通过了memory窗口查看,得到的信息不准确而已。
现在我加了一个变量读取0X16000地址,发现数据是能够改变的。
for(i=0;i<sizeof(Buffer);i++) Buffer=0;
Buffer[0] = *((uint8_t *)(0x00016000));
Buffer[1] = *((uint8_t *)(0x00016001));
Buffer[2] = *((uint8_t *)(0x00016002));
Buffer[3] = *((uint8_t *)(0x00016003));
添加这段代码的位置如下:
1.   PE_low_level_init(); 后面,FLASH1_Erase之前
这样读取下地址值,是为了查看定义值是否正确。
测试结果如下:
36.jpg
可以发现,直接地址读取的值就是常量定义的值。

2. 擦除代码之后
37.jpg
可以发现,直接地址读取的值以及都刷为0XFF,说明擦除成功了。
但是memory的地址值却依然没有改变
38.jpg

3, 写0X16000地址的值之后
39.jpg
可以发现,经过flash写命令之后,0X16000地址能够写入hello world。
综上,其实是memory窗口显示的值不对,或者说attribte影响了memory窗口值的显示,实际真正地址的值还是能够改变的,所以楼主你可以使用attribute,只是调试的时候加点直接地址读取去检查而已。




回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24864
最后登录
2025-7-18
发表于 2016-6-23 16:01:53 | 显示全部楼层
楼主,我把我修改后的代码也给你参考:
tt_jjmodify.rar (432.47 KB, 下载次数: 38)
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

51

帖子

0

注册会员

Rank: 2

积分
168
最后登录
1970-1-1
 楼主| 发表于 2016-6-24 21:00:41 | 显示全部楼层
小恩GG 发表于 2016-6-23 15:57
楼主你好!
刚刚我又测试了你的代码,我现在这边情况是这样的。
实际上测试下来,虽然加了attribute,但是fl ...

我也怀疑过memory显示不对,因为发现被编程字节有闪动,但是没有进一步测试,真是愚蠢。
非常感激版主做的大量测试工作,并佩服严谨的态度
谢谢啦
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24864
最后登录
2025-7-18
发表于 2016-6-27 09:42:31 | 显示全部楼层
henrei-290209 发表于 2016-6-24 21:00
我也怀疑过memory显示不对,因为发现被编程字节有闪动,但是没有进一步测试,真是愚蠢。
非常感激版主做 ...

不客气,也感谢你问题的提出,这个问题我也告诉我们的codewarrior部门了。
后续有问题,欢迎继续交流。
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
发表于 2016-12-19 16:52:12 | 显示全部楼层
我想问楼主,为什么要定义sectio呢,既然数据是上次写入的,也能正常擦除和写入
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24864
最后登录
2025-7-18
发表于 2016-12-19 17:31:40 | 显示全部楼层
number573 发表于 2016-12-19 16:52
我想问楼主,为什么要定义sectio呢,既然数据是上次写入的,也能正常擦除和写入 ...

一般定义专用sector是为了把你相关数据或者代码固定在flash的某个位置,否则编译器会把数据乱放的。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-12-8 10:21
  • 签到天数: 743 天

    连续签到: 1 天

    [LV.9]以坛为家II

    0

    主题

    1650

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    19069
    最后登录
    2021-5-6
    发表于 2016-12-19 23:32:04 | 显示全部楼层
    纯友情支持 帮顶
    我又来签到了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14

    主题

    64

    帖子

    0

    注册会员

    Rank: 2

    积分
    147
    最后登录
    2018-9-28
    发表于 2016-12-20 08:03:10 | 显示全部楼层
    小恩GG 发表于 2016-12-19 17:31
    一般定义专用sector是为了把你相关数据或者代码固定在flash的某个位置,否则编译器会把数据乱放的。 ...

    哦,memory中定义的段原来是这样用的,谢谢版主
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24864
    最后登录
    2025-7-18
    发表于 2016-12-20 09:16:04 | 显示全部楼层
    number573 发表于 2016-12-20 08:03
    哦,memory中定义的段原来是这样用的,谢谢版主

    不客气,后续有问题,欢迎发帖提问。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-19 07:16 , Processed in 0.110345 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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