freeRTOS 内存使用以及任务栈的使用情况查看

1、RTOS内存使用总的情况的查看

heap1中的关键变量,包括ucHeap,和xNextFreeByte。 前者就是rtos系统堆,后者标识了当前内存的使用量

他们的地址一方面可以直接在keil在线调试时获得,但是有时在线调试不能获得他们的地址(没有debug到这些变量时,可能获取不到),可以从map文件中查找


freeRTOS 内存使用以及任务栈的使用情况查看_第1张图片


从keil中查看xNextFreeByte的值即可了解系统已经使用了多少内存。如下图:

freeRTOS 内存使用以及任务栈的使用情况查看_第2张图片


2、task 栈的使用情况的查看

任务TCB的第一个参数就是task stack指针的当前位置,也就是说task刚建立时的stack位置,大体就是栈的起始位置

freeRTOS 内存使用以及任务栈的使用情况查看_第3张图片


task的handle地址即TCB地址

freeRTOS 内存使用以及任务栈的使用情况查看_第4张图片


综上即可查看栈的使用情况:

如下图,handle地址(即TCB的地址),往下是TCB的内容,其中头四个字节是当前任务栈的指针。

TCB往上就是当前任务的栈空间。站的数据中A5大体可以表示这部分内存没有被使用过,非A5的部分是一定被使用过的数据。这样就可以大致估算当前任务所需要的栈的空间大小。

下图中,当前任务的栈空间申请为 256*4bytes,实际使用的栈不超过256bytes,因此该任务的栈大小必要的话可以缩小至512bytes,用来节省内容

freeRTOS 内存使用以及任务栈的使用情况查看_第5张图片

你可能感兴趣的:(freertos,keil)