文章目录

  • 一、前言
  • 二、Thread Configuration
    • 2.1、Object specific Memory allocation(对象特定的内存分配)
      • 2.1.1、Number of user Threads(用户线程的数量)
      • 2.1.2、Number of user Threads with default Stack size(使用默认堆栈大小的用户线程的数量)
      • 2.1.3、Total Stack size[bytes] for user Threads with user-provided Stack size(提供给用户线程的总堆栈大小)
    • 2.2、Default Thread Stack size(线程的默认堆栈大小)
    • 2.3、Idle Thread Stack size(空闲线程的堆栈大小)
    • 2.4、Idle Thread TrustZone Module Identifier(空闲线程信任区域模块标识符)
    • 2.5、Stack overrun checking (堆栈溢出检查)
    • 2.6、Stack usage watermark(堆栈使用水印)
    • 2.7、Processor mode for Thread execution(线程执行的处理器模式)

一、前言


上一次学习System Configuration之后,接着继续学习RTX_Config.h剩下的内容。

RTX5 | 配置文件RTX_Config.h(一)

二、Thread Configuration



2.1、Object specific Memory allocation(对象特定的内存分配)


Object specific Memory allocation为每一个RTX5的对象创建一个专用的固定大小的内存块,可以有效防止内存碎片化,并简化内存不足情况的处理。并且,在专用的内存里创建对象与删除对象的时间都是完全确定的。

默认的配置下,不勾选Object Specific Memory allocation。此时,当我们创建RTX5的对象时,会在全局内存池里申请一段内存。有线程对象,有消息队列对象,有信号量对象等等,按申请内存的时间顺序一个个放入Global Memory Pool(全局内存池)里。这种情况下,内存肯定会有一点乱。

2.1.1、Number of user Threads(用户线程的数量)

定义同一时间上最多可以运行多少个用户线程。实际测试一下,当前我的程序创建了4个线程。接着,我将Number of user Thread设置3,看看效果如何。


2.1.2、Number of user Threads with default Stack size(使用默认堆栈大小的用户线程的数量)

系统的默认是3072Byte。不建议使用默认的堆栈大小,每一个线程都应该有合适的内存大小。

2.1.3、Total Stack size[bytes] for user Threads with user-provided Stack size(提供给用户线程的总堆栈大小)

使用默认值0,应该是不设置的意思。(毕竟,我一直使用默认值0也能顺利创建多个线程)

2.2、Default Thread Stack size(线程的默认堆栈大小)

创建线程时不指定堆栈大小,就会使用Default Thread Stack Size的值来创建线程。

2.3、Idle Thread Stack size(空闲线程的堆栈大小)

看空闲线程的设计需要多大的内存,默认的空闲线程只需256KB。

2.4、Idle Thread TrustZone Module Identifier(空闲线程信任区域模块标识符)

Armv8-M/v8.1-M架构的单片机才有。

2.5、Stack overrun checking (堆栈溢出检查)

一定要勾选,堆栈真的很容易溢出。

2.6、Stack usage watermark(堆栈使用水印)

使用水印模式初始化线程堆栈以分析堆栈使用情况。 启用此选项会显着增加线程创建的执行时间。我觉得没必要勾选这一项,在DEBUG模式下,使用Keil的RTX RTOS也能看到堆栈的使用情况。

2.7、Processor mode for Thread execution(线程执行的处理器模式)

必须使用privileged mode,不然功能可能会受到限制:

