タスクスタック最大使用量取得API

タスク生成時に特定データでタスク用スタックを塗りつぶし、 API呼び出し時点でのスタックの最大使用量を推定する機能です。

静的生成タスク/動的生成タスクの生成時に、生成しタスクのスタック全域を特定データ(現状 'K')で 塗りつぶすように動作します。

ソリューションプロパティ

コンパイルオプションで "BasicGCCSW" の定義に、"-DSSTACK_PROF_MAX_USAGE_MARK"を定義します

定義の例

../../_images/PROF_MAX_STACK_USAGE.props.png

API

APIを使用するコードでは prof/rtos_prof.h をインクルードしてください。

#include "prof/rtos_prof.h"

StackUsage

typedef struct stack_usage StackUsage
struct stack_usage

説明

スタック使用量推定結果のデータ

定義

typedef struct stack_usage {
   void        *funcAddress;
   void        *frameAddress;
} StackUsage;

メンバー

void *funcAddress

システムでで予約されています

void *frameAddress

記録されたフレームアドレス

StackInfo

typedef struct stack_info StackInfo
struct stack_info

説明

スタック使用量推定結果のデータ

定義

typedef struct stack_info {
   size_t        stackSize;
   const void    * bottomAddress;
} StackInfo;

メンバー

size_t stackSize

タスク起動時に与えられたスタックのサイズ

const void *bottomAddress

スタックエリアの終端アドレス

StackStat

typedef struct stack_stat StackStat
struct stack_stat

説明

スタック使用量推定結果のデータ

定義

typedef struct stack_stat {
   StackUsage    usage;
   StackInfo     info;
} StackStat;

メンバー

StackUsage usage

読み出された時点でのスタック状況

StackInfo info

スタックエリアの基本情報(値は常に同じ

RTOS_PROF_get_marked_stack_status

int RTOS_PROF_get_marked_stack_status(TaskID task, StackStat *ss)

指定されたタスクIDのタスクについて、スタックの緒元と、推定最大スタック使用量の情報を取得します。

パラメータ:
  • task -- 値を取得したいタスクのタスクID

  • ss -- 値を受け取る構造体へのポインタ

戻り値:

  • E_OK: 正常終了

  • E_ID: 不正なタスクIDが指定された

  • E_NOEXS: 存在しないタスクIDが指定された