打印
[电机控制专用MCU]

APM8S007X4系列将Flash函数加载到RAM上运行

[复制链接]
174|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
APM8S007X4系列将Flash函数加载到RAM上运行

APM8S007X4系列是2T 8051内核,在运算处理速度相对较慢,除了使用MDU加速运算模块加速运算之外,还可以将部分函数从Flash加载到RAM上运行。

详细步骤如下:
步骤一:将函数编译到 RAM 中。
APM8S007X4 系列的 SDK 中打开示例工程“Flash_To_SRAM_Run”。Flash 的函数加载到 RAM 中,首先需要将函数编译在 RAM 的地址上,这样才能避免因为 AJMP\LJMP 指令导致程序在 RAM 运行后,又跳转回 Flash 空间。
示例工程中,将函数 add_func_inram(u8 cef1, u8 cef2)和函数 dec_func_inram(u8 cef1, u8 cef2)加载到 RAM 中运行。
1)划分 RAM 空间为 Flash 空间:

1 - RAM 空间化分为 Flash 空间



APM8S007X4 系列的 RAM 空间大小为 0x6000~0x66FF 之间,示例中是将0x6000~0x62FF 划分为 xdata 空间,将 0x6300~0x66FF 划分为 Flash 空间。这里需要注意,Code 空间需要设置为 0x3FFC,需要在末尾预留 4 byte 作为 bin 文件的 CRC
注意:将 RAM 分配为 Flash 时,地址需要 0x100 对齐,长度需要 0x100 对齐。


2)将要加载 RAM 的函数指定编译到 RAM 中:

2 - 将函数指定编译到 RAM 空间



在文件“Demo.m51”中找到要函数编译后的标识 SEGMENT NAME,两个函数的标识符分别为:
add_func_inram?PR?_ADD_FUNC_INRAM?MAIN
dec_func_inram?PR?_DEC_FUNC_INRAM?MAIN

图3 - 在文件“Demo.m51”中查找 SEGMENT NAME


找到函数对应的 SEGMENT NAME 后,将其设置到图 7.2 中,每加一个段,使用“,”进行间隔,只需要第一个段指定 RAM 的地址即可。


步骤二:程序上操作
1RAM 空间和对应 Flash 的储存空间声明:
以下是 RAM 空间和 Flash 空间的变量声明,其中:
  • FLASH_TO_RAM_LEN:是指 RAM 作为函数运行的空间大小,与图 7.1 中的配置保持一致,设置为 0x400按照 0x100 对齐
  • sram_func_xdata:是 RAM 作为函数运行的 buf,在这里声明,是为了方便将数据Flash 加载到 RAM 的操作,注意后面需要指定地址,该地址也是与图 7.1 中的配置保持一致,设置为 0x6300地址按照 0x100 对齐
  • sram_func_code:是 RAM 作为函数时,将数据缓存到 FLASH 中,该操作会在下载时执行,但是工程需要提前声明空间。需要注意的该 buf 也是需要指定地址空间的,该地址空间是会将 0x6000~0x66FF 映射到 0x3000~0x36FF 中。所以如果 RAM 为函数的起始的地址空间为 0x6300,则映射的 FLASH 中为 0x3300


4 - RAM 空间和 Flash 空间变量声明




2)将 Flash 中的函数加载到 RAM 中:


5 - Flash To RAM 函数实现



程序运行后,需要将 Flash 的函数加载到 RAM 中。然后函数就正常调用即可,不需要
其他额外的操作。



注意:要支持上述描述的功能,需要将 GeehyLink 的驱动升级到
GeehyLink_keil_C51_driver_install_V1.2.9”及以上版本才能实现上述功能。



步骤三:烧录器 GeehyProgrammer 的烧录文件
1)因为将 RAM 的空间变成 Flash 空间,所以编译后的 hex 文件的 Flash 数据一定会超过 0x4000 的地址,所以需要将文件进行转换。
打开“Flash_To_SRAM_Run” 例工程,进入到“Project\Keil\Release”的目录下,则会与比其他的示例工程多了 BinScript.BinScriptFlashToRam.BinScriptBinScript.exe make.bat 的文件,如果是移植到其他工程则需要将这几个文件移植过去。
在编辑界面中打开设置,将 make.bat 的批处理添加到编译完成的调用配置中。


7 - 在设置中添加批处理




如果不在上述配置中添加,用户也可以手动运行 make.bat


2)批处理的修改。
同样的如果图 7.1 中的配置修改了,则批处理的配置文件也需要同步修改,打开文件
FlashToRam.BinScript,在图 7.8 对应的位置修改即可。


8 - 修改批处理文件


3)最后注意,编译出来的 bin 文件一定是小于等于 16K-4,如果大于 16K-4 使用烧
录器下载会异常报错。使用 hex bin 文件都可以进行下载。


9 - 修改批处理文件




ca6eda79a01047c9dab4b46066350d7.png (91.58 KB )

ca6eda79a01047c9dab4b46066350d7.png

使用特权

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

本版积分规则

17

主题

18

帖子

0

粉丝