首页 > 其他分享 >FreeRTOS 原理 --- 最少剩余可用栈 与 栈溢出检查

FreeRTOS 原理 --- 最少剩余可用栈 与 栈溢出检查

时间:2023-11-16 23:23:04浏览次数:45  
标签:FreeRTOS pucEndOfStack uxReturn uint8 --- uxTaskGetStackHighWaterMark pxTCB UBas

函数 uxTaskGetStackHighWaterMark() 可用于获取任务的最少剩余可用栈

#if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )

    UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask )
    {
    TCB_t *pxTCB;
    uint8_t *pucEndOfStack;
    UBaseType_t uxReturn;

        pxTCB = prvGetTCBFromHandle( xTask );

        #if portSTACK_GROWTH < 0
        {
            pucEndOfStack = ( uint8_t * ) pxTCB->pxStack;
        }
        #else
        {
            pucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack;
        }
        #endif

        uxReturn = ( UBaseType_t ) prvTaskCheckFreeStackSpace( pucEndOfStack );

        return uxReturn;
    }

#endif /* INCLUDE_uxTaskGetStackHighWaterMark */

 任务创建时,把任务栈的值都初始化为 tskSTACK_FILL_BYTE

    /* Avoid dependency on memset() if it is not required. */
    #if( tskSET_NEW_STACKS_TO_KNOWN_VALUE == 1 )
    {
        /* Fill the stack with a known value to assist debugging. */
        ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) ulStackDepth * sizeof( StackType_t ) );
    }
    #endif /* tskSET_NEW_STACKS_TO_KNOWN_VALUE */

 

标签:FreeRTOS,pucEndOfStack,uxReturn,uint8,---,uxTaskGetStackHighWaterMark,pxTCB,UBas
From: https://www.cnblogs.com/god-of-death/p/17837526.html

相关文章

  • Netty-基础篇
    核心组件EventLoopGroup概念:由一个或多个EventLoop组成的组,用于处理所有的Channel的I/O操作,可以将其看作是一个线程池。1.包含多个EventLoop。2.EventLoopGroup将为每个新创建的Channel分配一个EventLoop。在每个Channel的整个生命周期内,所有的操作都将由相同的Thread执行。3......
  • FreeRTOS系统中CPU使用率统计方法分析
    基本概念操作系统中CPU使用率是在软件架构设计中必须要考虑的一个重要性能指标。它直接影响到程序的执行时间以及优先级更高的任务能否实时响应的问题。而CPU使用率也不能过低,避免资源浪费。统计方法FreeRTOS操作系统是使用任务的累计运行时间来统计每一个任务自系统开始运行到......
  • (链表)14-链表的奇偶重排
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*publicListNode(intval){8*this.val=val;9*}10*}11*/12publicclassSolution{13/**14*代码中的类名......
  • 区间树上查找所有与给定区间相交的区间-算法复杂度正确性证明
    区间树是在平衡树上维护的数据结构,按照左端点大小排序。详见《算法导论》。算法设计思路红黑树的拓展在红黑树上维护结点属性\(min,max\):\(min\)表示该结点及其所有后代结点中的区间低端的最小值。\(max\)表示该结点及其所有后代结点中的区间高端的最大值。在插入时,对结点......
  • All-in-One(六):旁路网关
    简介  用了一阵子AIO,突然发现没有24小时开着的需求,所以Openwrt从原本的主路由转为旁路网关。配置主路由  原本变为中继路由的硬路由现在转变为主路由,没有什么需要配置的,恢复PPPOE模式即可。旁路网关  我只需要指定设备接入,所以如图配置:注意  如果网段......
  • ClouderaManager中Event Server报java.io.IOException: No sub-file with id .fnm fou
    晚上9点30:03.266分 ERROR EventCatcherService ErrorstartingEventServerjava.io.IOException:Nosub-filewithid.fnmfound(fileName=_1f9.cfsfiles:[f474fa52c5c7e5cfdc49"resourcemanager(wyx-cdh-,xp,_log_event,_eventwyx-cdh-hadoop01......
  • WPF --- TextBox的输入校验
    引言在WPF应用程序开发中,数据校验是确保用户输入数据的正确性和完整性的重要一环。之前在做一些参数配置功能时,最是头疼各种参数校验,查阅一些资料后,我总结了数据校验方式有两种:ValidationRuleIDataErrorInfo接下来分别介绍这两种校验方式。ValidationRuleValidationRule......
  • 无涯教程-Dart - Optional Parameters with Default Values函数
    默认情况下,还可以为函数参数分配值,但是,此类参数也可以是显式传递的值。语法function_name(param1,{param2=default_value}){//......}示例voidmain(){test_param(123);}voidtest_param(n1,{s1:12}){print(n1);print(s1);}它应该返回......
  • esp32笔记[10]-rust驱动ssd1306显示屏
    摘要使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片.平台信息esp32(模组:ESP32-WROOM-32D)(xtensalx6)(xtensa-esp32-none-elf)rust超链接esp32笔记[7]-使用rust+zig开发入门原理简介rust的include_bytes!宏Rust的include_bytes!宏可以用......
  • openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性
    openGauss学习笔记-125openGauss数据库管理-设置账本数据库-校验账本数据一致性125.1前提条件数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。125.2背景信息账本数据库校验功能目前提供两种校验接口,分别为:ledger......