MS-RTOS 内核定制

更新时间:
2025-01-03

MS-RTOS 内核定制

本章将介绍 MS-RTOS 内核定制。

登录进入 构建界面 进行内核定制,首先需要选择 MS-RTOS 的版本,然后进行相关的基本属性配置。

基本属性配置

工具链配置

CPU 架构以及支持的 FPU 类型。

ARM 系列

arm_msrtos_toolchain描述
cotex-m0小巧的 ARM 处理器,可通过 DesignStart 免费获得许可费,非常适用于智能传感器和片上混合信号系统(SoC),三种高度优化的低功耗模式
cotex-m0plusCortex-M 中面积最小,功耗最低的处理器,8 位处理器成本,32 位处理器性能,三种高度优化的低功耗模式可节省能源,最常用于可穿戴设备的医疗保健,健身等
cotex-m1针对 FPGA 设计优化的小处理器,利用 FPGA 上的存储块实现了紧耦合内存(TCM)。和 Cotex-M0 有相同的指令集
cotex-m3针对低功耗微控制器设计的处理器,面积小但是性能强劲,支持处理器可以快速处理复杂任务的丰富指令集。具有硬件除法器和乘加指令(MAC),并且,M3 支持全面的调试和跟踪功能,使软件开发者可以快速的开发应用
cotex-m4具有混合信号设备的性能,集成数字信号处理(DSP)简化了系统设计,基本的微控制器功能使其成为工业应用的理想选择,部署广泛的 Cortex-M 处理器具有广泛的生态系统
cotex-m7性能最高的 Cortex-M 处理器,简化信号处理,为大众带来高性能 DSP,内置浮点处理功能可降低功耗,支持创新的 MCU,可实现更密集的自动化任务
cotex-m23具有 TrustZone 安全性的尺寸最小,功耗最低的微控制器。包含 TrustZone 的内置安全基础,内存保护可最大限度地降低意外访问的风险,理想的处理器,用于能量收集物联网节点和小型传感器
cotex-m33主流的处理器设计,与 M3/M4 类似,但系统设计更灵活,能耗比更高效,性能更高。M33 还支持 TrustZone 安全扩展
cotex-r4主频高达 600MHz(具有 2.45DMIPS/MHz),配有 8 级流水线,具有双发送、预取和分支预测功能、以及低延迟中断系统,可以中断多周期操作而快速进入中断服务程序,适合安全攸关的系统
cotex-r5提供无缝,实时的性能和功能安全性双核配置的性能是以前 Cortex-R 处理器的两倍,非常适合开发安全关键产品,最常用于大批量深度嵌入式 SoC 应用
cotex-a5可定制的处理器,可在低功耗配置中实现高性能。可扩展的多功能性,适用于对成本敏感的低功耗应用;可配置选项为最小的设备提供丰富的 OS 支持;完整的 Armv7-A 体系结构,为 Cortex-A9 的三分之一面积和功耗
cotex-a7适用于 32 位的最小,最低功耗处理器;Armv7-A 扩展提供增强的硬件虚拟化;与前代产品相比,内存性能提高了 20%;支持 32 位,丰富的操作系统,包括 Linux
cotex-a8适用于复杂操作系统及用户应用的应用处理器,支持智能能源管理(IEM,IntelligentEnergyManger)技术的 ARMArtisan 库以及先进的泄漏控制技术
cotex-a9针对性能和功耗进行了优化的多核处理器;适用于低功耗,成本敏感的 32 位器件;可用作单核或最多四个处理器的集群;在多种工艺技术中建立了良好的基础
ARM fpu-type描述
disable-
fpv-sp-d16-
fpv5-d16-
fvpv3-d16-
fpv4-sp-d16-
fpv5-sp-d16-

ARM 架构的处理器有高中低档之分,corext-m 系列是最低端处理器,cortex-r 系列是中端处理器,cortex-a 系列是高端处理器。不同等级的处理硬件特性有所不同,比如 M 系列普遍没有 MMU,最低端的 M0 甚至没有 MPU 和 FPU,下面介绍构建不同等级的 CPU 类型的 SDK 配置注意事项。

(1)构建 m0,m0plus,m1,m23 系列 CPU 的 SDK 时:

