野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10934|回复: 6

cubeMx+外部SDRAM

[复制链接]
发表于 2019-7-18 10:34:03 | 显示全部楼层 |阅读模式
通过cubeMx配置FMC并在main函数初始化外部SDRAM,这时可以通过绝对地址访问外部SDRAM;但我想将外部SDRAM添加到系统的内存管理(即通过常规的变量声明、malloc、free可以使用外部的SDRAM);将外部SDRAM的初始化放在汇编文件里调用则程序无法启动

回复

使用道具 举报

发表于 2019-7-18 11:35:38 | 显示全部楼层
这样用要改分散加载文件,看下教程后面的MDK章节和视频的大师篇
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-18 16:33:41 | 显示全部楼层
WishWish 发表于 2019-7-18 11:35
这样用要改分散加载文件,看下教程后面的MDK章节和视频的大师篇

看过了,现在是SDRAM放到汇编里面调用就没有初始化成功
回复 支持 反对

使用道具 举报

发表于 2019-7-19 00:38:33 | 显示全部楼层
早餐吃什么 发表于 2019-7-18 16:33
看过了,现在是SDRAM放到汇编里面调用就没有初始化成功

是放在SystemInit之后了吗
回复 支持 反对

使用道具 举报

发表于 2019-7-19 08:55:18 | 显示全部楼层
放到汇编的话,不可以用HAL库的函数,必须要用寄存器初始化
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-22 15:43:34 | 显示全部楼层
WishWish 发表于 2019-7-19 00:38
是放在SystemInit之后了吗

是放在SystemInit之后,__main前
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-22 15:52:10 | 显示全部楼层
995346855 发表于 2019-7-19 08:55
放到汇编的话,不可以用HAL库的函数,必须要用寄存器初始化

现在的做法是:
1. 通过cubeMx配置好FMC及相应IO,在main函数中配置外部SDRAM的工作模式;
2. 外部SDRAM可以完全通过读写验证;
3. 此时读取了FMC及GPIO的相应寄存器;
4. 取消第一步中的FMC配置;用第三步中读取到的寄存器值写回相应寄存器的做法来替代FMC及GPIO的配置;
5.  外部SDRAM可以完全通过读写验证;
6. 将写寄存器配置FMC、GPIO及初始化外部SDRAM放到汇编掉用;
7. 外部SDRAM无法读写
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 12:55 , Processed in 0.062372 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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