Python, OS, Arduino, 編集中
その他
プログラミング言語python
に関する知識
ここでは, OSの設定方法について説明します.
設定ファイルは,ArduinOSConfig.h
です. このファイル内にOSの設定を書きます. また, 設定ではハードウェアの基本構成に加え, 各機能の有効化, システムフックを行うか, などといった設定を行えます.
ここでは, ArduinOSの使用方法を説明します.
ここでは, 今回のOS製作で新しく作られるファイルの説明を行います.
OSを作成するにあたっての準備を行います.
ここでは, OSをArduinoIDE上で使用できるようにします.
するべきことは, コアフォルダの追加とボードの追加です.
OSを作成するにあたって, まずこのOSの使い方を説明します. (まず, 使い方を説明することでOS完成のイメージをつかむことができます.)
RTOSは, 組み込み系のシステムで用いられることが多いです.
一般OSと同様にタスクの切り替えを行う点は同じですが, タスクの切り替え規則に特色があります[1]. タスクの実行可能状態になるまでの時間の最悪値が保証されるように作られています.
ここには, OSの仕組みに関する情報が書かれます. OSは非常に多くのことが関わっているため以下のように分けていきます.
- メモリ管理
- タスク管理
- OSの設定
- Arduino標準機能との融合
ここから, 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
基本的な製作の流れを踏まえつつ, 各ファイルごとに説明を行っていきます.
このキャンバスの特徴は大きく分けて4つあります.
- 応用しやすい関数セット
- 白紙のキャンバスに文字、画像、直線などを描くような操作
- 高い移植性
- 高い描画効率
MelodyPlayerの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- インクルード
- ピン接続
ここでは, MelodyPlayerの基本的な使い方を説明します. 説明項目は以下のとおりです.
- 再生
- メロディーの追加方法
Arduinoを用いた電子工作でよく使うものの一つにスイッチがあります. 一つか二つのスイッチを使うのなら問題はないのですが、大量のスイッチを用いた電子工作となるとスイッチ一つに一つのピンを消費するわけにはいかなくなります.
例えば、ちょっとしたゲーム機を作るとしましょう. 十字キー、ABボタンなどで少なくとも6つぐらいのスイッチが必要となります. またグラフィック液晶との接続に13ピンほど使います.ピンが足りません.一つのピンで複数のスイッチ入力を読み取る必要があります.
また別の問題として仮に上の問題を解決―例えば抵抗による分圧方法によって解決―したとしても同時入力ができない問題があります. ゲーム機を作るとしてボタンの同時入力ができないのはかなり大きな問題でしょう.
このページではこれらの問題を解決する一つの方法を説明します。
このページで紹介する方法で以下のことができます。
- 一ピンあたりボタン六個の入力が可能
- 同時入力も可能
ここでは, Canvasの基本的な使い方を説明します. 説明内容は以下のとおりです.
- ファイルの配置
- キャンバスの開始
- 点を打つ
- 文字を書く
- 画像を描く
- 最後に
Arduinoにプログラムを書き込むにはパソコンが必要です. パソコンでプログラムを書きArduinoをパソコンに接続し、スケッチをマイコンボードに書き込みます. 別のプログラムを実行したいとき、またパソコンに接続してスケッチを書き込みます。これは大変労力かかると同時にパソコンなしではプログラムの変更は不可能です.
このページでは、それを解決する一つの方法を提案します。それは, Arduinoが別のArduinoへスケッチを書き込むということです. 詳しく言うと, スケッチをコンパイルした後に作成されるHexFileをSDカードに保存し, そのHexFileをある一つのArduinoが読み込み別のArduinoへスケッチを書き込むということです.
このページで紹介する方法で以下のことができます。
- ArduinoでArduinoにスケッチ書き込み
- 他機能の組み合わせで応用可能
"他機能の組み合わせで応用可能"の例ですが, ある端末を作ったとします。その端末にはグラフィック液晶ディスプレイ、コントローラーが付いています。使用者にグラフィック液晶でスケッチの選択をさせることで、一つの端末で複数のプログラムを実行することができます; パソコンでいちいちスケッチを書き込む必要はありません。
ただし、以下の環境が必要です。
スケッチを書き込まれるArduinoにはブートローダー"optiboot"がかきこまれていること
optibootがかきこまれているArduinoは"Arduino UNO"です。このサイトでもこれを使用しています。
スケッチを書き込むArduinoは16MHzで動作していること
optibootとの通信には115200bpsのシリアル通信が用いられています。8MHzなどの低周波数で動作するArduinoではこの通信がうまくいきません。
このページではArduinoをもちいた電子回路,プログラムなどに関する情報を扱います.
ここでは, OSの機能とArduino標準機能と融合していきます. 融合するものとしては, Arduino言語―setup(), loop()―, Arduino標準関数に影響するタイマー割り込み部分です.
各タスクごとに割り当てられるメモリの管理
Summary
それぞれのタスクにはそのタスクの状態というものがあります. 今回のOSでは, このタスクの状態を状態リストを用いて判別することにします. 以下から, タスク状態の種類, 状態リストの構造, リストを用いたタスク状態の切り替え方法を詳しく見ていきます.
GLCDControllerの基本的な使い方を説明します. 説明項目は以下のとおりです.
- GLCDControllerのしくみ
- ピン設定とGLCDControllerの開始
- 文字の表示
- 画像の表示
ここでは, GLCDControllerの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- インクルード
ここでは, OSには必ずなくてはいけない機能の一つであるタスク管理について説明します.
タスク管理には非常に多くのことが関わっているため以下のように分けていきます.
- タスクコントロールブロック(TCB)
- メモリの構造
- 状態リスト
- コンテクスト
- システム割り込み
SketchWriterの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- SDカード、操作したいArduinoと接続
- インクルード, SketchWriterを開始
Begin | SketchWriterの開始 |
---|---|
End | SketchWriterの終了 |
SetReaetPin | リセット信号を出すピンの設定 |
ResetArduino | Arduinoにリセットをかける |
GetCh | optibootからシリアルデータを受け取る |
Wait | optibootからの処理完了信号-STK_OK-待機 |
GetInSync | optibootからのSTK_INSYNK信号待機 |
VerifySpace | コマンド有効化 |
AppStart | プログラムの開始 |
GetSync | optibootと同期をとる |
GetParameter | optibootからOPTIBOOT_MAJVERまたはOPTIBOOT_MINVERを取得 |
SetAddress | メモリのオフセット値を送信 |
SendData | データの送信 |
SketchWrite | スケッチの書き込み |
SerialClear | シリアルデータ削除 |
SetFileName | 文字列’sketchName’にファイル名を代入 |
SketchLoad | スケッチ-HexFile-の読み込み |
SketchReload | スケッチ-HexFile-の再読み込み |
SketchClose | スケッチ-HexFile-を閉じる |
ReadHexVal | HexFileから1Byteの数値を読み込む |
ReadHexData | HexData読み込み, 配列’hexData’に格納 |
hexData[hexDataBufSize] | 読み込んだHexData |
---|---|
fileEnded | HexFile読み取り位置状態 |
sketchName | ロードしたHexFile名 |
sendDataSize | 一回でoptibootに送るデータサイズ |
hexDataBufSize | 配列’hexData’のサイズ |
TerminalPro4の特徴としては以下があげられます.
- ゲーム機として成り立つ必要最低限の機能
- 迅速なアプリケーション切り替え
- 簡単なソフトウェア開発
ここでは, SketchWriterの基本的な使い方を説明します. 説明項目は以下のとおりです.
- SketchWriterのしくみ
- HexFileの入手
- スケッチの送信