目次

編集中, List

状態リスト | タスク管理

それぞれのタスクにはそのタスクの状態というものがあります. 今回のOSでは, このタスクの状態を状態リストを用いて判別することにします. 以下から, タスク状態の種類, 状態リストの構造, リストを用いたタスク状態の切り替え方法を詳しく見ていきます.

Heap4.c | スクリプティング

各タスクごとに割り当てられるメモリの管理

OS
仕組み | Arduino上で走るOSの作り方

ここには, OSの仕組みに関する情報が書かれます. OSは非常に多くのことが関わっているため以下のように分けていきます.

  • メモリ管理
  • タスク管理
  • OSの設定
  • Arduino標準機能との融合
スクリプティング | Arduino上で走るOSの作り方

ここから, 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の設定方法について説明します.

設定ファイルは,ArduinOSConfig.hです. このファイル内にOSの設定を書きます. また, 設定ではハードウェアの基本構成に加え, 各機能の有効化, システムフックを行うか, などといった設定を行えます.

使用方法 | Arduino上で走るOSの作り方

ここでは, ArduinOSの使用方法を説明します.

C言語
Port.c | スクリプティング

PortMacro.hで宣言されているOSコア部分の関数をここで定義します. このファイルはAVRマイコン専用です.

ライブラリ
C++でC#のようなListを使いたい | C++ライブラリ

C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.

上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).

C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.

Listを強化, 改良何でもしてください. ( `ー´)ノ

CAUTION

C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.

C#, C++
C++でC#のようなListを使いたい | C++ライブラリ

C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.

上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).

C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.

Listを強化, 改良何でもしてください. ( `ー´)ノ

CAUTION

C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.

Listの使い方 | C++でC#のようなListを使いたい

ここでは, Listの基本的な使い方を説明します. 各説明項目は以下のとおりです.

  • 使用例
  • C#との相違点
  • Sortについて
Listの導入方法 | C++でC#のようなListを使いたい

ここでは, Listの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • インクルード
Listの関数一覧 | C++でC#のようなListを使いたい

Listが持つ関数は以下のとおりです.

List コンストラクタ
Count 要素数を取得
Capacity 容量を取得
SetCapacity 容量を設定
Array 内部配列先頭アドレス取得
Add List末尾に要素追加
Insert 指定した位置に要素挿入
IndexOf 指定されたオブジェクトの位置
LastIndexOf 最後から検索して最初に見つかったオブジェクトの位置
CopyTo 配列にコピー
RemoveAt 指定した位置を削除
Clear 要素をゼロ
Sort 並び替え
Trim 容量を要素数に設定
CopyFrom 指定されたListからコピー
MoveFrom 指定された配列そのものをListに差し替え

筆者がこのListを作る際, C#のListリファレンス(accessed: 2.1.2017) を参考にしました. 関数名はほとんど同じにしています.

ダウンロード
Listの導入方法 | C++でC#のようなListを使いたい

ここでは, Listの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • インクルード
「https://contentsviewer.work/Master/:tagmap/Arduino,Cpp/編集中,List?layer=ja」から取得