MS-RTOS 内核定制

更新时间:
2024-07-25
下载文档

MS-RTOS 内核定制

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

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

基本属性配置

  1. 工具链配置

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 频率1000Hz-默认设置为 1ms,具体可以
根据实时性来更改配置
电源管理使能-------
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------
进程内存分配
单位大小
4KB4\8\16\
32\64\128\
256KB
进程对内存分配时的
最小分配单位大小
最大进程软件
定时器数
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 函数内部动态分配缓冲区大小1024Byte-----差分升级每次传输的包的大小

App 启动器使能

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