首页 > 其他分享 >RTX5 | 配置文件RTX_Config.h讲解

RTX5 | 配置文件RTX_Config.h讲解

时间:2025-01-21 16:27:53浏览次数:3  
标签:Object 配置文件 串口 RTX5 线程 内存 Memory Configuration Config

RTX_Congig.h包含以下内容:

System Configuration(非常重要)
Thread Configuration(非常重要)
Timer Configuration(简单)
Event Flags Configuration(简单)
Mutex Configuration(简单)
Semaphore Configuration(简单)
Memory Pool Configuration(简单)
Event Record Configuration(跟RTX5内核没关系,调试工具)

1、System Configuration配置:

此项用于配置线程内存池,滴答定时器频率,中断回调函数ISR事件buffer,时间片轮转调度;
ISR FIFO Queue:针对这个功能我是这样测试的,在串口中断回调函数里打了一个断点,让程序卡死在串口中断回调函数里。接着,继续通过串口助手往单片机发送字符,再一次触发串口中断回调函数。(相当于触发了两次串口中断,但CPU卡在第一次串口中断上,导致第二次串口中断无法正常执行)。

2、Thread Configuration配置:

2.1、Object specific Memory allocation为每一个RTX5的对象创建一个专用的固定大小的内存块,可以有效防止内存碎片化,并简化内存不足情况的处理。并且,在专用的内存里创建对象与删除对象的时间都是完全确定的。
2.2、默认的配置下,不勾选Object Specific Memory allocation。此时,当我们创建RTX5的对象时,会在全局内存池里申请一段内存。有线程对象,有消息队列对象,有信号量对象等等,按申请内存的时间顺序一个个放入Global Memory Pool(全局内存池)里。这种情况下,内存肯定会有一点乱。
2.3、Object Memory usage counters(对象内存使用计数器)总得来说,就是在系统运行的过程中,计算线程,消息队列等对象的生存情况。上面英文的最后一句话很重要,中文意思:对于需要安全性认真的应用程序来说,这个功能是必需的。勾选这个选项后,通过DEBUG模式下的RTX RTOS调试窗口可以看到Object Memory Usage Counter选项。
2.4、Stack overrun checking (堆栈溢出检查):一定要勾选,堆栈真的很容易溢出;
2.5、Stack usage watermark(堆栈使用水印)使用水印模式初始化线程堆栈以分析堆栈使用情况。 启用此选项会显着增加线程创建的执行时间。我觉得没必要勾选这一项,在DEBUG模式下,使用Keil的RTX RTOS也能看到堆栈的使用情况;
2.6、Processor mode for Thread execution(线程执行的处理器模式):必须使用privileged mode,不然功能可能会受到限制:

3、软件定时器配置:

代码中没用到这里不做解释

4、其他RTX5对象配置:

剩下的消息队列设置,互斥量设置,信号量设置,内存池设置,消息队列设置,都只有一个Object specific Memory allocation了。跟线程的Object specific Memory allocation一样,这里都不做配置

5、工作中踩过的坑:

5.1、STM32H743上运行RTX5系统,必须将内存池分配在128KB的DTCM(紧密耦合内存)上,因为CPU在DTCM内存读写数据的速度等于CPU的主频(480M),其他的SRAM内存读写数据的速度仅仅只有200M(当然,配置Cache后的读写速度也能提升至480M,但是操作比较麻烦)。在Keil上很方便将默认内存设置为128KB的DTCM(如下图所示),使用STM32CubeIDE的话,默认内存一开始就是128KB的DTCM了(就是不用管的意思)。
5.2、所有配置中的Object Specific Memory allocation都不需要配置,因为咱们用的都是Global Memory Pool(全局内存池);
5.3、Thread TrustZone Module Identifier(线程信任区域模块标识符),因为Armv8-M/v8.1-M架构的单片机才有,特定的Cortex-M内核才有,STM32F407与STM32H743与STM32F103都没有这个功能。。

