[综合信息] 华大HC32F460单片机变量定位到SRAMH快速SRAM内

[复制链接]
 楼主| 白虎姐 发表于 2021-8-25 11:02 | 显示全部楼层 |阅读模式
华大HC32F460单片机内部有一共192KB的SRAM,其中有32KB的快速SRAM区,SRAMH。所谓SRAMH快速SRAM,就是在CPU运行在高速频率下,比如200Mhz,读取内部SRAM无需等待CPU时钟周期,如手册中的下图: 其中只有SRAMH在全频段内是无需CPU等待的,其他SRAM在100Mhz以上都需要等待至少1个CPU周期。所以如果做一定的数据算法,需要大量频繁使用RAM,最好把这些数据放在RAMH内,以增加CPU读取RAM速度。本贴总结一个把4K数据内存数组放在SRAMH的方法。下图是HC32F460的内部SRAM地址layout:
更多信息咨询请联系angel.qi:13827489351(微信与手机号码同步)
在程序中我要把一组4K数据放在0x1FFF8000地址开头的4K size空间内。方法就是使用ARM编译器的属性功能。uint8_t gReserve[4096] __attribute__((section(".ARM.__at_0x1FFF8000")));以上一段代码就是定位4KB大小的gReserve数据到0x1FFF8000内。另外我们在华大默认工程内编译前,还需要把编译器预留的RAM区去掉0x1FFF8000开头 大小为4KB的区域。因为默认编译选项内设置了从0x1FFF8000开头的ZI区,所以默认工程编译会报错。编译选项修改前如图:
修改后编译选项:我们看到IRAM1的起始地址和大小都相应的做了对应调整,这样编译程序才不会报错。  编译后查看.map 看看0x1FFF8000地址是怎么分配的:看来我们分配成功了,我们用程序来验证一下:在程序开头我们添加以下代码打印出我们gReserve的地址。DPRINTF("[%s:%d]:gReserve addr:0x%x\n", __FUNCTION__, __LINE__, gReserve);看一下串口输出:看来我们已经验证没有问题了,gReserve被分配在了内部SRAMH快速   RAM内(0x1FFF8000)。 最后,当然不一定非得变量才能通过__attribute__方式放在内部RAM内,其实函数或某段代码也是可以通过__attribute__来放置在RAM内。另外整个一个.c文件编译出来的.o也可以通过keil file option的方式放在RAM内。比如如下图:

Clyde011 发表于 2025-7-31 16:18 | 显示全部楼层
写得太细了,SRAMH放运算数据确实能提高速度,之前FFT算法搬进去后性能提升明显。
周半梅 发表于 2025-7-31 16:18 | 显示全部楼层
HC32F460这块芯片做数据处理时,SRAMH能实现0 wait-state,确实比主SRAM更适合高频操作。
帛灿灿 发表于 2025-7-31 16:19 | 显示全部楼层
变量定位用__attribute__((section(".ARM.__at_...")))这招很好用,不过记得配合链接脚本或scatter文件调整内存分区。
童雨竹 发表于 2025-7-31 16:20 | 显示全部楼层
我一般会把关键中断处理数据也搬到SRAMH中,这样中断响应时间更快。
万图 发表于 2025-7-31 16:20 | 显示全部楼层
改linker配置是关键,不然地址冲突直接编译不过,特别是在使用默认模板项目时。
Wordsworth 发表于 2025-7-31 16:21 | 显示全部楼层
函数放到RAM执行也有类似办法,可以加__attribute__((section(".ramfunc"))),提升访问速度。
jf101 发表于 2025-7-31 16:21 | 显示全部楼层
华大HC32F460单片机内部有一共192KB的SRAM,其中有32KB的快速SRAM区,SRAMH
Bblythe 发表于 2025-7-31 16:22 | 显示全部楼层
这个帖子也提醒了我们别总依赖默认工程配置,了解芯片内存结构能更好地优化程序。
Pulitzer 发表于 2025-7-31 16:22 | 显示全部楼层
不知道SRAMH能不能通过DMA访问?我在做ADC采样时想直接搬到这块高速RAM里。
Uriah 发表于 2025-7-31 16:23 | 显示全部楼层
用.map文件确认定位结果很关键,很多人容易忽略这个验证步骤。
公羊子丹 发表于 2025-7-31 16:24 | 显示全部楼层
有没有试过把多线程RTOS的堆栈开在SRAMH里?应该能提升任务切换效率。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部