PX5 RTOS:加强、简化、整合嵌入式物联网开发
PX5 www.px5rtos.com
PX5 是一款工业级超小型第5代RTOS,适用于存储受限的设备。它属于业界微型的RTOS,在典型的32位微控制器上只需要不到1KB Flash和1KB RAM。
PX5有着极高的性能和确定性,在大多数32位处理器上下文切换和API调用的速度都是亚微秒级,能够满足任何实时环境的要求。
PX5 RTOS有着业界优越的安全性,其C代码经过严格的100%语句和分支覆盖测试。PX5还包含独有的指针/数据验证(PDV)技术,提供前所未有的运行时验证。
PX5 RTOS非常精简,其API提供对POSIX pthreads标准的原生支持。PX5应用可以移植到任何兼容POSIX pthreads的系统上,例如Linux和其他RTOS。PX5还提供针对深度嵌入式实时系统的pthreads可选扩展。PX5的数据封装技术帮助编译器产生最优的代码,并同时降低命名冲突。
PX5 RTOS几乎全部用ANSI C编写(99%),这让处理器移植变得非常简单。PX5支持常见的嵌入式MCU和MPU架构,包括ARM Cortex-M、Cortex-R、Cortex-A和RISC-V。PX5支持常用的嵌入式开发工具,例如IAR、ARM和GCC。
PX5 RTOS产品包括全部源代码,包括结合层(Binding Layer)。源代码的架构易于理解,严格的测试保证其质量。
PX5架构
PX5 RTOS能够从多方面助力嵌入式开发:
1. 1. 加快产品上市的速度
2. 2. 增强产品质量
3. 3. 提高产品安全性
4. 4. 业界标准的pthreads API能够提高应用程序的可移植性和代码的可重用性
5. 5. 对pthreads API的支持帮助降低工程师的培训时间
调研表明,嵌入式Linux占嵌入式开发的70%。嵌入式Linux是基于POSIX pthreads API的,这意味着pthreads是嵌入式系统业界最著名和最常用的API。业界有许多著名的RTOS使用私有API,培养开发者需要较长的培训时间,这让这些RTOS难以普及。私有的API也意味着应用代码难以移植。另外,许多设备厂商同时销售基于Linux和RTOS的设备,目标场景和定价各不相同。使用pthreads API的一款RTOS能够解决上面这些问题,降低培训时间,并让应用程序代码能在不同平台上运行。
PX5的PDV软件技术帮助检测重要数据是否损坏,例如函数指针、系统内部对象和分配的内存区域等。PDV在每个重要的数据元素进行初始化时,会将指针/数据值、存储验证码的位置和一个独特的识别码提供给px5_pthread_start函数,进而生成一个验证码(指纹)。使用数据时系统会运用这一验证码进行验证,如果检测到数据损坏,PX5会通过它的中心错误处理机制告知应用程序。PDV帮助及早检测到数据损坏,大幅降低不相关的代码执行的可能性(由损坏的函数指针值导致)。
PDV可以保护:
1. RTOS中所有函数指针
2. RTOS的全局数据
3. RTOS的内部系统数据:线程、队列等
4. RTOS内部函数的返回地址
5. 内存管理使用的元数据指针
6. 应用程序通过API指定PDV保护的数据
PDV的开销取决于所用的编译器,一般开销都比较小。默认的验证码生成过程在典型的Arm Cortex-M架构上只需要6个指令左右。验证数据时需要先计算数据的验证码,然后和之前存储的验证码进行比较。
PX5 RTOS的另一项软件安全功能是运行时栈检查。只要在编译时使用PX5_STACK_CHECKING_ENABLE选项,PX5在执行时就会检查每个线程的栈。应用程序也可以通过调用px5_pthread_stack_check API进行栈检查。
如果发现栈损坏或是溢出,检查会触发一个严重错误,并调用PX5的中心错误处理机制进行处理。如果检测到栈有溢出的风险,检查会触发一个警告。