硬汉嵌入式论坛

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

[SDRAM] 分散加载,sdram出现了问题

[复制链接]

9

主题

31

回帖

58

积分

初级会员

积分
58
发表于 2023-5-14 18:50:17 | 显示全部楼层 |阅读模式
平台:野火H750开发板 两块32M sdram组的64M。
fmc驱动没有问题。例程源码
sct文件:

申请数组:

数组大小

我申请数组的时候改成如下模式:

可以成功。
这是什么原因呢?现在我不用用.sct文件是可以跑通的,但是.sct哪里有问题呢?
我肯定是犯了一个自己注意不到的小错误了,求指点。

回复

使用道具 举报

9

主题

31

回帖

58

积分

初级会员

积分
58
 楼主| 发表于 2023-5-14 21:48:31 | 显示全部楼层
图片发不了吗,我把代码贴上:
//内存池(64字节对齐)

u8 mem1base[MEM1_MAX_SIZE]__attribute__((section(".RAM_D1")))__attribute__((align(64)));                                             //内部SRAM内存池
u8 mem2base[MEM2_MAX_SIZE] __attribute__((section(".bss.SD_RAM")))__attribute__((align(64)));                                        //外部SDRAM内存池,前面2M给LTDC用了(1280*800*2)
u8 mem5base[MEM5_MAX_SIZE]__attribute__((align(64)));                                             //内部DTCM内存池
//内存管理表
u32 mem1mapbase[MEM1_ALLOC_TABLE_SIZE]__attribute__((section(".RAM_D1")));                                                                                //内部SRAM内存池MAP
u32 mem2mapbase[MEM2_ALLOC_TABLE_SIZE]__attribute__((section(".bss.SD_RAM")));        //外部SDRAM内存池MAP
u32 mem5mapbase[MEM5_ALLOC_TABLE_SIZE] ;        //内部DTCM内存池MAP


sct文件内容为:

LR_IROM1 0x08000000 0x00020000 { ; load region size_region
ER_IROM1 0x08000000 0x00020000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}


; RW data - 128KB DTCM
RW_IRAM1 0x20000000 0x00020000 {
.ANY (+RW +ZI)
}

; RW data - 512KB AXI SRAM
RW_IRAM2 0x24000000 0x00080000 {
*(.RAM_D1)
}

; RW data - 128KB SRAM1(0x30000000) + 128KB SRAM2(0x3002 0000) + 32KB SRAM3(0x30040000)
RW_IRAM3 0x30000000 0x00048000 {
*(.RAM_D2)
}

; RW data - 64KB SRAM4(0x38000000)
RW_IRAM4 0x38000000 0x00010000 {
*(.RAM_D3)
}
RW_IRAM5 0xD0000000 0x02000000  {  ; RW data
  *(.bss.SD_RAM)
  }
}

数组大小:

//mem1内存参数设定.mem1是H7内部的AXI内存.
#define MEM1_BLOCK_SIZE                        64                                                            //内存块大小为64字节
#define MEM1_MAX_SIZE                        448*1024                                                  //最大管理内存 448K,H7的AXI内存总共512KB
#define MEM1_ALLOC_TABLE_SIZE        MEM1_MAX_SIZE/MEM1_BLOCK_SIZE         //内存表大小

//mem2内存参数设定.mem2是外部的SDRAM内存
#define MEM2_BLOCK_SIZE                        64                                                            //内存块大小为64字节
#define MEM2_MAX_SIZE                        28*1024*1024                                          //最大管理内存28912K,外扩SDRAM总共64MB,LTDC占了2MB,还剩62MB.
#define MEM2_ALLOC_TABLE_SIZE        MEM2_MAX_SIZE/MEM2_BLOCK_SIZE         //内存表大小
                 
                 
//mem5内存参数设定.mem5是H7内部的DTCM内存,此部分内存仅CPU和MDMA可以访问!!!!!!
#define MEM5_BLOCK_SIZE                        64                                                            //内存块大小为64字节
#define MEM5_MAX_SIZE                        60 *1024                                                  //最大管理内存120K,H7的DTCM共128KB
#define MEM5_ALLOC_TABLE_SIZE        MEM5_MAX_SIZE/MEM5_BLOCK_SIZE         //内存表大小

改成如下可以运行成功:

u8 mem1base[MEM1_MAX_SIZE]__attribute__((section(".RAM_D1")))__attribute__((align(64)));                                             //内部SRAM内存池
u8 mem2base[MEM2_MAX_SIZE] __attribute__((section(".bss.ARM.__at_0xD0000000")))__attribute__((align(64)));                                        //外部SDRAM内存池,前面2M给LTDC用了(1280*800*2)
u8 mem5base[MEM5_MAX_SIZE]__attribute__((align(64)));                                             //内部DTCM内存池
//内存管理表
u32 mem1mapbase[MEM1_ALLOC_TABLE_SIZE]__attribute__((section(".RAM_D1")));                                                                                //内部SRAM内存池MAP
u32 mem2mapbase[MEM2_ALLOC_TABLE_SIZE]__attribute__((section(".bss.ARM.__at_0xD2000000")));        //外部SDRAM内存池MAP
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-5-15 11:42:01 | 显示全部楼层
云安 发表于 2023-5-14 21:48
图片发不了吗,我把代码贴上:
//内存池(64字节对齐)

图片要单独上传,复制粘贴不行。
SDRAM此贴 , H7的SDRAM使用这种玩法要特别设置才行。


【原创】像使用内部SRAM一样定义使用STM32H7的外部SDRAM,含MDK和IAR两版
https://www.armbbs.cn/forum.php? ... 8697&fromuid=58
(出处: 硬汉嵌入式论坛)





回复

使用道具 举报

3

主题

1233

回帖

1242

积分

至尊会员

积分
1242
发表于 2023-5-15 11:42:10 | 显示全部楼层
用SDRAM前没初始化吧?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2023-5-15 11:43:46 | 显示全部楼层
morning_enr6U 发表于 2023-5-15 11:42
用SDRAM前没初始化吧?

要特别设置,此贴:


【原创】像使用内部SRAM一样定义使用STM32H7的外部SDRAM,含MDK和IAR两版
https://www.armbbs.cn/forum.php? ... 8697&fromuid=58
(出处: 硬汉嵌入式论坛)

回复

使用道具 举报

8

主题

161

回帖

185

积分

初级会员

积分
185
发表于 2023-5-15 15:57:59 | 显示全部楼层
本帖最后由 yunqi 于 2023-5-16 10:41 编辑
eric2013 发表于 2023-5-15 11:42
图片要单独上传,复制粘贴不行。
SDRAM此贴 , H7的SDRAM使用这种玩法要特别设置才行。

请问FSMC挂载NorFlash, 可以从NorFlash启动吗?
需要做哪些工作?
回复

使用道具 举报

9

主题

31

回帖

58

积分

初级会员

积分
58
 楼主| 发表于 2023-5-15 16:49:06 | 显示全部楼层
eric2013 发表于 2023-5-15 11:42
图片要单独上传,复制粘贴不行。
SDRAM此贴 , H7的SDRAM使用这种玩法要特别设置才行。

我看过,但是忘了细节,后面找不到了,只找到v7教程里的五块内存方法,忘了加UNINIT。下班再试试
回复

使用道具 举报

9

主题

31

回帖

58

积分

初级会员

积分
58
 楼主| 发表于 2023-5-15 17:17:56 | 显示全部楼层
morning_enr6U 发表于 2023-5-15 11:42
用SDRAM前没初始化吧?

初始化了,不改.sct文件没有问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 20:33 , Processed in 0.376854 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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