这类 CPU 没有 FPU,MPU,MMU,CACHE,所以在体系结构配置中,必须非选中这 4 项配置,否则将构建失败。

(2)构建 m3,m4,m7,m33 系列,以及 r4,r5 系列 CPU 的 SDK 时:

这类 CPU 具有 FPU,MPU 和 CACHE,但没有 MMU。所以在体系结构配置中,必须非选中 MMU 这项配置,否则将构建失败。其它 3 项配置可以根据需要选中或非选中。

(3)构建 a5,a7,a8,a9 系列 CPU 的 SDK 时:

这类 CPU 具有 FPU,MMU 和 CACHE,但没有 MPU。所以在体系结构配置中,必须非选中 MPU 这项配置,否则将构建失败。其它 3 项配置可以根据需要选中或非选中。

CSKY 系列

csky_msrtos_toolchain描述
ck807面向中高端嵌入式应用的高能效 CPU 核产品;精简指令架构,32 位数据,16/32 位可变长指令;单位性能 2.0DMIPS/MHz;8 级双发射超标量流水线;指令乱序发射、乱序执行和按序退休
CSKY fpu-type描述
soft-float软浮点
Float_ABI_Type描述
softfp编译器把浮点运算转换成浮点运算的函数调用和库函数调用,无 FPU 的指令调用,也无浮点寄存器的参数传递。浮点参数的传递通过 cpu 寄存器或者堆栈完成
hard编译器将代码直接编译成发射给硬件浮点协处理器(浮点运算单元 FPU)去执行。FPU 通常有一套额外的寄存器来完成浮点参数传递和运算。使用实际的硬件浮点运算单元 FPU 当然会带来性能的提升。因为往往一个浮点的函数调用需要几个或者几十个时钟周期

组件选择

组件名称默认选择协议说明
MS-RTOS必选CommercialMS-RTOS 内核
lwip_net必选BSD-2-ClauselwIP 网络协议库
libmsdriverBSD-3-Clause基于 MS-RTOS 的 IOT-PI 设备驱动
esp_at_net-MITESP8266/32 无线网络库
fatfs-BSD-2-ClauseFAT 文件系统
littlefs-BSD-3-ClauseARM 开发的小型文件系统
littlevgl-MITLittlevGL 纯 C 开源 GUI 可以搭配 NXP Gui-Guider 图形设计界面进行快速开发
st_touchgfx-SLA0044ST TouchGFX GUI 库
st_usb_stack-SLA0044ST USB 主从设备协议栈
nxp_emwin-NXPNXP emWin GUI 库
libcmsis-Apache-2.0ARMCortex 微控制器软件接口标准 5,独立于供应商的 Cortex-M 处理器系列硬件抽象层,便于驱动开发适配
u8g2-BSD-2-Clause嵌入式设备的单色图形库
cjson-MITANSIC 编写的轻量化 JSON 解析器
mbedtls-Apache-2.0Mbed TLS 数据加密库
libsddc-Apache-2.0EdgerOS 智能设备发现和控制协议

MS-RTOS 内核参数配置

体系结构配置(必选)

配置项默认值设置范围描述
CPU 异常处理堆栈大小1024-用于 CPU 进行异常处理
用户态线程内核栈大小1536-----
内核态线程中断栈大小512-----
FPU 硬件浮点单元使能-若 CPU 支持该功能,最好使能以便最大化性能
MPU 内存保护单元使能-内存安全保护功能,隔离应用层,系统层,拒绝越级访问内存操作
MMU 内存管理单元使能--虚拟内存管理单元,嵌入式 CPU 很少具备该功能
Trustzone 使能--仅 Cortex-M33 支持该功能
CACHE 使能--使能 CPU Cache 缓冲
CPU 核心名CPU_Type-为自动配置项,不要随意手动更改
关闭中断时间测量使能--用于检测关闭中断所使用的时间
Trustzone 安全环境上下文栈大小2048-用于进入 Trustzone 时保存上下文环境
Trustzone 安全环境异常栈大小1024-----
C-SKY 处理器是否带有 ldex 指令------
RISC-V 处理器是否使用 Machine Level-RISC-V 处理器特权级 Machine ,用于运行 Bootloader 和其他固件,该特权级为必须实现层级
RISC-V 处理器 FPU 类型单精度单精度、双精度、四精度RISC-V CPU 浮点运算 FPU 类型

