HC32F460的Flash连续编辑功能用法

HC32F460的Flash功能很有意思 , 提供两种编辑模式:单步编辑 , 连续编辑 。 其中单步编辑 , 没什么特殊要求 , 可以直接使用;而连续编辑就需要在RAM中操作了 。

HC32F460的Flash连续编辑功能用法

文章插图

需要这些哦
联想E460
Win10专业版
Keil5V5.14
HC32F460开辟板
方式/
1在工程中写好flash编程代码 , 硬件仿真全速调试后 , 发现存储区乱码 , 汇编指针跑飞 。
HC32F460的Flash连续编辑功能用法

文章插图
HC32F460的Flash连续编辑功能用法

文章插图
HC32F460的Flash连续编辑功能用法

文章插图

2查阅资料后知道利用持续编纂函数"EFM_SequenceProgram"时 , 需要占用flash总线 , 从而不克不及读取flash里的指令 。
HC32F460的Flash连续编辑功能用法

文章插图

3仿真单步运行后 , 发现运行指针从"EFM_SequenceProgram"函数中的"EFM_ClearFlag"处起头跑飞 。
HC32F460的Flash连续编辑功能用法

文章插图

4【HC32F460的Flash连续编辑功能用法】因为运行跑飞 , 而不是代码优化导致的问题 。 在请求了手艺撑持后得出 , “EFM_SequenceProgram”不克不及在flash中运行 。 那么只能在RAM中运行了 。
下图为map中函数地址 , 都在flash上 。
HC32F460的Flash连续编辑功能用法

文章插图

5解决方式有两个:
1、将代码全数放在ram上运行;
2、将与“EFM_SequenceProgram”相关的函数放到RAM中运行
小我选择第2个方案

61、需要在RAM上申请一个区域作为函数运行区
在“工程\Objects”下点窜.sct文件
在“RW_IRAM1”中申请区域“*.o(RAMCODE)”
HC32F460的Flash连续编辑功能用法

文章插图

72、工程中利用前点窜设置装备摆设“魔法棒-Linker” , 打消“Use Memory Layout form Target Dialog” , “Scatter File”中选择点窜的.sct文件
HC32F460的Flash连续编辑功能用法

文章插图

8在需要挪用的函数前利用“__attribute__((section("RAMCODE")))” , 并将其内部其他挪用函数前均添加“__attribute__((section("RAMCODE")))” 。
HC32F460的Flash连续编辑功能用法

文章插图
HC32F460的Flash连续编辑功能用法

文章插图

9查看.map , 可以看到函数地址都位于ram区域了
HC32F460的Flash连续编辑功能用法

文章插图

9
10仿真全速运行调试后 , 发现系统运行正常 。
HC32F460的Flash连续编辑功能用法

文章插图

注重事项HC32F460操作flash的最小单元是32位数据 , 故内部封装也都要转化为32位数据 。

以上内容就是HC32F460的Flash连续编辑功能用法的内容啦 , 希望对你有所帮助哦!

    推荐阅读