文章目录
-
- 配置介绍
-
- 启动文件
- 链接文件
- 主程序
- 例程测试
-
- 环境搭建
- 功能描述
- 测试现象
- 注意事项
-
- 1. 另一种实现RAM retention功能的方式
- 2. 自定义RAM区域的地址问题
- 3. bool类型变量使用RAM retention功能
- 4. 不使用调试模式进行测试
- 参考资料
- 例程分享
配置介绍
下面从启动文件,链接文件以及主程序中的设置三方面介绍实现RAM retention的方法。
启动文件
如果对S32K144的启动过程不是很清楚,建议看一下胡工的这篇文章:
《浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解 》
首先,需要关闭SRAM的ECC初始化操作,因为该操作会修改SRAM数据。同时,关闭SRAM的ECC初始化的操作需要在软件复位后执行,如下红框是修改部分:
然后在主函数中判断一下变量的值是否为期望值,如果不是,就亮一段时间的红灯,同时对变量赋值,然后进行软件复位,然后再次判断变量的值是否为期望值,如果是,就一直亮绿灯。主要代码如下:
退出调试模式,重新上电,LED先亮几秒红灯,然后亮绿灯,且一直保持。重复几次,现象一样,符合预期。
注意事项
笔者在调试RAM retention功能时,总结了一些注意事项,分享给大家。
1. 另一种实现RAM retention功能的方式
想要使用RAM retention功能,不一定需要修改ld文件,也可以按如下方式进行:
- 定义变量如下:
- 主函数的实现方式如下:

4. 不使用调试模式进行测试
在测试该例程时,发现重新上电进入debug模式时,自定义区域的变量已经变成了期望值(上电之后并未进行软件复位),和预期结果不符合。但是脱离调试模式,进行的测试结果又是符合预期的。建议读者测试RAM retention功能时离线测试,debug模式下会出现意料之外的情况。
参考资料
- Example S32K144 RAM Retention S32DS.R1 – NXP Community
- S32K1xxRM Rev12.1, 02/2020,官 已是最新的Rev14
- 老王的朋友圈截图
例程分享
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!