专业中间件

2021-03-17 17:01:00
admin
原创
22374


实时内核和中间件


安全 Bootloader


安全 Bootloader ,支持可信启动,安全升级,多冗余度安全启动功能。

  • 可信启动:固件防篡改,自动检测固件签名,保证固件安全可靠;固件加密,支持 AES-256 加密算法,提高固件下载、存储安全性
  • 安全升级:断电后保护,重启后继续升级
  • 多冗余度安全启动:固件损坏时,自动还原至出厂固件,提升可靠性


高可靠实时操作系统内核

实时内核


  • 基于优先级的可抢占式线程调度器
  • 最大支持 256/32/8 级线程优先级
  • 无限线程数,相同优先级线程采用时间片可设置的 Round-robin 算法。
  • 丰富的线程间同步、互斥机制:
    • 信号量(锁、同步)、用于防止优先级翻转的互斥量;
    • 用于多事件触发的事件集;
  • 高效的线程间通信机制;
    • 带缓存功能的邮箱通信和消息队列通信方式
    • 发送到已满的邮箱时,可主动挂起发送线程
    • 发送、释放动作可安全的在中断服务例程中使用
    • 当资源不可用时,线程可按照FIFO方式或优先级排队方式挂起在等待队列上
  • 评测:轩宇国军标操作系统第三方评测
  • 认证:IEC 61508 SIL3、EN50128功能安全认证

强实时补丁

操作系统的硬实时性保障是一个系统工程,除了调度器的O(1)时间效率调度,内核各项功能在设计时均须保证运行期的确定性。

实时补丁功能用于满足对于实时性极致苛刻的应用场景,实时性达微秒级。它将划分了实时世界和普通世界,在实时世界中,实时中断的中断响应延迟时间是:中断延迟 = 识别中断时间 + [等待中断打开时间],实时世界和普通世界之间通过特定的事件进行通信。



多核处理器支持

目前支持多核处理器平台的实时操作系统体系结构有对称多处理SMP(Symmetric Multi-Processing) 构架和非对称多处理 AMP(Asymmetric Multi-Processing)构架两种。这两种操作系统的结构、代码和数据区的分配方面差别很大。SMP 构架的系统中所有 CPU 共享系统内存和外设资源,由操作系统负责处理器间协作,并保持数据结构的一致性,而在 AMP 构架的系统中,用户需要对各个操作系统使用的硬件资源进行划分,CPU 间的合作仅限于使用共享存储器的情况。

SMP

SMP 在一个计算机上汇集了一组处理器(多 CPU),各 CPU 之间共享内存子系统以及总线结构。它是相对非对称多处理技术而言的、应用十分广泛的并行技术,RT-Thread 可同时支持单核和 SMP 多核技术。


  • 优异的多核调度机制,显著提高线程并发执行效率
  • 支持线程与指定核心绑定,适用密集计算与快速响应
  • 支持更精细的改进共享资源保护策略,引爆多核性能
  • API 全面向后兼容,原有上层应用不需要关心多核调度细节,无缝迁移

AMP

RT-Thread 支持 AMP 模式,能够在多核处理器上同时运行多个操作系统实例,例如 RT-Thread 和 Linux, 或是 RT-Thread 和 RT-Thread,系统之间通过软件总线进行通信,由 Linux 保证富应用,RT-Thread 保证强实时。一方面,能满足诸如实时数据采集、实时控制等苛刻场景下的应用,另一方面,使得原有非实时操作系统产品在升级时可以不用大幅重构原有代码。

  • 实时性强,易于使用。在单独的处理器上运行 RT-Thread,延续 RT-Thread 强实时和易于使用的特性。
  • 支持对多核处理器进行划分配置,如对于四核处理器进行配置,其中三个核运行 Linux,一个核运行 RT-Thread。
  • 遵循标准 OpenAMP 核间通信协议,可实现对远程处理器及其相关软件环境进行生命周期管理,能够对远程处理器实现启动和关闭;不同操作系统之间通过 OpenAMP 提供的标准接口互相通信。
  • 多核间性能深度优化,每个核的重启不会影响到其他核的任务运行,不会造成任何抖动;针对在进行一些系统操作时会对其他核造成的抖动问题进行了深度优化。


安全文件系统

针对大容量存储设备提供的掉电安全文件系统,在任何异常掉电情况下,保证文件系统完整无损。

虚拟文件系统

  • 类似 Linux 虚拟文件系统方式的融合了多种文件系统的超级文件系统;
  • 为上层应用提供统一的文件访问接口,而不需要关心底层文件系统的具体实现及存储方式;
  • 支持 FAT12/16/32、ROMFS 和 RAMFS 等多种文件系统,支持长文件名,中文文件名;
  • 支持 SPI NOR Flash、NAND Flash、SD 卡、EMMC、SATA 等存储介质。

FAT 文件系统加固

 支持 FAT 文件系统安全加固功能,实现 FAT 文件系统扫描,进行文件系统故障恢复功能。

Nand 闪存转换层

