野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12479|回复: 2

谈谈H7的内存分配以及总结

[复制链接]
发表于 2019-11-16 15:32:46 | 显示全部楼层 |阅读模式
首先呢,大家在使用H743 的时候,在keil或者iar中,有一个内存的勾选,如图1,IROM1表示flash的内存地址,h743是2M,所以,大小自然是2M,起始地址可以在参考手册中找到,如图2,这个比较容易理解,程序就是从这开始运行。
其次,是RAM,743内部有1M,那么这1M怎么分的呢,直接说结论,从地址0x2000 0000开始到(0x3880 0000+64k)结束,加起来是1M,问题来了,为什么我们配置的时候要用0x2400 0000开始的512k呢?不知道大家看参考手册看的怎么样,开头讲了ram 的分配,1M的RAM,分成了5大类,TCM、AXI 、SRAM1/SRAM2/SRAM3/SRAM4、BACK,他们所在的区域不同,TCM包含ITCM和DTCM,地址0x2000 0000的128K,位于D1域,ITCM主要用来存取程序代码,也就是执行命令,DTCM用于数据存取。先把所有的内存分配做个总结再说。
{
1、TCM分为ITCM(运行代码)和DTCM(数据存取)
2、速度400MHZ
3、DTCM地址:0x2000 0000,大小128KB
        ITCM地址:0x0000 0000,大小64KB
}
AXI SRAM 区
{
1、位于D1域,挂在AXI总线
2、速度200MHZ
3、地址:0x2400 0000,大小512KB

}
SRAM1,SRAM2,SRAM3 区
{
1、位于D2域,挂在AHB总线
2、速度200MHZ
3、SRAM1地址:0x3000 0000,大小128KB
        SRAM2地址:0x3002 0000,大小128KB
        SRAM3地址:0x3004 0000,大小32KB
}
SRAM4区
{
1、位于D3域,挂在AHB总线
2、速度200MHZ
3、地址:0x3800 0000,大小64KB

}
Backup SRAM区
{
1、位于D3域,挂在AHB总线
2、速度200MHZ
3、地址:0x3880 0000,大小4KB

}


ok,还是原先的问题,为什么要用0x2400 0000开始做程序的主RAM呢,原因在于,如果用户使用了SDMMC1,也就是比如SD卡的dma功能,或者其他用到了SDMMC1的话,该主设备只接AXI RAM,不能使用其他RAM读取,可以不用,声明变量的时候使用at   section指向AXI地址也是可以的。
其他几个RAM,需要跟BDMA用的时候进行区分,有些是不支持BDMA的。剩下的就没啥了,其他内容可以看下参考手册第二章。

如果大家功能少的话,可以使用DTCM来当主RAM,毕竟速度最快,但是用到了相关DMA的话,还是换成AXI吧。野火的代码里面默认是使用这个。

图1

图1

图2

图2
回复

使用道具 举报

发表于 2019-11-18 08:48:23 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2020-2-17 02:34:10 | 显示全部楼层
H7的价格太高了,tqfp176,208价格啥时候能够正常?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-24 16:27 , Processed in 0.047816 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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