Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
外部SDRam
50
求问keil+env怎么才能把变量定义到外扩SDRAM上啊?
发布于 2023-07-26 00:08:05 浏览:449
订阅该版
在使用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
被浏览
449
关于作者
疯洋CrazySheep
这家伙很懒,什么也没写!
提问
3
回答
4
被采纳
0
关注TA
发私信
相关问题
1
RT1052 开发板 RTT_HEAP 设置到外部SDRam 系统 崩溃
2
定义数组到SDRAM
3
rt-thread中的lvgl怎样才使用外部RAM
4
rt-thread移植lvgl时怎样用分配外部RAM的 存储空间 给绘图缓存,谁能教我一下
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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
【TLSF】TLSF内存管理算法的简单使用
2
RT-Thread Studio V2.2.8 Release Note
3
Wi-Fi Host Driver (WHD) 英飞凌WiFi驱动
4
【RA8D1-Vision Board】OSPI的1S1S1S模式对接FAL
5
树莓派pico RT-Studio编译调试环境搭建,跑个双核试试
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
PWM
潘多拉开发板_Pandora
定时器
BSP
ADC
中断
flashDB
socket
编译报错
keil_MDK
GD32
msh
Debug
SFUD
MicroPython
ulog
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
踩姑娘的小蘑菇
9
个答案
4
次被采纳
小小李sunny
4
个答案
3
次被采纳
用户名由3_15位
8
个答案
2
次被采纳
a1012112796
4
个答案
2
次被采纳
crystal266
3
个答案
2
次被采纳
本月文章贡献
比特饼干
3
篇文章
10
次点赞
aeniac
2
篇文章
3
次点赞
Hlafklio
2
篇文章
3
次点赞
Z_Y
2
篇文章
2
次点赞
聚散无由
1
篇文章
6
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部