AT32如何在程序中开启片上RAM扩展功能 概述
AT32 MCU某些型号片上SRAM,有提供一个特别的SRAM扩展模式,可让用户通过设定用户系统数据区的EOPB0来调整SRAM的大小。一般此扩展模式的设置都建议使用雅特力的ICP或ISP工具,在产品批量生成时跟程序的烧录一起完成,但在使用者无法使用ICP/ISP工具的情境下,也可以通过执行程序来完成。本篇指南将说明如何在程序中正确的设置EOPB0来完成SRAM的扩展。
支持型号
AT32F403xx AT32F403Axx AT32F407xx AT32F413xx AT32F435xx AT32F437xx
目录
概述 ................................... 5
设置例程 ........................... 6
例程分析 ................. 7 函数说明 ................. 7
例程展示.......................... 9 历史版本.......................... 11
extend_sram()函数操作修改EOPB0,通过EXTEND_SRAM宏定义可将SRAM从默认的96K字节扩展到224K字节,或从224K字节改回96K字节。其中EXTEND_SRAM的定义值在工程项目配置选项中完成。须注意函数内,不可使用全局变量。修改EOPB0之后,必须执行系统复位,新的EOPB0数值才会生效并真正的设定到所选的SRAM大小,函数如下图
通过修改 startup_at32f403a_407.s 的启动汇编代码,使extend_sram函数在程序初始化之前执行,范例中的 startup_at32f403a_407_ext_ram.s就是修改后的启动文件。下面的图分别是在KEIL和IAR工程中如何修改启动代码。
在例程内,可以通过”Select Target”窗口选择96K 字节或224K 字节的范例程序。如下图: 当选择set_sram_96k或者set_sram_224k时,EXTEND_SRAM的宏定义值对应设置在 C/C++ →Preprocessor Symbols 的定义框里面,编译时extend_sram()函数就会选择对应的配置。
当选择set_sram_96k或者set_sram_224k时,EXTEND_SRAM的宏定义值对应设置在 C/C++ Compiler→Preprocessor的定义框里面,编译时extend_sram()函数就会选择对应的配置。
程序运行完SRAM扩展并进入main( )函数时,会检查EOPB0 的数值以确认是否有正确的去配置成所选择的SRAM大小,并且通过点亮LED4显示结果。
源代码请参考如下路径:
|