OpenEdv-开源电子网

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

关于FreeRTOS 下复用SRAM通讯总线的错误问题

[复制链接]

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
发表于 2021-8-5 14:34:52 | 显示全部楼层 |阅读模式
50金钱
stm32F4 芯片运行在FreeRTOS系统下,使用FSMC总线控制LCD和外部SRAM。这样就有一个问题,如何防止两个外设使用总线冲突。使用互斥量很难解决,因为外部SRAM的访问很频繁,如果使用外部SRAM作为外部动态内存池,用malloc申请内存,就更难使用互斥信号。量。有没有好的办法能解决这个问题。我已经遇见两次了,另外一次也是内存总线挂载了SRAM与其他外设,FreeRTOS下访问冲突。

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

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1960
金钱
1960
注册时间
2021-4-16
在线时间
500 小时
发表于 2021-8-5 14:55:43 | 显示全部楼层
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
771
金钱
771
注册时间
2021-4-15
在线时间
304 小时
发表于 2021-8-5 16:45:02 | 显示全部楼层
同BANK 用到的地方加锁!防止冲突!可以用一下不同BANK错开!或者另起一个CS来错开使用!硬件冲突的话很难避免!
日常敲键--头秃一片
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-8-6 14:03:23 | 显示全部楼层
通过在操作的时候加锁,操作完成再解锁。片选要注意
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2021-8-11 10:44:19 | 显示全部楼层
日渐秃兀 发表于 2021-8-5 16:45
同BANK 用到的地方加锁!防止冲突!可以用一下不同BANK错开!或者另起一个CS来错开使用!硬件冲突的话很难 ...

我确实是用了不同的bank,有一个疑问,使用不同bank时,freertos下 fsmc不会冲突吗?fsmc的读写操作不会被调度打断?
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2021-8-11 10:45:20 | 显示全部楼层
狼里个狼121 发表于 2021-8-6 14:03
通过在操作的时候加锁,操作完成再解锁。片选要注意

我fsmc使用的不同的bank,也就是不同的片选,fsmc如何加锁,每次内存操作都加锁吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-8-12 01:54:24 | 显示全部楼层
malloc的时候,禁止任务调度
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2021-8-13 13:42:10 | 显示全部楼层
正点原子 发表于 2021-8-12 01:54
malloc的时候,禁止任务调度

原子哥,一开始我也是这么想的,但是后来一想不对,因为malloc只是分配了内存,返回了内存头地址。但是我每次使用这段内存的时候都用到了fsmc。应该是每次使用到这个内存的时候都禁止任务调度。另外我malloc使用的是freertos 的APi  pvPortMalloc,这个函数内自带禁止任务调度
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-8-14 01:22:39 | 显示全部楼层
miss_lion 发表于 2021-8-13 13:42
原子哥,一开始我也是这么想的,但是后来一想不对,因为malloc只是分配了内存,返回了内存头地址。但是我 ...

是每次都要禁止啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2021-8-18 16:11:18 | 显示全部楼层

不是malloc的时候禁止,是我每次使用申请到的内存时都要禁止调度或者用互斥信号量
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-8-19 02:17:13 | 显示全部楼层
miss_lion 发表于 2021-8-18 16:11
不是malloc的时候禁止,是我每次使用申请到的内存时都要禁止调度或者用互斥信号量

申请不就是malloc么
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 18:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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