极海半导体APM32F072在SRAM中存放和执行程序

极海半导体推出的APM32F072系列如何在SRAM中存放和执行程序,在SRAM中执行程序的。但生活不会永远一帆风顺,芯片的FLASH也不会一直安好;如果FLASH自身出现读写错误,那么写入的程序可能也会出现错误。这时候,我们就要调整思路,将程序存放到SRAM中来调试程序,下面将简单介绍如何在SRAM中存放和执行程序。
① 首先,找到极海半导体型号表,并找出对应型号芯片的SRAM大小,详见图一


② 打开KEIL软件,点击上方的“魔法棒”按钮,选择程序存放和执行的区域。如图二

③ 由步骤一可以知道,APM32F072RBT6的FLASH大小为128K,SRAM大小为16K,经过计算机计算,可以得出FLASH和SRAM的地址范围(FLASH基地址为0X08000000,SRAM基地址为0X20000000)。
PS:
FLASH地址范围:0X08000000 - 0X08020000
SRAM地址范围:0X20000000 - 0X20004000

④ 因为要在SRAM中存放和执行,因此要将SRAM分成两个部分分别执行,如图三所示。

注意:存放区域与执行区域不能重叠!!!

⑤ 在更改完存放区域和执行区域之后,也要改变运算区域的地址范围,如图四所示

注意:执行区域和运算区域可以重叠;由于程序存放和执行都在SRAM中,因此只能通过Debug调试程序,固不勾选Reset and Run。

⑥ 创建配置文件

FUNC void Setup(void)
{
SP = _RDWORD(0X20000000);        //设置堆栈指针
PC = _RDWORD(0X20000004);        //设置PC指针
_WDWORD(0XE000ED08,0X20000000);//设置中断向量表地址
}
LOAD $L%L INCREMENTAL        //装载代码到CPU内部RAM
//LOAD PLL.axf INCREMENTAL
Setup();        //调用Setup函数修改堆栈指针和PC指针,SP的值要从目标代码中读取
g.main        //运行到main函数

以上为配置文件的内容,文件名称不限,但文件格式为XXX.ini。然后将其添加到KEIL的配置中,详见图五。

⑦ 在硬件上,要将BOOT0和BOOT1都引出为1(即连接VDD)。
到这里,软件和硬件的配置就结束了,这个时候就可以在通过SRAM进行程序调试了。

极海半导体推出的APM32F072系列大量现货供应,欢迎大家免费申请样品测试!