硬汉嵌入式论坛

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

在keil里定义的外部sdram数组能初始化吗

[复制链接]

6

主题

26

回帖

44

积分

新手上路

积分
44
发表于 2021-7-27 14:03:41 | 显示全部楼层 |阅读模式
如题,想在keil里将一个结构体数组放在外部SDRAM,但调试发现数组里存放的数值和定义的不一样,SDRAM的驱动是正常的,是不是程序里定义在外部SRAM的数组不能初始化啊,只能后续代码赋值?有没有大佬指导一下
  1. typedef struct tab1
  2. {
  3.         u16 unicode;
  4.         char* numdot;
  5. }signtable;
  6. signtable test[] __attribute__((at(0XC01F4000))) ={0x1234,"1234"};
复制代码




无论unicode写入多少都是0x6E.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2021-7-27 14:33:42 | 显示全部楼层
这种的不行,程序初始化RAM中读写变量的时候SDRAM还没有配置。
回复

使用道具 举报

6

主题

26

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2021-7-27 14:46:47 | 显示全部楼层
eric2013 发表于 2021-7-27 14:33
这种的不行,程序初始化RAM中读写变量的时候SDRAM还没有配置。

硬汉您好,我想请教一下,如果我SDRAM已经初始化了,那我对于在定义在外部SDRAM的数组,是不是只能用赋值的形式去给定值(比如strcpy等等),而不能在定义数组的时候赋值?(详见我问题的补充)
回复

使用道具 举报

6

主题

26

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2021-7-27 14:50:27 | 显示全部楼层
我又把数组的定义放在了别的.c文件里,然后在SDRAM初始化后去调用打印这个数组的信息,但结果还是不对的

数组定义在PrintTest的.c文件里.jpg
但仿真结果数据是不对的.jpg
在SDRAM初始化后定义数组.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2021-7-27 14:51:45 | 显示全部楼层
1010186930 发表于 2021-7-27 14:46
硬汉您好,我想请教一下,如果我SDRAM已经初始化了,那我对于在定义在外部SDRAM的数组,是不是只能用赋值 ...

楼主位,全局变量形式的那种初始化不行。

这种的要在SystemInit里面就初始化好SDRAM,应该是可以的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2021-7-27 14:54:30 | 显示全部楼层
1010186930 发表于 2021-7-27 14:50
我又把数组的定义放在了别的.c文件里,然后在SDRAM初始化后去调用打印这个数组的信息,但结果还是不对的

...

干脆参考我这个吧,我的这个没问题

像使用内部SRAM一样定义使用SDRAM和CCM RAM,可以随意定义到指定的RAM区域且无需具体地址
https://forum.anfulai.cn/forum.p ... 9275&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

6

主题

26

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2021-7-27 15:03:46 | 显示全部楼层
eric2013 发表于 2021-7-27 14:54
干脆参考我这个吧,我的这个没问题

像使用内部SRAM一样定义使用SDRAM和CCM RAM,可以随意定义到指定的 ...

感谢硬汉
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 19:18 , Processed in 0.041321 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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