RTX5 | 配置文件RTX_Config.h(二)相关推荐

  1. RTX5 | 配置文件RTX_Config.h(三)

    文章目录 一.前言 二.Timer Configuration 2.1.Object specific Memory allocation(对象特定的内存分配) 2.2.Timer Thread Pr ...

  2. RTX5 | 配置文件RTX_Config.h(一)

    文章目录 一.前言 二.System Configuration(系统设置) 2.1.Global Dynamic memory size(内存池的大小) 2.2.Kernel Tick Freque ...

  3. CMSIS-RTOS2 入门教程 [2]——RTX_Config.h配置

    RTX_Config.h配置 配置RTX v5 系统配置 时钟节拍 与 时间片 循环调度算法 ISR FIFO队列 对象内存使用计数器 线程配置 配置线程数和堆栈空间 栈溢出检查 堆栈使用水印 线程执 ...

  4. FreeRTOS系统配置文件FreeRTOSConfig.h

    实际使用FreeRTOS的时候,我们时常需要根据自己需求来配置FreeRTOS,而且不同架构的MCU在使用的时候配置也不同,FreeRTOS的系统配置文件FreeRTOSConfig.h可以完成Fre ...

  5. lwip【4】 lwIP配置文件opt.h和lwipopts.h初步分析之一

    在这里先说一下这两个配置lwip协议栈文件opt.h和lwipopts.h的关系:          opt.h是lwip"出厂"时原装的配置文件,它的作者是瑞士科学院的Adam等 ...

  6. SpringBoot 配置文件 application.properties(二)

    mvc spring.mvc.async.request-timeout 设定async请求的超时时间,以毫秒为单位,如果没有设置的话,以具体实现的超时时间为准,比如tomcat的servlet3的话 ...

  7. Fabric 各种配置文件梳理(二)

    1.docker-compose网络服务配置文件 Fabric使用了容器技术,所以需要一个简化的方式来集中化管理这些容器节点.我们使用docker-compose工具来实现一步到位的节点容器管理,而且 ...

  8. nginx配置文件讲解(二)

    原文:http://www.blogjava.net/xiaomage234/archive/2011/09/08/358247.html 配置环境: 三台CentOS5.3,一台做nginx代理,2 ...

  9. redis配置文件样例(二)

    原文:https://raw.githubusercontent.com/antirez/redis/2.8/redis.conf 主从备份.使用slaveof创建一个Redis实例作为另一个Redi ...

最新文章

  1. java.lang.IllegalArgumentException: No view found for id 0x7f07005f (xx) for for fragment xxFragment
  2. netcore 图片 文件大小_NetCore 3.0文件上传和大文件上传的限制详解
  3. 【计算几何】【分类讨论】Gym - 101173C - Convex Contour
  4. Unity--------------------万向锁的概念
  5. python读取pdf表格_【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比...
  6. 生产者消费者问题Java三种实现
  7. boost::gil模块数字扩展中的 resample_pixels() 示例
  8. 销户c语言,c – 如何在注销时优雅地退出QApplication?
  9. Gitlab 从 12.1 版本开始将不再支持 MySQL !!!
  10. python圣经是哪本_我的圣经:17年前的那本《Python 2.1 宝典》
  11. 使用福禄克CFP光纤测试仪进行Tier 1和Tier 2光纤测试
  12. 将hustoj 数据从Ubuntu 14.04 成功迁移到 ubuntu 16.04
  13. Kettle PDI工具连接Mysql时报Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found, make sure the ‘MySQL
  14. matlab自动运行,自动运行matlab的方法步骤
  15. 前端ui组件(1):日程排班—11个优秀JavaScript 日历插件
  16. 网络摄像机·监控摄像机 镜头驱动芯片 MS41909
  17. Datadog——Monitor as a service(笔记)
  18. IDC数据中心机房气体灭火系统知识
  19. flashback使用
  20. WebRtc视频特效

热门文章

  1. [Selenium] 操作新弹出窗口之验证标题和内容
  2. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its 错误解决办法
  3. Essential Grouping高性能的数据分组引擎介绍及下载
  4. Dos批处理检测NetFramework,并自动安装后运行指定程序(转)
  5. jqGrid细节备注—jqGrid中自定义格式,URL格式
  6. web developer tips (78):使用文档大纲导航
  7. vm8中装了redhat9 在安装vmwaretools的时候老是出现gcc位置错误
  8. 我们就要想办法的s9t9
  9. 《XIM 企业即时通讯软件》
  10. 2005年最具钱途的人才:软件研发炙手可热