打印
[Kinetis]

【经验分享】如何在CW中使用OPENSDA实现烧录时flash数据保护

[复制链接]
1815|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
【经验分享】如何在CW中使用OPENSDA实现烧录时flash数据保护
一,经验分享简介
      在实际使用Codewarrior编译器下载程序的时候,大家有时候可能希望不要将芯片整个flash都擦除掉,而可以保留一部分flash里面的数据,比如以KL25为例,将flash高地址部分,也就是非程序所在的flash区域作为模拟的EEPROM使用,之前模拟EEPROM区域已经有些数据,但是实际需要,需要更新程序,所以这个时候就希望在下载程序的时候,将模拟EEPROM区域保护起来,不被擦除掉。那么如何才能实现这样的功能呢,如果使用OPENSDA方式下载,而且默认配置的话,通常都会把flash都擦掉,所以本经验分享就教大家如何实现使用CW以及opensda下载方式时,部分flash保护的功能。
二,OPENSDA下烧录flash数据保护设置
    其实在CW的opensda界面中,有一个高级设置选项可以供大家选择所要保护的flash区域,一共有三块区域可以实现保护。下面讲解如何实现配置。
这里以FRDM-KL25开发板为例,IDE采用CW10.6,下载接口采用OPENSDA方式。
本次例程在一个flash控制读写的例程中实现,首先打开flash工程,然后按照如下步骤设置:
1:进入debug configuration

1
2:点击connection中的edit按钮

2
3 ,点击高级编程选项

3
4:设置要包含区域
在高级选项的右上角有关于需要保护区域的设置,由于本例程是对flash0x0001_f000地址开始写数据,所以这里保护的flash范围就设置为0x0001_f000flash的最高地址0x0001_ffff

4
按照上图的设置,点击Done,即可完成相关flash地址的下载保护。
其实在CW的help中有关于Non-Volatile memory preservation的详细讲解。

5
即每次下载的时候,都会读出保护区域的数据,然后重新编程进去,从而实现这些区域数据的保护。
三,结果测试
        首先说一下程序的基本功能,本次程序KL25_FLASHLDD,是在CW10.6的PE上面做的,使用FLASH_LDD模块实现对flash地址0x0001F000以上写入“Helloworld”。测试分为三步走,第一步,不加保护下载程序,查看flash,并执行代码,使得0x0001F000以上地址写入数据。第二步,退出debug,不加保护下载程序,查看flash,看看0x0001F000地址是否有之前的数据,然后执行代码。第三步,加保护下载程序,查看flash。
当然,在测试之前,我们要保证,我们的代码大小并没有超过地址0x0001F000。现在我们来查看下代码大小,进入project->properties.
然后配置如下:
图6
然后点击apply,并且编译,即可生成代码大小:

图7
可以看到,总大小0x2148并没有超过0x0001F000,下面通过下载来验证结果。
1: 程序功能测试,非保护设置
(1)下载程序后查看0x0001F000

图8
可以看到这个时候,0x0001F000地址之后没有数据。
(2)运行代码后停止,查看0x0001F000

图9
可以看到,这个时候数据已经写进去了。退出debug。
2: 重新下载程序,非保护设置,并运行

图10
可以看到数据并没有保存,而是被刷掉了,所以运行在此写入数据,并退出。
3: 重新下载程序,保护设置
程序下载之后,发现如下,数据还是存在,说明保护成功。

图11
综上,通过设置高级配置,地址段保护,即可以实现具体flash地址段数据的下载保护。
四,附件
附件给出相关测试代码以及文档。
KL25_FLASHLDD.rar (129.96 KB)

【经验分享】如何在CW中使用OPENSDA实现烧录时flash数据保护.pdf (498.7 KB)


相关帖子

沙发
FSL_TICS_ZJJ|  楼主 | 2014-9-18 17:33 | 只看该作者
不足之处,恳请指正,同时也欢迎大家分享自己的宝贵经验。

使用特权

评论回复
板凳
jd972594| | 2014-9-25 08:43 | 只看该作者
谢谢楼主
以前只会Keil MDK的JLink页面不擦除未用flash

使用特权

评论回复
地板
huangxz| | 2014-9-25 11:32 | 只看该作者
希望 有多点的在keil下面开发的资源

使用特权

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

本版积分规则

165

主题

5069

帖子

88

粉丝