OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5156|回复: 6

使用sdram定义并初始化数组遇到问题

[复制链接]

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2019-9-25
在线时间
65 小时
发表于 2021-11-15 13:48:02 | 显示全部楼层 |阅读模式
20金钱
使用正点原子stm32F429开发板,内部ram不够用,想在外部的sdram定义并初始化全局变量数组。已经在system.stm32f4xx.c的SystemInit初始化了sdram,并在main函数中,将数组定义在外部sdram的地址。硬件仿真发现数组中的值和初始化的不同显示乱码,但后续给数组赋值是可以的,想请教有什么问题?
  1. void SystemInit(void)
  2. {
  3.   /* FPU settings ------------------------------------------------------------*/
  4.   #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
  5.     SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  6.   #endif
  7.   /* Reset the RCC clock configuration to the default reset state ------------*/
  8.   /* Set HSION bit */
  9.   RCC->CR |= (uint32_t)0x00000001;

  10.   /* Reset CFGR register */
  11.   RCC->CFGR = 0x00000000;

  12.   /* Reset HSEON, CSSON and PLLON bits */
  13.   RCC->CR &= (uint32_t)0xFEF6FFFF;

  14.   /* Reset PLLCFGR register */
  15.   RCC->PLLCFGR = 0x24003010;

  16.   /* Reset HSEBYP bit */
  17.   RCC->CR &= (uint32_t)0xFFFBFFFF;

  18.   /* Disable all interrupts */
  19.   RCC->CIR = 0x00000000;

  20. #if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
  21.   SystemInit_ExtMemCtl();
  22. #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */

  23.   /* Configure the Vector Table location add offset address ------------------*/
  24. #ifdef VECT_TAB_SRAM
  25.   SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
  26. #else
  27.   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
  28. #endif
  29.         HAL_Init();                     //初始化HAL库   
  30.         Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
  31.         delay_init(180);                //初始化延时函数
  32.         SDRAM_Init();                   //初始化SDRAM
  33. }
复制代码
  1. u16 testsram[10]  __attribute__((at(0XC0000000))) = {0x01, 0x02};
复制代码




函数中数组可以正常赋值

函数中数组可以正常赋值

进入main函数数组的值和定义的不同

进入main函数数组的值和定义的不同

最佳答案

查看完整内容[请看2#楼]

是的 你定义10M的数组,如果要存储初值,FLASH都不够你用了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-11-15 13:48:03 | 显示全部楼层
a1010186930 发表于 2021-11-16 10:02
原子哥我想问一下,我这种方法是不是本质上是从内部的flash把初值加载到外部的sdram?如果是这样,比如我 ...

是的
你定义10M的数组,如果要存储初值,FLASH都不够你用了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2019-9-25
在线时间
65 小时
 楼主| 发表于 2021-11-15 14:18:43 | 显示全部楼层
求帮顶
回复

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1926
注册时间
2021-8-13
在线时间
262 小时
发表于 2021-11-15 14:36:25 | 显示全部楼层
帮顶   !!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-11-16 02:36:22 | 显示全部楼层
最好等SDRAM初始化以后,再初始化其值。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2019-9-25
在线时间
65 小时
 楼主| 发表于 2021-11-16 10:02:21 | 显示全部楼层
正点原子 发表于 2021-11-16 02:36
最好等SDRAM初始化以后,再初始化其值。

原子哥我想问一下,我这种方法是不是本质上是从内部的flash把初值加载到外部的sdram?如果是这样,比如我想定义并初始化一个10M的数组到外部sdram是不是不行?如果可以,本身赋值的时间开销是不是也挺久的?
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2019-9-25
在线时间
65 小时
 楼主| 发表于 2021-11-17 10:05:11 | 显示全部楼层
正点原子 发表于 2021-11-17 01:47
是的
你定义10M的数组,如果要存储初值,FLASH都不够你用了。。。

了解,感谢原子哥
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 16:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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