内核配置(必选)

配置项默认值设置范围描述
内核 tick 频率1000 Hz-默认设置为 1 ms,具体可以根据实时性来更改配置
电源管理使能-------
Tick-less 模式使能--低功耗模式,自动调整 tick 频率,减少 tick 中断,空闲时进入睡眠,降低功耗
内核 shell、命令使能-MS-RTOS 内核部分的 shell 命令,通过串口交互来协助开发和调试
最大线程数64-默认 64 个线程基本满足绝大部分场景,具体可根据需要进行修改
最大计数信号量数128-程序可以创建的计数信号量数目
最大互斥量数64-程序可以创建的互斥信号量数目
最大条件变量数32------
最大消息队列数32------
最大事件标志组数16------
最大定长内存分区数6------
最大读写锁数16------
最低线程优先级64-线程的优先层级可根据实际应用需要进行减少或扩充
空闲线程堆栈大小512-用于空闲进程使用
最大内核软件定时器数4-在内核中可以创建的软件定时器数目
内核软件定时器线程堆栈大小1024------
内核软件定时器线程优先级2------
内核软件定时器线程时间片0-默认内核软件定时器不使用时间片
内核软件定时器线程选项REENT_ENNone、REENT_EN、FPU_EN-----
最大进程数5-所能运行的最大进程数目
进程崩溃时是否重启机器--默认关闭,在开发阶段重启不太利于调试
最大进程内存区域数3------
进程内存分配单位大小4 KB4、8、16、32、64、128、256 KB进程对内存分配时的最小分配单位大小
最大进程软件定时器数4------
进程软件定时器线程堆栈大小1024-----
进程软件定时器线程优先级3-需要低于内核软件定时器的优先级
进程软件定时器线程时间片0------
进程软件定时器线程选项REENT_ENNone、REENT_EN、FPU_EN创建线程时可根据需要进行复选
最大进程信号数32------
最大进程通知数6------
中断管理使能-------
中断服务程序 ISR 管理使能-------
中断抢占使能-软中断可以被硬中断抢占,硬中断可以被更高优先级的中断抢占
最大中断号64-默认为 64 个中断,根据实际情况进行修改
最大中断底半部数10-优先级偏低的,可以被打断的中断处理数目,根据开发需要定义
中断底半部线程堆栈大小1024-根据具体底半部处理
局部变量使用情况而定
中断底半部线程优先级0-作为中断,应该放置到优先级为 0,以便程序优先去调度处理
中断底半部线程时间片0-默认不使用时间片调度影响实时性
中断底半部线程选项REENT_ENNone、 REENT_EN、FPU_EN可多选,线程使能 C 库可重入结构,线程使能 FPU 使用
内核分析子系统使能------
Segger RTT view 缓冲区索引0------
内核行为跟踪使能-------
内核代码覆盖率分析使能-------
内核代码覆盖率分析缓冲区大小256------
内核堆使用检查使能-方便用户查询内存堆使用情况,在 shell 中可以直接使用命令进行查看
内存堆算法OriginalTLSF、OriginalTLSF 是一个动态内存算法,时间复杂度 O(1),在碎片问题上表现良好

IO 子系统使能(默认勾选)

配置项默认值可选范围描述
最大文件名长度64----------
最大文件路径长度128----------
最大打开文件数32----------
最大文件描述符32----------
IO 子系统 shell 命令使能-----IO 部分 shell 命令,利于查看 IO 状况
IO 子系统动态内存分配使能------默认使用静态内存分配,根据需求设置
最大 select 文件描述符数16-----select 函数所能同时选择的文件描述符个数
MS-FLASHFS 使能-----MS-RTOS 自主研发的针对 MCU 内部 FLASH 的掉电安全文件系统,主要用于存放 App 镜像和启动参数文件,支持 App XIP(片内执行)
MS-FLASHFS 最大扇区数32-----划分的 flash 扇区数目
MS-FLASHFS 最大文件数32-----flash 上所支持的文件数目
MS-FLASHFS 每扇区最大单元数16-----每个扇区所分割的单元数目
IO JOB 功能使能-----IO 工作一般用于检查 SD 是否插拨、网线是否插拨、传感器数据采集等
IO JOB 线程
堆栈大小
1024----------
IO JOB 线程优先级6----------
IO JOB 线程时间片0----------
IO JOB 线程选项REENT_ENNone、REENT_EN、FPU_EN-----
IO JOB 最大缓存中断 API 消息数4----------

