適用先: RealView リアルタイム ライブラリ
この記事に含まれている情報の適用先:
- RL-ARM の全バージョン
質問
ARTX から RL-ARM にアップグレードしたのですが、システム タスク スタック用に定義されている領域が大幅に増えていることに気付きました。スタック サイズまたはタスク数の変更は行っていません。何が起きたのでしょうか? 解決方法を教えてください。
回答
RTL.h ファイルに、マクロ _declare_box8 が以下のように定義されています。RL-ARM はこのマクロを使用して、システム スタック メモリを宣言します。
#define _declare_box8(pool,size,cnt) U64 pool[((size+7)/8)*cnt + 2]
ARTX はこのマクロを使用していませんでした。
RL-ARM の場合、cnt パラメータがかっこで囲まれていないので、システム タスクの数を計算する際に渡すパラメータ OS_TASKCNT - OS_PRIVCNT + 2 が正しく計算されません。この問題は、RTL.h で _declare_box8 のマクロ定義を以下のように変更することで解決します。
#define _declare_box8(pool,size,cnt) U64 pool[((size+7)/8)*(cnt) + 2]
RTL.h は、RL-ARM V3.04 で更新されています。
関連項目
- TCP/IP スタックのメモリ容量を減らす方法を教えてください。