0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread v4.1.0版本正式发布

科技绿洲 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2022-04-15 16:23 次阅读

自发布v4.1.0 beta版本以来,我们一直积极收集大家的反馈与问题报告,经过我们和社区小伙伴们的共同努力,一起修复了一些问题,完善了新增的特性,现在RT-Thread v4.1.0 版本正式发布了。

这篇文章是专门介绍内核部分更新的内容的。

内核部分更新

新增特性

【hook】增加静态宏方式的HOOK机制【tick】为rt_tick_increase增加HOOK机制【kservice】增加RT_KSERVICE_USING_STDLIB、增加rt_strcpy

修复的问题

修复了一个特定场景下会引起软件定时器停止工作的BUG

其他优化

完善了内核的调试日志

特性解析

1. 新增了静态宏方式的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机制

2. 为rt_tick_increase增加HOOK机制

我们为 rt_tick_increase 增加了 HOOK 机制。这样在某些场景下,比如:当用户需要一个精度较高的时间基准,或者要做一些和系统心跳同频的事情的时候,就可以借助这个机制。利用前一部分的静态宏的方式或者使用API rt_tick_sethook设定hook函数的方式,在系统心跳的时候执行一些“非常简短”的操作。

注意:由于rt_tick_increase的执行频率较高,设定的HOOK函数一定不能执行复杂的操作,会增大系统负荷!

3. 增加RT_KSERVICE_USING_STDLIB

增加了一些针对 kservice.c 的配置宏,可以配置使用c库里提供的内存函数替换 RT-Thread Kservice 实现。代码效率更高,但是在地址非对齐的情况下,可能会出问题。

pYYBAGJZK1-APy8-AAEixPPfPHE008.png

问题修复

软件定时器BUG修复

问题描述:

在特定场景下,软件定时器处理线程会错误的挂起自身,导致如果之后没有启动软件定时器的操作,来唤醒处理线程的话,所有的软件定时器都会停止工作。

问题场景:

当一个定时器到达设定的超时时间,此时软件定时器处理线程会尝试获取下一个定时器的超时时间,来决定何时唤醒自身执行超时操作。如果获取不到下次超时时间的话,就会挂起自身,永久等待。这里获取下一次超时时间的函数之前的版本有问题,如果下一次的超时时间恰好为 RT_TICK_MAX 的话,也会被认为是没有获取到,就会导致处理线程被异常挂起。

poYBAGJZK2yAbU_pAAEBMP0lRd4367.png

问题修复:

RT-Thread v4.1.0版本已经修复了这个问题:https://github.com/RT-Thread/rt-thread/pull/5637。推荐大家同步修改此补丁。

其他优化

完善了内核的调试日志,添加 RT_DEBUG_DEVICE 类型,统一使用 RT_DEBUG_LOG 宏管理内核的调试日志。

poYBAGJZK3aAae5XAAES18_0e14273.png

审核编辑:彭菁
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件
    +关注

    关注

    68

    文章

    4444

    浏览量

    86234
  • 定时器
    +关注

    关注

    23

    文章

    3184

    浏览量

    112700
  • RT-Thread
    +关注

    关注

    31

    文章

    1197

    浏览量

    39059
