我想将闪存代码复制到 RAM 中,但我不熟悉这些步骤,您能给我一些关于如何实现我的目标的建议吗?
秋奇
2017年12月29日
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我想将闪存代码复制到 RAM 中,但我不熟悉这些步骤,您能给我一些关于如何实现我的目标的建议吗?
秋奇
2017年12月29日
您好、邱
1.在 cmd 文件中定义闪存 API 的存储器位置
例如: Flash_API (RX) :origin=0x00000020 length=0x000014E0
2.在 cmd 文件中定义闪存 API 部分
例如:
/*创建一个名为 flashAPI */的输出段
/*将代码加载到 FLASH_API (在 MEMORY{}*/中定义
/*在 SRAM 中运行代码*/
/*符号 API_LOAD 的值是起始加载地址*/
/* api_run 的值是起始运行地址*/
闪存 API:
{
fapi_UserDefinedFunctions.obj (.text)
flash_operation.obj (.text) /*您的闪存擦除/编程/读取等 obj 文件*/
--library=...\..\lib\F021_API_CortexR4_be.lib (.text)
}load = flash_API、run = SRAM、load_start (api_load)、run_start (api_run)、size (api_size)
3.定义将 flashAPI 段复制到 SRAM (汇编代码)的函数
例如:
;------------------------------------------------------------------
;
;将闪存 API 从闪存复制到 SRAM。
;
.def _APIcopy2RAM_
asmfunc
copyAPI 2RAM_
.ref API_load
FLASH_LOAD .word API_LOAD
.ref API_run
FLASH_run .word API_run
.ref API_size
FLASH_SIZE .word API_SIZE
LDR r0、FLASH_LOAD
LDR R1、FLASH_RUN
LDR R2、FLASH_SIZE
添加 R2、R1、R2
COPY_Loop1:
LDR R3、[r0]、#4
STR R3、[R1]、#4
CMP R1、R2
BLT COPY_LOOP1
BX LR
endasmfunc
3.调用 main()中的函数
例如:
copyAPI 2RAM_();