参考文献, Arduino
グラフィックスやシェーダのテクニック
各タスクごとに割り当てられるメモリの管理
それぞれのタスクにはそのタスクの状態というものがあります. 今回のOSでは, このタスクの状態を状態リストを用いて判別することにします. 以下から, タスク状態の種類, 状態リストの構造, リストを用いたタスク状態の切り替え方法を詳しく見ていきます.
ここでは, ArduinOSの使用方法を説明します.
ここから, OSのソースファイル, ヘッダファイルを順番に実装していきます.
実装するファイルは次のとおりです.
- Heap4.c
- List.c
- List.h
- ArduinOS.h
- ArduinOSConfig.h
- ArduinOSConfigAtmega328P.h
- ArduinOSConfigAtmega2560.h
- Port.c
- Portable.h
- PortMacro.h
- ProjDefs.h
- Queue.c
- Queue.h
- Semaphore.h
- StackMacros.h
- Task.c
- Task.h
変更を加えるファイルは以下のとおりです.
- Arduino.h
- wiring.c
- main.cpp
基本的な製作の流れを踏まえつつ, 各ファイルごとに説明を行っていきます.
ここには, OSの仕組みに関する情報が書かれます. OSは非常に多くのことが関わっているため以下のように分けていきます.
- メモリ管理
- タスク管理
- OSの設定
- Arduino標準機能との融合
ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.
ここでは, OSの設定方法について説明します.
設定ファイルは,ArduinOSConfig.h
です. このファイル内にOSの設定を書きます. また, 設定ではハードウェアの基本構成に加え, 各機能の有効化, システムフックを行うか, などといった設定を行えます.
PortMacro.hで宣言されているOSコア部分の関数をここで定義します. このファイルはAVRマイコン専用です.
OSがタスクの切り替えを行うためには, 定期的にOSが現在実行中のタスクの処理を中断してタスク切り替え処理を行う必要があります.
ここでは, このようなOSが定期的に割り込み処理を行う方法を説明します. また, 割り込み時の処理について説明します.
ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.
ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.