实时内核简介

RT-Thread实时内核的结构


RT-Thread实时核心总体情况

RT-Thread的实时核心是一个精巧、高效、高度可定制 的实时核心:

  •  采用C语言风格的内核面向对象设计,完美的模块化设计。
  •  支持Keil MDK/RVDS armcc编译器;GNU GCC编译器;

IAR ARM编译器等多种主流编译器。

  • 完备的宏配置头文件,方便内核及外围组件细节剪裁,繁简由心。
  • 根据这份宏配置头文件进行自动裁剪相关模块:
  • 动态生成Keil MDK v3.x/v4.x工程文件,不需要的文件自动脱 离。
  • 灵活的命令行编译;

基于优先级的全抢占式线程调度器:

  • 线程是RT-Thread中的基本调度单位;
  • 只要有高优先级线程就绪,立刻切换到高优先级线程执行;
  • 调度算法采用bitmap的方式,计算最高优先级线程时间恒定。
  • 最大支持256/32/8级线程优先级
  • 无限线程数,相同优先级线程采用时间片可设置的Round-robin算法。

RT-Thread实时核心:同步、通信

丰富的线程间同步机制:

  • 信号量、用亍防止优先级翻转的互斥量、用于多事件触发的事件集;
  • 高效的线程间通信机制:
  • 带缓存功能的邮箱通信和消息队列通信方式;
  • 发送、释放动作可安全的在中断服务例程中使用。
  • 当资源可用时,线程可按照FIFO方式戒优先级排队方式挂起在等待队列上。

RT-Thread实时核心:内存管理

内存管理模块:

  • 带线程挂起功能的静态内存池:
  • 每个内存块大小固定;
  • 申请、释放内存块行为实时而高效。
  • 当内存池为空时,线程可选择是否休眠,当有内存块可用时,自动唤醒等待线程。
  • 多线程环境安全的动态堆内存管理。
  • 基本系统亦可脱离内存分配器而独立运行。

RT-Thread实时核心:设备驱动

基于名字的对象化设备模型:

  • 上层应用只需查找相应设备名获得设备句柄即可采用标准的设备接口进行硬件设备的访问操作;
  • 通过这套设备模型,可以做到应用与底层设备的无关性。
  • 当前支持: 字符设备,块设备、网络设备、声音设备等。

RT-Thread实时核心:技术指标

ARM Cortex-M3上基本内核配置资源占用情况:

  • Program Size: Code=12686 RO-data=578 RW-data=296  ZI-data=2800

最小版本资源占用情况:

  • 2.5K ROM,1K RAM

MB9BF618S (144MHz)上测试的线程上下文切换时间:

  • 挂起操作引起线程上下文切换:2.812 μs
  • 信号量引起线程上下文切换:3.465 μs
  • 邮箱引起线程上下文切换:4.437 μs

RT-Thread实时核心:比较