硬汉嵌入式论坛

 找回密码
 立即注册
查看: 770|回复: 0
收起左侧

[客户分享] AT32如何在程序中开启片上RAM扩展功能

[复制链接]

41

主题

1

回帖

124

积分

初级会员

积分
124
发表于 2022-1-8 12:18:45 | 显示全部楼层 |阅读模式
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显示结果。

源代码请参考如下路径:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-26 08:55 , Processed in 0.633494 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表