重新入选和内核和SDK电话

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
10个帖子/ 0新
最后一篇
杰曼伯特
离线
最后一次露面:7个月3周前
加入:2014-10-24 14:17
重新入选和内核和SDK电话

你好对话框,

是kernel和sdk调用da14581 / sdk 5.0.x重新参与者safe(例如,ke_msg_alloc(),ke_msg_send(),arch_restore_sleep_mode(),arch_force_active_mode())?我们确实从ISR和App任务中进行了这些呼叫。

是否有任何电话,我们绝对不会来自ISR?

谢谢!

设备:
PM_DIALOG.
离线
最后一次露面:1小时30分钟前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

你能澄清你的意思是“重新参加安全保险箱”?您可以从ISR调用这些函数,但是如果您得到另一个中断,并且将再次触发ISR,则不会有任何其他问题。强烈建议在条件下使用这些功能而不是来自ISR。

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:7个月3周前
加入:2014-10-24 14:17
PM_DIALOG,

PM_DIALOG,

我的意思是重新参加者安全是以下内容:
1.任务T正在运行...
2.发生中断并且处理程序H运行以处理中断。
3.处理程序H还调用功能F.
4.处理程序H完成并返回对任务T的控制,恢复运行功能F.

在这一点上,Funce F的表现可预测?如果Function F访问静态或全局变量,则可能发生不可预测的问题,具体取决于功能f的设计以及中断发生时。

PM_DIALOG.
离线
最后一次露面:1小时30分钟前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

如果您调用两次KE_MSG_ALLOC(),您将分配两次消息。与ke_msg_send()相同,如果您调用两次,则会将其调用两次,内核消息将被发送两次。ARCH_RESTORE_SLEEP_MODE()将休眠模式还原到禁用前的内容,并且ARCH_FORCE_ACTE_MODE()将ΔISAILABLEACE休眠,但保存睡眠模式状态,因此如果ARCH_RESTORE_SLEEP_MODE将调用两次,则ARCH_FORCE_ACTE_MODE()也应调用两次。强烈建议在条件下使用这些功能,如果您想将它们用入ISR。您是否在ISR中使用这些功能?

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:7个月3周前
加入:2014-10-24 14:17
嗨pm_dialog,

嗨pm_dialog,

是的,ARCH_RESTORE_SLEEP_MODE(),ARCH_FORCE_ACTE_MODE(),KE_MSG_ALLOC()和KE_MSG_SEND()都从ISR调用。

我明白,呼叫函数不止一次,应该导致他们的行为不止一次。但是,如果执行是在ke_msg_alloc()(或ke_msg_send())中间的中间时何时发生中断并且ke_msg_alloc()(或ke_msg_send())再次从ISR调用?执行这两个函数掩码在执行时中断吗?

要防范此方案,我可以在Arch_restore_sleep_mode()和Arch_force_active_mode()中屏蔽和恢复中断(或者将来自任务的呼叫与ke_msg_alloc()和ke_msg_send()的调用一起围绕,其中代码如果未保护这些后两个,则使用代码掩码和恢复中断的代码)。我需要吗?

谢谢。

PM_DIALOG.
离线
最后一次露面:1小时30分钟前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

您能从Arch_restore_sleep_mode()和Arch_Force_Active_Mode()的源代码中看到,这些功能不会屏蔽中断。关于ke_msg_alloc()和ke_msg_send()函数,让我检查一下,我会尽快回复您。

谢谢,PM_DIALOG.

PM_DIALOG.
离线
最后一次露面:1小时30分钟前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

我检查了ke_msg_alloc()和ke_msg_send()函数的源代码,它们都禁用了arch_restore_sleep_mode()和arch_force_active_mode()函数的中断。

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:7个月3周前
加入:2014-10-24 14:17
PM_DIALOG,

PM_DIALOG,

对不起,我对你的最后一个帖子混淆了,它说“... ke_msg_alloc()和ke_msg_send()函数,并且两个函数都禁用Arch_restore_sleep_mode()和Arch_force_active_mode()函数的中断。”您似乎暗示所有4个功能禁用中断。但是,函数ARCH_RESTORE_SLEEP_MODE()和ARCH_FORCE_ACTION_MODE()不禁用中断。你是说ke_msg_alloc()和ke_msg_send()函数做或不禁用中断吗?

PM_DIALOG.
离线
最后一次露面:1小时30分钟前
职员
加入:2018-02-08 11:03
嗨jameshiebert,

嗨jameshiebert,

我为混乱道歉。ARCH_RESTORE_SLEEP_MODE()和ARCH_FORCE_ACTE_MODE()不要禁用中断,但是ke_msg_alloc()和ke_msg_send()函数禁用中断。

谢谢,PM_DIALOG.

杰曼伯特
离线
最后一次露面:7个月3周前
加入:2014-10-24 14:17
没问题,谢谢

没问题,谢谢你的澄清。