NXP MCU 技术论坛
直播中

张昂笙

7年用户 970经验值
私信 关注
[问答]

如何制作flash驱动镜像以及如何测试flash驱动镜像?

什么是“闪存驱动程序”

“闪存驱动程序(实际闪存算法)是执行闪存功能的硬件相关代码。在大多数情况下,不可能从闪存编程闪存。因此闪存驱动程序被下载并执行到 RAM 中以允许对应用程序进行编程。将闪存算法下载到 RAM 的优点是可以更新闪存算法,而无需重新编程主引导加载程序。下载完成后,算法会从 RAM 中清除,以避免在应用程序中意外调用闪存功能。

在特殊情况下,闪存算法保存在闪存中,并在需要时复制到 RAM。当然,使用此配置时,无法再更改闪存算法。此外,闪存可能因意外调用这些函数而被无意中擦除。纠正此问题的补救措施是加密相应的程序代码,例如 XOR 等。”

关于演示

-软件使用“S32 Design Studio for S32 Platform V3.4”,SDK为“RTM 4.0.3”

- 基于S32K142-EVB的硬件

- 提供两个demo,一个用于制作“flash driver”,另一个用于测试flash driver image

    ·“ Flash_Driver_Source_Project ”这个例程用来制作flash驱动镜像。

    ·“ Flash_Driver_Source_Project_Test ”这个例程用于测试flash驱动镜像。

·Flash驱动镜像制作流程

1.新建工程,添加flash组件

      参考提供的demo,修改main.c文件。



注1 在main.c中定义函数索引表

2.修改链接文件



注2修改S32K142_32_flash.ld文件




注3修改S32K142_32_flash.ld文件

3.增加操作flash所需功能的“属性”命令




Note 4给函数加上“属性”,像这样



      如果一个函数中引用了另一个函数,那么我们还需要给被引用的函数加上“属性”。

4.编译工程,查看xx.map文件,确认分配的地址空间是否正确。




注5 检查Flash_Driver_Source_Project.map

5.制作闪存驱动





Note 6 创建闪存图像





Note 7 选择图片格式




Note 8 制作闪存驱动镜像

新建一个“xx.s19”文件,然后将0x1fffe000~0x1ffffffff       范围内的数据复制到这个文件中




注 9 如有必要,更改链接顺序

      如果一些函数分布在不同的文件中,可以通过改变链接顺序来改变分配的函数地址。

测试flash驱动镜像的过程

1.新建工程,不添加flash组件。

      您仍然需要创建一个新项目,但不需要向其中添加 Flash 组件。

2.和以前一样修改链接文件。

3.参考提供的demo,修改main.c文件。

4.编译工程,检查.map文件,确认分配的数组位置的地址空间是否正确





注意1 0 确保 Function_TABLE 已经放在正确的位置

5.进入调试部分,导入准备好的flash驱动镜像。





注意 1 2在操作 flash 模块之前导入 flash 驱动镜像

6.测试flash驱动是否能正常工作。



注1 3检查测试结果

至此,我们知道了如何制作flash驱动镜像以及如何测试flash驱动镜像。这种方法不局限于制作flash操作相关的函数,其他函数也可以这样使用,但是这种应用场景的应用很少。

更多回帖

发帖
×
20
完善资料,
赚取积分