完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位专家好,现在基于SYS/BIOS开发的6678DSP,遇到一个问题,
就是我在核0里面既有硬中断,还有软中断,而且每种中断都有相应的优先级,我设置了一个共享变量,软、硬中断都可以访问并修改它,现在遇到的问题是如何避免临界资源冲突问题。 因为软中断的优先级较低,当软中断试图修改共享资源时如果被硬中断抢占了,并且在硬中断中对共享资源进行了修改,那么当软中断返回时有可能继续对共享资源进行赋值,从而忽略了硬中断对共享资源的操作。 谢谢,其实就是在DSP中如何解决不同优先级的进程对共享资源访问的问题!DSP中有没有类似于C中的信号量互斥机制,再次感谢。 |
|
相关推荐
4个回答
|
|
信号量当然有,可以用硬件的semaphore,也可以用SYS/BIOS提供的软件信号量;
如果是单核多任务共享,用软件信号量就可以,当然也可以用硬件信号量,如果是多核共享,用硬件信号量。 硬件信号量见Semaphore2 Hardware Module for KeyStone Devices User's Guide (Rev. A) |
|
|
|
hdfsf 发表于 2018-6-21 12:14 首先非常感谢您的回复,Allen Yin。看了一下信号量,好像不能解决我这个问题。 我是想要一种保护机制,例如我声明一个全局变量 gvar,在核0的HWI我对该变量进行gvar++处理,而在SWI中我进行gvar--处理。这样可能就会出现问题,如果在SWI中我进行gvar--操作时,指令刚刚进行了gvar减1的操作,在即将对给gvar赋值时突然被HWI抢占了……那么在HWI中对gvar进行了++的操作……返回到SWI时,继续对gvar赋值,就忽略了HWI中对gvar的操作 就是如何避免这种情况啊,也就是在SWI中对gvar操作时禁止HWI抢占,谢谢! |
|
|
|
hljgaoqf 发表于 2018-6-21 12:28 SWI及HWI中不能使用信号量中止程序,像你这种需要只能在SWI中disable HWI,禁止HWI抢占。 |
|
|
|
你好,Andy Yin1,非常感谢您的回复,我试着在SWI中使用hwi_disable()和hwi_restore()结合进行HWI的关闭与打开,可以满足我的要求,谢谢您的提示! |
|
|
|
只有小组成员才能发言,加入小组>>
351 浏览 1 评论
546 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
790 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
660 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
85浏览 29评论
316浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
262浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
210浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
69浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 22:15 , Processed in 1.028442 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号