AT32-扩大SRAM
AT32 MCU某些型号片上SRAM,有提供一个特别的SRAM扩展模式,可让用户通过设定用户系统数据区的EOPB0来调整SRAM的大小。一般此扩展模式的设置都建议使用雅特力的ICP或ISP工具,在产品批量生成时跟程序的烧录一起完成,但在使用者无法使用ICP/ISP工具的情境下,也可以通过执行程序来完成。本篇指南将说明如何在程序中正确的设置EOPB0来完成SRAM的扩展。
支持型号
AT32F403xx
AT32F403Axx
AT32F407xx
AT32F413xx
AT32F435xx
AT32F437xx
参考文章: https://bbs.21ic.com/icview-2980266-1-4.html
修改步骤
内置 SRAM 96KB(默认)/224KB 大小可以通过以下任何方式选择:
AT32F403A SRAM 大小设置涉及 FLASH 用户系统数据说明,通过配置 EOPB0 选择,地址是:0x
1FFF_F810。
EOPB0=0xFF 表示片上 SRAM 为 96KB
EOPB0=0xFE 表示片上 SRAM 为 224KB。
使能 EOPB0 有效务必要掉电或 RESET 一次。
1 在任意C文件中增加一个方法
/**
* 扩展内存 224K
*/
void extend_sram(void) {
// 其中EXTEND_SRAM的定义值在工程项目配置选项中完成。须注意函数内,不可使用全局变量
if (((USD->eopb0) & 0xff) != EXTEND_SRAM) {
flash_unlock();
flash_user_system_data_erase();
flash_user_system_data_program((uint32_t)&USD->eopb0, EXTEND_SRAM);
nvic_system_reset();
}
}
2 修改启动文件
; 添加扩展内存
IMPORT extend_sram
MOV32 R0, #0x20001000
MOV SP, R0
LDR R0, =extend_sram
BLX R0
MOV32 R0, #0x8000000
LDR SP, [R0]
;End
修改Keil的内存大小如图所示
0x38000/1024 = 224
烧录完成需要重新上电,如果在后续烧录出现烧录失败M4内核信息,可以尝试使用ISP工具清空Flash,且此工具还可以读取设备信息查看是否内存大小配置正确。
评论区