Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread
RT-Thread 4.1.0 特性解析之内核
发布于 2022-04-18 15:42:34 浏览:1899
订阅该版
自发布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 实现。代码效率更高,但是在地址非对齐的情况下,可能会出问题。  问题修复 软件定时器BUG修复 问题描述: 在特定场景下,软件定时器处理线程会错误的挂起自身,导致如果之后没有启动软件定时器的操作,来唤醒处理线程的话,所有的软件定时器都会停止工作。 相关链接:https://github.com/RT-Thread/rt-thread/issues/5623 问题场景: 当一个定时器到达设定的超时时间,此时软件定时器处理线程会尝试获取下一个定时器的超时时间,来决定何时唤醒自身执行超时操作。如果获取不到下次超时时间的话,就会挂起自身,永久等待。这里获取下一次超时时间的函数之前的版本有问题,如果下一次的超时时间恰好为 RT_TICK_MAX 的话,也会被认为是没有获取到,就会导致处理线程被异常挂起。  问题修复: RT-Thread v4.1.0版本已经修复了这个问题:https://github.com/RT-Thread/rt-thread/pull/5637。推荐大家同步修改此补丁。 其他优化 完善了内核的调试日志,添加 RT_DEBUG_DEVICE 类型,统一使用 RT_DEBUG_LOG 宏管理内核的调试日志。 
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
XQQ
这家伙很懒,什么也没写!
文章
5
回答
123
被采纳
0
关注TA
发私信
相关文章
1
RT-THREAD在STM32H747平台上移植lwip
2
正点原子miniSTM32开发板读写sdcard
3
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
4
Keil MDK 移植 RT-Thread Nano
5
RT1061/1052 带 RTT + LWIP和LPSPI,有什么坑要注意吗?
6
RT thread HID 如何收发数据
7
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
8
RT-Thread修改项目名称之后不能下载
9
rt-studio编译c++
10
有木有移植rt-thread(nano)到riscv 32位MCU上
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部