硬汉嵌入式论坛

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

[STM32H7] 關於h743iit6 keil ram設定問題

[复制链接]

6

主题

17

回帖

35

积分

新手上路

积分
35
发表于 2023-7-21 09:48:56 | 显示全部楼层 |阅读模式
我在手冊上看到h743iit6 ram有1mb。

可是Keil默認設定
IRAM1  0x20000000  0x20000
IRAM2  0x24000000  0x80000
換算起來只有640kb,那剩下的360kb去哪了?
另外設定上,有辦法將IRAM1  與IRAM2  合併起來宣告一個大矩陣嗎?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106981
QQ
发表于 2023-7-21 09:57:48 | 显示全部楼层
1、AXI SRAM(D1域,200MHz)
地址:0x2400 0000
大小: 512KB


2、AHB SRAM(D2域,200MHz)
SRAM1
地址:0x3000 0000
大小:128KB

SRAM2
地址:0x3002 0000
大小:128KB

SRAM3
地址:0x3004 0000
大小:32KB

3、AHB RAM(D3域,200MHz)
SRAM4
地址:0x3800 0000
大小:64KB

BKUP SRAM
地址:0x3880 0000
大小:4KB


4、TCM RAM(400MHz)
DTCM-RAM
地址:0x2000 0000
大小:128KB

ITCM-RAM
地址:0x0000 0000
大小: 64KB
回复

使用道具 举报

6

主题

17

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2023-7-21 15:45:33 | 显示全部楼层
eric2013 发表于 2023-7-21 09:57
1、AXI SRAM(D1域,200MHz)
地址:0x2400 0000
大小: 512KB

那在請教一下
一般宣告變數可以用__attribute__((at(0x080AF000)))  來指定變數的存放ROM位置。
例如
const u8 gFlashDefValue4[512] __attribute__((at(0x080AF000))) =  {0x11, 0x12, 0x13, 0x13, 0x012,0x11};
這個變數在Bin用HexEdit打開AF000位址確實有看到

可是為什麼有些參數沒有指定任何__attribute__ at,依然會排在0x080AF000+200地址之後?
不應該編譯時候放置在前面嗎?
我修改引用順序也沒有影響。

請問有Bin生成的原理相關文件嗎?
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2023-7-21 23:26:48 | 显示全部楼层
常量的地址分配涉及到ARM编译器手册中的文字池的概念,以前研究elf文件格式的时候了解过,英文名叫literal pools.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106981
QQ
发表于 2023-7-22 08:36:40 | 显示全部楼层
acer1204 发表于 2023-7-21 15:45
那在請教一下
一般宣告變數可以用__attribute__((at(0x080AF000)))  來指定變數的存放ROM位置。
例如

意思是你开了512字节,依然有些参数被安排到0x080AF000+0x200地址之后吗,

这个是编译器自己的处理了。如果这样的话,不方便修改了,还是将其定义的末尾扇区方便些。直接占用一个扇区。
回复

使用道具 举报

6

主题

17

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2023-7-23 16:36:27 | 显示全部楼层
eric2013 发表于 2023-7-22 08:36
意思是你开了512字节,依然有些参数被安排到0x080AF000+0x200地址之后吗,

这个是编译器自己的处理了 ...

目前我是刻意將一個大矩陣放在很後面的扇區
不過貌似extern的變數,不知為什麼自動都會編譯在bin的最後地方。
像底下這種的。
.h
extern char aaa[10] ;
.c
char aaa[10]="DDS";
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106981
QQ
发表于 2023-7-24 08:09:53 | 显示全部楼层
acer1204 发表于 2023-7-23 16:36
目前我是刻意將一個大矩陣放在很後面的扇區
不過貌似extern的變數,不知為什麼自動都會編譯在bin的最後 ...

const u8 gFlashDefValue4[512] 直接开一个扇区大小。这样就好使了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 09:04 , Processed in 0.175530 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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