OS, ライブラリ
ここでは, OSの設定方法について説明します.
設定ファイルは,ArduinOSConfig.h
です. このファイル内にOSの設定を書きます. また, 設定ではハードウェアの基本構成に加え, 各機能の有効化, システムフックを行うか, などといった設定を行えます.
このページは筆者が作成したC++のライブラリが公開されます.
作成したpythonの再利用可能なモジュール群
Pipenv仮想パッケージ環境上でROS2ノードを動かす.
ここから, 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標準機能との融合
ここでは, ArduinOSの使用方法を説明します.
Summary
サイズ固定の待ち行列ライブラリを紹介します.
このQueueは, 以下の特徴を持ちます.
- std::queue が使用できない状況下での待ち行列の使用
- メモリを贅沢に使用しないサイズ固定待ち行列
- 例外処理に対応していない環境下での使用
サイズ固定の待ち行列ライブラリを紹介します.
このQueueは, 以下の特徴を持ちます.
- std::queue が使用できない状況下での待ち行列の使用
- メモリを贅沢に使用しないサイズ固定待ち行列
- 例外処理に対応していない環境下での使用
サイズ固定の待ち行列ライブラリを紹介します.
このQueueは, 以下の特徴を持ちます.
- std::queue が使用できない状況下での待ち行列の使用
- メモリを贅沢に使用しないサイズ固定待ち行列
- 例外処理に対応していない環境下での使用
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたStringが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するStringがあります. このStringで用意されている関数名はほぼC#と一致します.
C#で非常に便利だったSplit関数も用意されています.
また, 文字列探索において一番高速とされるBM法を用いています.
Stringを強化, 改良何でもしてください. ( `ー´)ノ
C#のStringを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のstringをお使いください. C++ですでに用意されています.
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).
C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.
Listを強化, 改良何でもしてください. ( `ー´)ノ
C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.
サイズ固定のスタックを扱うライブラリを紹介します.
このStackは, 以下の特徴を持ちます.
- std::stack が使用できない状況下でのスタックの使用
- メモリを贅沢に使用しないサイズ固定スタック
- 例外処理に対応していない環境下での使用
本稿では, C++でバージョンに左右されずに文字を扱うために, 以下の機能を持つライブラリを紹介します.
- 型依存しないUTF-8, UTF-16, UTF-32間の相互変換
- UTF-8, UTF-16文字(コードポイント)ごとのイテレート
- 標準イテレータを使ったイテレート
- 型依存しないイテレータの対応
サイズ固定の待ち行列ライブラリを紹介します.
このQueueは, 以下の特徴を持ちます.
- std::queue が使用できない状況下での待ち行列の使用
- メモリを贅沢に使用しないサイズ固定待ち行列
- 例外処理に対応していない環境下での使用
サイズ固定のスタックを扱うライブラリを紹介します.
このStackは, 以下の特徴を持ちます.
- std::stack が使用できない状況下でのスタックの使用
- メモリを贅沢に使用しないサイズ固定スタック
- 例外処理に対応していない環境下での使用
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたStringが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するStringがあります. このStringで用意されている関数名はほぼC#と一致します.
C#で非常に便利だったSplit関数も用意されています.
また, 文字列探索において一番高速とされるBM法を用いています.
Stringを強化, 改良何でもしてください. ( `ー´)ノ
C#のStringを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のstringをお使いください. C++ですでに用意されています.
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたStringが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するStringがあります. このStringで用意されている関数名はほぼC#と一致します.
C#で非常に便利だったSplit関数も用意されています.
また, 文字列探索において一番高速とされるBM法を用いています.
Stringを強化, 改良何でもしてください. ( `ー´)ノ
C#のStringを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のstringをお使いください. C++ですでに用意されています.
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).
C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.
Listを強化, 改良何でもしてください. ( `ー´)ノ
C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).
C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.
Listを強化, 改良何でもしてください. ( `ー´)ノ
C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.
サイズ固定のスタックを扱うライブラリを紹介します.
このStackは, 以下の特徴を持ちます.
- std::stack が使用できない状況下でのスタックの使用
- メモリを贅沢に使用しないサイズ固定スタック
- 例外処理に対応していない環境下での使用
本稿では, C++でバージョンに左右されずに文字を扱うために, 以下の機能を持つライブラリを紹介します.
- 型依存しないUTF-8, UTF-16, UTF-32間の相互変換
- UTF-8, UTF-16文字(コードポイント)ごとのイテレート
- 標準イテレータを使ったイテレート
- 型依存しないイテレータの対応