收藏 人收藏

    评论

    相关推荐

    RT-Thread记录(一、版本开发环境及配合CubeMX)

    RT-Thread 学习记录的第一篇文章,RT-Thread记录(一、RT-Thread 版本RT-Thread Studio开发环境 及
    的头像 发表于 06-20 00:28 4646次阅读
    <b class='flag-5'>RT-Thread</b>记录(一、<b class='flag-5'>版本</b>开发环境及配合CubeMX)

    对RyanMqtt的QOS消息质量稳定性进行测试

    测试环境:stm32F401RCT6、RT-Thread版本: v4.1.0RT-Thread Studio版本: 2.2.6、网络硬件使
    的头像 发表于 10-08 14:38 1027次阅读
    对RyanMqtt的QOS消息质量稳定性进行测试

    RT-Thread 4.0版本

    (下拉至底部及可见RT-Thread4.0压缩包)RT-Thread 4.0版本代码Release啦!因为支持SMP(对称多核处理器)的缘故,RT-Thread
    发表于 08-05 06:34

    RT-Thread v4.1.0 正式发布了!

    ,不会相互干扰完善了已有工具的支持,如:CMake、ArmClang、Keil、Eclipse的支持后面RT-Thread会继续维护好已有特性、BSP的支持,并会在一些高性能芯片上发力,加强对64位以及多核的支持。目前,V4.1.0版本
    发表于 04-14 14:00

    RT-Thread v4.1.0版本内核更新解析

    发布v4.1.0 beta版本以来,我们一直积极收集大家的反馈与问题报告,经过我们和社区小伙伴们的共同努力,一起修复了一些问题,完善了新增的特性,现在RT-Thread
    发表于 06-10 14:49

    RT-Thread 4.1.0版本无法使用strdup()函数如何解决

    系统版本v4.1.0环境基于芯片 STM32F407VE 的原始工程具体描述引入头文件 <string.h> ,无法使用函数 strdup() 。但是在版本 v
    发表于 07-07 14:34

    RT-Thread v4.1.0版本内核部分更新内容介绍

    _KSERVICE_USING_STDLIB、增加rt_strcpy修复的问题修复了一个特定场景下会引起软件定时器停止工作的BUG其他优化完善了内核的调试日志特性解析新增了静态宏方式的HOOK机制从4.1.0版本开始,
    发表于 11-22 16:17

    RT-Thread Studio生成的4.0.4版本为什么会有C-Style部分?

    ?具体过程如下:首先RT-Thread Studio新建基于开发板CH32V307V-R1工程RTT版本是4.0.4,FinSH组件目录较4.1.0(CH32
    发表于 02-14 10:50

    支持RT-Thread V4.1.0的芯片BSP包,可以用V4.1.1版本吗?

    我目前所用的 MCU 是 STM32F411CE,安装的 STM3F4 芯片支持包,说明是支持 RT-Thread V4.1.0 版本。 但我看 V4.1.1
    发表于 05-17 10:43

    RT-Thread v4.1.0中FAL介绍

    V4.1.0 中,将 fal 软件包重新定义为 RT-Thread 内部组件。
    的头像 发表于 04-26 13:34 3313次阅读

    RT-Thread V4.1.0新特性CMake介绍与构建CMake工程

        CMake 支持 在 RT-Thread 4.1.0 正式发布版中,添加了对 CMake 的支持。开发者可以使用 SCons 工具来生成 CMakeLists.txt 文件。 为何要支持
    的头像 发表于 05-24 19:20 2693次阅读

    RT-Thread 4.1.0的CMake构建教程

    CMake 支持 在 RT-Thread 4.1.0 正式发布版中,添加了对 CMake 的支持。开发者可以使用 SCons 工具来生成 CMakeLists.txt 文件。 为何要支持 CMake
    的头像 发表于 05-25 11:06 2884次阅读

    RT-Thread 4.1.0正式添加对Arm Compiler 6支持

    RT-Thread 4.1.0 正式发布版中,添加了对 Arm Compiler 6 的支持,用户可以修改 rtconfig.py 指定生成 mdk5 工程时使用的编译器
    的头像 发表于 06-01 15:20 1682次阅读
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>4.1.0</b>正式添加对Arm Compiler 6支持

    RT-Thread V4.1.0 版本部分更新内容

    RT-Thread V4.1.0 版本已经发布四月有余了,在这四个月中,RT-Thread的主仓库中收到了包含了内核到BSP的方方面面的 P
    的头像 发表于 08-30 09:48 2172次阅读

    RT-Thread v5.0.2 发布

    RT-Thread 代码仓库地址: ●  https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2
    的头像 发表于 10-10 18:45 943次阅读
    <b class='flag-5'>RT-Thread</b> v5.0.2 <b class='flag-5'>发布</b>