NandFlash  芯片的特性决定了不能采用磁盘驱动器的管理模式进行使用,需要利用闪存转换层 (NFTL)来模拟传统块设备的行为,NFTL 的功能介绍如下所示。

  • 逻辑到物理地址转换:为了进行磨损均衡和坏块管理,不能直接寻址进行读写操作,因此逻辑块需要动态地映射到某个物理块。
  • 坏块管理:NAND Flash 芯片出厂时,某些块就标记为坏块,在使用一段时问后,某些块也可能变得不可用,因此需要对这些块进行标记和管理,记录坏块信息,进行坏块替换等操作。
  • 磨损均衡:磨损均衡主要是为了均衡整个存储器各单元的使用寿命。由于 Flash 有一定的使用寿命,NAND Flash 一般可擦除的次数为 10 万次,所以随着使用次数的增加,会有一些单元逐渐变得不稳定或失效。因此,要尽量避免频繁地对同一块地址操作,以免造成局部单元提前损坏;同时,由于擦除操作耗时较多,也应尽量减少擦除操作,最终达到擦写次数均衡。
  • 校错纠错:所有 Flash 器件都存在位差错现象,而且更多见于 NAND Flash。在某些情况下一个比特位会发生翻转,但是一个位的翻转并不见得这个块就已经变成了坏块。一位坏块也可以通过 ECC 算法进行纠正过来。
  • 日志记录:为了避免掉电时丢失不必要的数据,在 NFTL 中实现了 NAND Flash 操作的日志记录。当掉电情况发生时,能够恢复出上一个保存时间点的数据信息。


网络协议栈

提供完善的网络支持,支持 Netdev 网络接口设备、套接字抽象层 SAL、 Lwip TCP/IP 协议栈及各类网络应用。

 

Netdev(network interface device),即网络接口设备,又称网卡。每一个用于网络连接的设备都可以注册成网卡,为了适配更多的种类的网卡,避免系统中对单一网卡的依赖,提供了 Netdev 组件用于网卡管理和控制。

 SAL(套接字抽象层)组件完成对不同网络协议栈或网络实现接口的抽象并对上层提供一组标准的 BSD Socket API。

采用了全功能的 lwIP TCP/IP 协议栈,提供 BSD socket 标准风格的编程接口,支持:

  • ARP、IP、ICMP、IGMP、UDP、TCP
  • PPP、DHCP、DNS
  • Ping、Iperf 、TFTP、FTP、Webnet、Telnet 等。


图形用户界面

Persimmon UI 是一款现代风格,酷炫流畅的现代化轻量级图形库组件,采用小程序开发方式,符合现代人机界面需求,半透明、 Alpha 混合、抗锯齿和浮雕字体、触摸手势、高分辨率和高帧率动画特效、2D/3D 旋转、场景转化。

极速应用开发体验

  • 使用 JavaScript 语言,采用小程序的应用开发模式,开发速度快
  • 提供拖拽式 UI 设计工具,快速完成界面布局
  • 提供小程序应用下载、升级机制,实现多 APP 功能

强大的 GUI 引擎

  • 内置高效 GUI 引擎,使得 GUI 具备较强的流畅性
  • 支持多种常用控件,动画,并支持自定义,可实现各种炫酷效果
  • 内建矢量图形库,可实现复杂的画布效果
  • 可适配嵌入式 GPU ,具备 GUI 硬件加速能力
  • 提供模拟器环境,无需真实硬件,即可进行应用开发

完备的国际化支持

  • 支持 Unicode 编码
  • 应用资源(如:图片、字体、字符串)支持按语言切换
  • 文字支持双向排版
  • 支持连体字显示(目前已适配阿拉伯语)


命令行控制台

FinSH 命令行组件提供了一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息,支持用户自定义函数、变量的直接调试。它可以使用串口/以太网/ USB等与PC机进行通信,硬件拓扑结构如下图所示:

用户在控制终端输入命令,控制终端通过串口、USB、网络等方式将命令传给设备里的 FinSH,FinSH 会读取设备输入命令,解析并自动扫描内部函数表,寻找对应函数名,执行函数后输出回应,回应通过原路返回,将结果显示在控制终端上。当使用串口连接设备与控制终端时,FinSH 命令的执行流程,如下图所示:

 

RT-Thread Secure shell commands:

version         - show RT-Thread version information

list_thread     - list thread

list_sem        - list semaphore in system

list_event      - list event in system

list_mutex      - list mutex in system

list_mailbox    - list mail box in system

list_msgqueue   - list message queue in system

list_timer      - list timer in system

list_device     - list device in system exit            - return to RT-Thread shell mode.

help            - RT-Thread shell help.

ps              - List threads in the system.

time            - Execute command with time.free            - Show the memory usage in the system.

常用 FinSH 命令如下:

  • 显示线程状态
  • 显示信号量状态
  • 显示事件状态
  • 显示互斥量状态
  • 显示邮箱状态
  • 显示消息队列状态
  • 显示内存池状态
  • 显示定时器状态
  • 显示设备状态
  • 显示动态内存状态


ulog日志系统

ulog 是一套简洁易用的日志系统,日志是将软件运行的状态、过程等信息,输出到不同的介质中(例如:文件、控制台、显示屏等),并进行显示和保存。为软件调试、维护过程中的问题追溯、性能分析、系统监控、故障预警等功能,提供参考依据。可以说,日志的使用,几乎占用的软件生命周期的至少 80% 的时间。

主要特性如下:

  • 日志输出的后端多样化,可支持例如:串口、网络,文件、闪存等后端形式。
  • 日志输出被设计为线程安全的方式,并支持异步输出模式。
  • 日志系统高可靠,在中断 ISR 、Hardfault 等复杂环境下依旧可用。
  • 日志支持运行期 / 编译期设置输出级别。
  • 日志内容支持按关键词及标签方式进行全局过滤。
  • API 和日志格式可兼容 linux syslog。
  • 支持以 hex 格式 dump 调试数据到日志中。


关注 RT-Thread

联系 RT-Thread

支持:support@rt-thread.com

媒体:news@rt-thread.com

商务:business@rt-thread.com

021-50338190

上海浦东新区达尔文路 88 号半岛科技园 10 号楼 5 层