野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 38674|回复: 2

求助:请教一个使用SDRAM的问题

[复制链接]
发表于 2019-3-6 11:38:25 | 显示全部楼层 |阅读模式
本帖最后由 shengyp0929 于 2019-3-6 11:39 编辑

求大侠指点:
使用挑战者核心板做实验,
需求:因为工程编译出来的文件过大,bin文件超过1M,所以需要将部分变量放到SDRAM里面。


参考《零死角玩转STM32—F429.pdf》 文档里45.4.5 章节修改,使用了一个FREERTOS的msgq例子工程做修改。
主要就修改了3部分:
1). startup_stm32f429_439xx.s文件中 函数 Reset_handler
2). 工程里修改分散加载文件,新添加RW_ERAM1
3). 从别的挑战者工程里,拷贝bsp_sdram.c,因为里面有函数 SDRAM_Init的实现。


工程附件: https://www.firebbs.cn/forum.php?mod=attachment&aid=MjA5Mzh8ZWQ2NjAyMjhjZTA3MzM5NmQ4ZjlmYzc5NmIxYWM5MWJ8MTc2NTAyOTE4OA%3D%3D&request=yes&_f=.rar
1). 默认配置,选择Fire_FreeRTOS,重新编译,任务能正常启动,就能正常运行。
2). 选择Fire_FreeRTOS_SDRAM,重新编译,main函数启动成功,但是freertos系统里的,创建任务函数xTaskCreate均失败。
运行结果,参考修改前后的结果对比图片

startup_stm32f429_439xx.s文件中 函数 Reset_handler

 startup_stm32f429_439xx.s文件中 函数 Reset_handler

工程分散加载文件修改,新添加RW_ERAM1

工程分散加载文件修改,新添加RW_ERAM1

修改前后的结果对比图片

修改前后的结果对比图片
回复

使用道具 举报

发表于 2019-3-7 09:04:48 | 显示全部楼层
sdram init函数是不是包含了库函数之类的局部变量?堆栈是在__main初始化的,sdram init函数在堆栈准备好之前不能使用,所以初始化不正常,想sdram init 函数正常运行,要把那个函数改成纯寄存器配置,没有使用任务其它变量的函数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-7 15:08:46 | 显示全部楼层
恩,您说的这个也非常有可能。
您看我用的这个sdram_init函数,是不是寄存器配置版本的。这是我在下载资料里面找到的bsp_sdram.c 文件中的。
附上附件。

十分感谢。

bsp_sdram.rar

3.69 KB, 下载次数: 9

回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 21:53 , Processed in 0.041303 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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