驱动配置(默认勾选)

配置项默认设置范围描述
管道驱动-----pipe 驱动使能
空设备驱动-----作为一个黑洞设备,用于丢弃不需要的输出流
共享内存
设备驱动
-----用于不同进程间内存共享
Trace 设备驱动-----用于追踪记录进程,查找问题
RTC 驱动-----实时时钟驱动,默认使能,一个标配驱动
伪终端驱动-----tty 驱动,用于 ssh/telnet 等远程协议打开的命令行界面
时钟驱动----------
DMA 驱动----------
DMA 工作池大小8----------
硬件看门狗设备驱动使能-----打开硬件看门狗设备的 App 都需要周期性及时喂狗,否则 CPU 重启,主要用于提高系统的整体可靠性
硬件看门狗线程堆栈大小512----------
硬件看门狗线程优先级2-----优先级足够高以将程序及时复位
硬件看门狗线程时间片0-----默认不使用时间片调度,确保实时性
健康监控设备驱动-----打开健康监控设备的 App 都需要周期性及时喂狗,否则调用 BSP 自定义的异常处理逻辑(如重启应用),主要用于在 App 卡死时能及时重启 App
健康监控线程堆栈大小512----------
健康监控线程优先级2----------
健康监控线程时间片0----------
健康监控默认截止时间(单位:秒)10-----App 及时喂狗的截止时间间隔
健康监控异常时默认处理模式记录到日志记录到日志、重启应用、杀死应用、重启机器、关机当出现异常时的处理方式

libc 使能(默认勾选)

配置项默认值设置范围描述
libc 使用全局锁使能----------

C++ 使能(默认勾选)

POSIX 子系统使能(默认勾选)

配置项默认值/字节设置范围描述
mkfifo 函数创建的 fifo 大小128-----进程间通信 IPC 通道的缓冲大小
最大 posix 消息队列数0-----默认不使用 posix 消息队列,使用 MS-RTOS 的消息队列,可根据需求配置
posix 消息队列缺省最大消息数16-----创建消息队列时默认的最大消息数量
posix 消息队列缺省消息大小64-----创建消息队列时默认每个消息大小
posix 对象名字最大长度64-----创建 posix 对象时所允许的名字长度

网络子系统使能(默认勾选)

配置项默认值设置范围描述
网络子系统 shell 命令使能-----网络相关 shell 命令加入,默认使能

SHELL 使能(默认勾选)

配置项默认值设置范围描述
Shell 输入缓冲区大小128-----shell 命令行所能接收的命令长度
Shell 输出缓冲区大小128-----shell 命令行输出时所使用的缓冲区大小,分配过大影响空间,过小影响性能
最大 shell 命令参数个数10-----使用 shell 命令时最大传入的参数个数
xmodem 命令使能-----uart 传输协议 xmodem 使用 shell 命令进行传输使能
xmodem uart 波特率1152001200、2400、4800、9600、19200、38400、57600、115200uart 传输速率
xmodem uart 校验位Noneeven、odd、space、mark数据校验方式,包括基本的奇偶校验,固定 0(space)/1(mark)校验位
xmodem uart 数据位85 - 8每次传输的有效数据位,影响传输的效率,一般默认为 8 位

差分升级库使能(默认勾选)

配置项默认值设置范围描述
ms_patch 函数内部动态分配缓冲区大小1024 Byte-----差分升级每次传输的包的大小

App 启动器使能(默认勾选)

配置项默认值设置范围描述
App 镜像数字签名算法NoneRSA-2048、RSA-3072、ED25519、ECDSAApp 镜像数字签名有效阻止了未经签名或被恶意篡改或伪造的 App 在目标系统(如智能电力设备)上运行,有效保证了目标系统的安全性
文档内容是否对您有所帮助?
有帮助
没帮助