-
Notifications
You must be signed in to change notification settings - Fork 5.3k
[Fix] <components>:drivers/can/dev_can.c 修复CAN底层无法工作时导致调用_can_int_tx的线程一直挂起的问题 #10560
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
📌 Code Review Assignment🏷️ Tag: componentsReviewers: Maihuanyi Changed Files (Click to expand)
🏷️ Tag: components_driver_canReviewers: wdfk-prog Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2025-07-29 15:04 CST)
📝 Review Instructions
|
|
components/drivers/can/dev_can.c
Outdated
| can->status.sndchange = 1; | ||
| rt_completion_wait(&(tx_tosnd->completion), RT_WAITING_FOREVER); | ||
| can->status.sndchange |= 1<<no; | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
请删除多余的换行,并对增加的代码进行格式化处理,谢谢
感觉目前不是不需要诶 默认值100ms应该够了 或者自己改一下宏定义 就不动态调整超时时间了^^ |
|
… 的线程一直挂起的问题 Solution: 使用 can->status.sndchange 的bit位来表示某个发送邮箱超时 如果超时 底层驱动再通知tx_done或者tx_fail事件时不予处理 Signed-off-by: Yucai Liu <1486344514@qq.com>
wdfk-prog
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
我不明白为什么发送会超时?正常来说一旦开始发送 它会自动很快完成,有什么操作会阻值发送过程? |
| can->status.sndchange |= 1<<no; | ||
| if (rt_completion_wait(&(tx_tosnd->completion), RT_CANSND_MSG_TIMEOUT) != RT_EOK) | ||
| { | ||
| level = rt_hw_interrupt_disable(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里开关全局中断是否会产生风险?
Solution: 使用 can->status.sndchange 的bit位来表示某个发送邮箱超时 如果超时 底层驱动再通知tx_done或者tx_fail事件时不予处理
resolves #10550
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
你的解决方案是什么 (what is your solution)
请提供验证的bsp和config (provide the config and bsp)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up