打印

RT-Thread 4.1.0 特性解析之内核

[复制链接]
697|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2022-4-22 09:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
现在RT-Thread v4.1.0 版本正式发布了。
这篇**是专门介绍内核部分更新的内容的。

新增特性
【hook】增加静态宏方式的HOOK机制
【tick】为rt_tick_increase增加HOOK机制
【kservice】增加RT_KSERVICE_USING_STDLIB、增加rt_strcpy
修复的问题
修复了一个特定场景下会引起软件定时器停止工作的BUG
其他优化
完善了内核的调试日志



使用特权

评论回复

相关帖子

沙发
keer_zu|  楼主 | 2022-4-22 09:33 | 只看该作者
特性解析
  • 新增了静态宏方式的HOOK机制
从4.1.0版本开始,RT-Thread在保证向前兼容的基础上对原有的HOOK方式进行了改进,实现了如下的效果:
与原有使用函数指针进行“运行时刻”HOOK的方式兼容,依赖原有方式进行代码插入或HOOK的模块无需修改;
使用RT_USING_HOOK作为总开关
  • 当未定义该宏时,将关闭所有HOOK功能,也不再生成任何相关代码
  • 当定义该宏时,在未开启传统“函数指针HOOK”时,默认情况下也不再生成额外代码
允许用户通过“插入宏的方式”在编译时刻精细控制具体HOOK哪个位置
  • 可以插入任意代码块——其中就包括函数指针、对普通函数的调用等等
具体使用方式可以参考共享者小伙伴的这篇**:
RT-Thread新版本中HOOK的使用方法(请复制以下链接至浏览器打开:https://club.rt-thread.org/ask/article/3669.html)
注意:非rtos资深用户,请谨慎使用HOOK机制
  • 为rt_tick_increase增加HOOK机制
我们为 rt_tick_increase 增加了 HOOK 机制。这样在某些场景下,比如:当用户需要一个精度较高的时间基准,或者要做一些和系统心跳同频的事情的时候,就可以借助这个机制。利用前一部分的静态宏的方式或者使用API rt_tick_sethook设定hook函数的方式,在系统心跳的时候执行一些“非常简短”的操作。
注意:由于rt_tick_increase的执行频率较高,设定的HOOK函数一定不能执行复杂的操作,会增大系统负荷!

使用特权

评论回复
评论
keer_zu 2022-4-22 09:34 回复TA
这篇\文\章,变成了这篇**,这得多敏感 
板凳
keer_zu|  楼主 | 2022-4-22 09:35 | 只看该作者
  • 增加RT_KSERVICE_USING_STDLIB
增加了一些针对 kservice.c 的配置宏,可以配置使用c库里提供的内存函数替换 RT-Thread Kservice 实现。代码效率更高,但是在地址非对齐的情况下,可能会出问题。

使用特权

评论回复
地板
keer_zu|  楼主 | 2022-4-22 09:35 | 只看该作者
问题修复
软件定时器BUG修复
问题描述:
在特定场景下,软件定时器处理线程会错误的挂起自身,导致如果之后没有启动软件定时器的操作,来唤醒处理线程的话,所有的软件定时器都会停止工作。
问题场景:
当一个定时器到达设定的超时时间,此时软件定时器处理线程会尝试获取下一个定时器的超时时间,来决定何时唤醒自身执行超时操作。如果获取不到下次超时时间的话,就会挂起自身,永久等待。这里获取下一次超时时间的函数之前的版本有问题,如果下一次的超时时间恰好为 RT_TICK_MAX 的话,也会被认为是没有获取到,就会导致处理线程被异常挂起。
问题修复:
RT-Thread v4.1.0版本已经修复了这个问题:https://github.com/RT-Thread/rt-thread/pull/5637。推荐大家同步修改此补丁。

使用特权

评论回复
5
keer_zu|  楼主 | 2022-4-22 09:36 | 只看该作者
其他优化
完善了内核的调试日志,添加 RT_DEBUG_DEVICE 类型,统一使用 RT_DEBUG_LOG 宏管理内核的调试日志。

73375626206996ad3b.png (183.7 KB )

73375626206996ad3b.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1352

主题

12436

帖子

53

粉丝