标签:Object,配置文件,串口,RTX5,线程,内存,Memory,Configuration,Config
From: https://blog.csdn.net/Zhangdfhvxdul/article/details/145285832

相关文章

  • Ubuntu 22.04上编译安装C++ libconfig库
    一、前言libconfig是一个C/C++配置文件解析库,支持读取和写入配置文件。它使用了一种简单易懂的语法,非常适合用于各种项目的配置管理。本文将详细介绍如何在Ubuntu22.04上编译和安装libconfig库。二、环境准备在开始编译安装libconfig之前,需要确保系统已经安装了必要的开发工具......
  • 一文告诉你Linux下如何用C语言实现ini配置文件的解析和保存
    嵌入式项目开发中,会有很多功能模块需要频繁修改参数,Linux下我们可以通过ini格式的文件保存配置信息。本文通过开源库iniparser,详细讲解如何用C语言实现ini文件的参数解析和配置保存。本文代码实例获取方式见文末。一、ini文件1什么是ini文件INI(InitializationFile)文件是......
  • 【CAS】CAS 接入配置中心SpringCloud Config(三)
    环境准备准备一个SpringCloud Config配置中心,参考:【SpringCloud】SpringCloudConfig配置中心(二十)-H__D-博客园步骤1、启动Config服务,并在Config服务器中,新增cas-server.properties文件文件内容,我就修改了端口server.context-path=/casserver.port=8442......
  • Spring配置文件
    1.配置文件    配置文件:    1.掌握yml和Properties的不同写法    2.掌握俩种格式的转化    3.掌握从配置文件中,读取配置信息即可    1.1概念        计算机上有数以千计的配置⽂件,我们使⽤的绝⼤多数软件,⽐......
  • 运维系列&安卓系列【亲测有效】:Your build is currently configured to use incompati
    YourbuildiscurrentlyconfiguredtouseincompatibleJava21.0.3andGradle5.4.1build报错:YourbuildiscurrentlyconfiguredtouseincompatibleJava21.0.3andGradle5.4.1Cannot...报错显示报错原因成功解决方案尝试过未成功的方案buil......
  • 常见OA系统配置文件
    瑞友天翼默认的安装目录是在C:\ProgramFiles(x86)\RealFriend\RapServer\WebRoot如果不在默认安装目录可以利用SQL注入通过sql-shell获取数据库的安装目录,从而推导出网站根目录。配置文件默认路径C:\ProgramFiles(x86)\RealFriend\RapServer\data\Config\CasDbCnn.dat......
  • 【详解】Redis配置文件详解
    目录Redis配置文件详解1.基本配置1.1绑定地址1.2端口号1.3守护进程模式1.4日志级别1.5日志文件路径2.数据持久化2.1RDB快照2.2AOF日志3.内存管理3.1最大内存限制3.2淘汰策略4.安全配置4.1密码认证4.2访问控制5.高级配置5.1集群模式5.2主......
  • .NET 项目如何管理资源及配置文件
    .NET项目如何管理资源及配置文件_哔哩哔哩.NET项目的资源及配置文件(视频中的思维导图)本文为以上视频的笔记......
  • [Babel] Intro Babel - 02 Configure file
    配置文件配置文件格式配置文件选项配置文件的格式在babel中,配置文件本身又可以分为两种:项目范围的配置文件文件相关配置文件项目范围配置文件顾名思义,就是该配置文件针对整个项目生效的一个配置,这种类型的配置文件一般放在项目根目录下面,babel对项目范围级别的配置......
  • Spring Book 配置文件 / 日志
    目录SpringBook配置文件一.配置文件1.配置文件的作用2.配置文件的格式二. .properties配置文件1..properties配置文件说明2.读取配置文件三.yml配置文件1..yml配置文件说明2.使⽤yml连接数据库 3.yml配置不同数据类型及null 4.yml配置读取5.主要事项......