Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
外部SDRam
50
求问keil+env怎么才能把变量定义到外扩SDRAM上啊?
发布于 2023-07-26 00:08:05 浏览:766
订阅该版
在使用SDRAM的时候,想定义一个变量到外扩SDRAM中,试了两种方法,都未能解决问题。 一、编辑link.lds文件 这个方法是本论坛中找到的。 (1)在MEMORY{}中添加SDRAM地址 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/65b0b87e5694f4cbd000f7d973897918.png) (2)在SECTIONS{}中添加代码,这部分代码添加在.bss前 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/d7dd6c51406b112ac6d96435af72e5f6.png) (3)在Env中使用scons --target=mdk5生成工程文件 (4)在sdram.c文件中定义testsram[250000]变量 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/a88a2bfdaef60a18e78d326880cb32ba.png) 但是编译后发现,在rt-thread.map文件中,testsram首地址为0x24000224而非0xC0000000 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/5f435f658e64f4b4f2360a9ac7f37769.png) 虽然定义在了内部RAM中,但是还没超出内部RAM,所以程序正常运行,串口有输出,sdram设备正常运行 按理不应该在0xC0000000吗? 到这里我就不知道怎么办了,然后去百度了第二种方法。 二、修改kei的link.sct文件 这里是修改keil的链接文件 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/090cec200d8557aa66456686d3f0d545.png) 修改前 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/472d5b6997e08b851c008ecbff38ba3c.png) 修改后,红框是增加的SDRAM地址,名为sdram_area ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/f51f5f48e88443bd021bc00d7987cd9b.png) 在sdram.c文件中定义testsram[250000]变量 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/5bf66194a190c8d3ca0950717b57b067.png) 编译后发现,在rt-thread.map文件中,testsram首地址为0xC0000000 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/c4f9b389eb4b91011e576ed4f3a62874.png) 虽然地址正确了,但是整个系统卡死了。连串口都没有任何打印信息(菜单也没有) 我试图调试看卡在哪里了,看到是全速运行的状态,指针停在了LDR R0, =SystemInit ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230726/588f28b33f5cd3af00ed2c5b2b4f2d2a.png.webp) 停止运行后,警告Cannot access Memory ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230726/d529c36d28edaaa993b765b76e3ca78d.png) 到最后还是不知道怎么解决。 总结问题就是,方法一不起作用,变量依旧在内部RAM中,方法二能把变量地址放入SDRAM中,但是不知为何会卡死。 我想解决的问题就是,把变量定义到外部SDRAM中,并且能成功访问运行。 求助各位大佬,这个问题困扰我好几天了。
查看更多
张世争
2023-07-26
学以致用
问题是什么?有个很大的数组需要定义到外部的 SDRAM?
3
个回答
默认排序
按发布时间排序
refugeer
2023-07-26
这家伙很懒,什么也没写!
RTT自带内存管理的,可以参考art-pi的源码,里面有外部ram的使用示例和规范。 如果仅仅是需要访问外面的一个地址,借助C语言直接对地址访问就可以了。 ```c #define MCU_ID_ADDR 0x1FFF7A10 mcu.st.idaddr1 = *(rt_uint32_t*) (MCU_ID_ADDR); mcu.st.idaddr2 = *(rt_uint32_t*) (MCU_ID_ADDR + 4); mcu.st.idaddr3 = *(rt_uint32_t*) (MCU_ID_ADDR + 8); ```
JonasWen
2023-07-31
这家伙不懒,但是什么也不想写!
首先你自己试的第二个方法编译出来的源码就不正常 汇编源码地址都不在flash区域内,越界了 ![汇编.png](https://oss-club.rt-thread.org/uploads/20230731/6933063a7ebee7ebb112ec393277504e.png)
撰写答案
登录
注册新账号
关注者
0
被浏览
766
关于作者
疯洋CrazySheep
这家伙很懒,什么也没写!
提问
3
回答
4
被采纳
0
关注TA
发私信
相关问题
1
RT1052 开发板 RTT_HEAP 设置到外部SDRam 系统 崩溃
2
定义数组到SDRAM
3
rt-thread中的lvgl怎样才使用外部RAM
4
rt-thread移植lvgl时怎样用分配外部RAM的 存储空间 给绘图缓存,谁能教我一下
5
关于F429使用外部SDRAM时rt_free出错问题
6
RTT使用外扩堆栈启动时,动态线程需要的栈空间无法分配
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread中的time溢出问题,时间戳溢出,解决方法
2
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
3
SystemView线程名字不显示
4
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
5
免费申请 | FRDM-MCXA156评测活动发布!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部