OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4214|回复: 1

FREERTOS控制SDRAM和PSRAM冲突问题

[复制链接]

17

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2019-2-18
在线时间
42 小时
发表于 2019-9-3 09:19:00 | 显示全部楼层 |阅读模式
10金钱
最近调试FREERTOS的时候出现挂死现象,定位很久没有解决,希望大家帮忙看看。
主要接口:
STM32F429,通过LTDC控制RGB LCD,通过FMC bank5连接SDRAM作为LCD的缓存,通过FMC的PSRAM接口访问外部存储器。另外在USB上实现了虚拟串口。

任务描述:
任务1:LED闪烁;
任务2:检测USB是否收到命令。具体方法是检测USB命令标志是否为1,如果有的话则通过PSRAM接口通过memcpy读取外部存储器2048个半字,然后通过USB发给上位机。

中断描述:
USB中断:将收到的2字节命令存入buffer,然后将USB命令标准置1,退出中断。

问题描述:
读取PSRAM的时候系统挂死,现象是上位机没有收到数据,LED灯停止闪烁。
此时通过波形可以看到存储器没有使能wait信号,并且STM32没有读够2048个半字,说明是STM32停止读数而不是存储器异常;
此时测量SDRAM的SDNE信号固定是高电平说明没有SDRAM访问。
但是如果单独测试LCD+SDRAM或通过USB读取PSRAM上的数据都没有问题。
为了防止读取PSRAM时被其他任务打断,memcpy被设置为临界区如下,但是感觉没有保护住。
taskENTER_CRITICAL();
    memcpy(rd_buf, (uint16_t *)DAT_ADDR, rd_bytes);
taskEXIT_CRITICAL();


个人感觉是因为FMC上同时挂载SDRAM和PSRAM,在运行过程中二者出现总线竞争引起的。但是LTDC使用SDRAM缓存完全是后台运行的,CPU只是初始化配置一下,运行起来后就没有办法暂停,让PSRAM接口先运行。

希望大家帮忙分析一下,看看设计有什么缺陷或者有什么定位思路,谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-9-4 02:31:56 | 显示全部楼层
这种同时挂PSRAM和SDRAM的应用确实比较少见,楼主继续努力吧
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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