プロジェクト, リアルタイムOS, C言語, デバッガ, 言語パック
その他
ここでは, C言語に関する詳細を説明します.
タスクを管理するにあたり, 各タスクの情報を保持しておく必要があります. このような情報の塊をタスクコントロールブロック(TCB)と呼びます.
C言語には, マクロと呼ばれるものがあります. マクロとは, コンパイル前にある規則に従って文字を置き換える機能を持ちます[1].
ここでは, マクロの詳しい機能の説明を行います.
ここでは, LanguagePackManagerの基本的な使い方を説明します. 説明項目は以下のとおりです.
- パラメータの説明
- 言語パックの作成
- 使用例
- 言語パックの読み込みについて
LanguagePackManagerの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- Unityにインポート
![](/Master/nodec-framework/images/nodec-framework.png)
nodec
は、ゲームエンジンなどのプラットフォームを新しく作成するためのフレームワークです。
アプリ開発のためのプラットフォームは、これまでたくさんありました。たとえば、GUIアプリケーション作成のプラットフォームにはQt、ゲーム開発のためのプラットフォームにはUnityがあります。ですが、これらのプラットフォームは別々で開発されており、そのうえで動くアプリコードもまた、まったく違った様相をしています。
nodec
フレームワークを利用することで、新しいプラットフォームを効率的に構築できます。nodec
フレームワークは、異なるプラットフォーム間で共通に使える機能を提供します。また、アプリへのインターフェイスはあらかじめ定義されているので、設計の再利用が可能です。
アプリコードの実装も、nodec
フレームワークで効率化することが可能です。プラットフォームの上に、機能を抽象化したレイヤー(modules)があり、アプリ層はこのレイヤーを通してプラットフォームの機能を利用します。プラットフォームが異なっても、アプリでの実装の仕方は同じです。
OSは日常のあらゆる場所で目にします. パソコンには必ずと言っていいほどOSが走っており, 携帯, ゲーム機などにもOSが走っております. このような普段よく使うOSですが, そのOSの仕組みを分かっていても, 実際どのように作るのかはよく知られておらず気になります.
このページでは, 実際にArduinoで動くOSを作成することで, OSの理解を深めます. 使用するプログラミング言語はC言語です. (作成といいましても, すでに在りますFreeRTOSから必要な機能を抜き出し, Arduinoで動くようにしました.) なお, 今回扱うOSは汎用OSではなくリアルタイムOS(RTOS)と呼ばれるものです. 汎用OSとは, すべてのタスクに等しく優先度が与えられますが, RTOSではタスクごとに優先度を設定できます.
話の進め方ですが, 今回のOS製作では実装に重きを置くため, コードを中心に話を進めていきます. 各コードごとに簡単な説明を行い, その中で特に重要な部分―OSの仕組みに深くかかわる部分―もしくはさらに詳しい説明については別ページで行います. これら別ページ―詳細ページ―は子コンテンツである"仕組み"にまとめられています.
話の流れは次のとおりです.
- RTOSとは
- 目標と使い方
- 準備
- ファイル構成
- スクリプト
- ボードの設定
- 仕組み
対応状況
- Arduino UNO
- Arduino Mega
動作確認済み環境
- Arduino IDE 1.8.10
- Arduino AVR Boards 1.8.1
OSは日常のあらゆる場所で目にします. パソコンには必ずと言っていいほどOSが走っており, 携帯, ゲーム機などにもOSが走っております. このような普段よく使うOSですが, そのOSの仕組みを分かっていても, 実際どのように作るのかはよく知られておらず気になります.
このページでは, 実際にArduinoで動くOSを作成することで, OSの理解を深めます. 使用するプログラミング言語はC言語です. (作成といいましても, すでに在りますFreeRTOSから必要な機能を抜き出し, Arduinoで動くようにしました.) なお, 今回扱うOSは汎用OSではなくリアルタイムOS(RTOS)と呼ばれるものです. 汎用OSとは, すべてのタスクに等しく優先度が与えられますが, RTOSではタスクごとに優先度を設定できます.
話の進め方ですが, 今回のOS製作では実装に重きを置くため, コードを中心に話を進めていきます. 各コードごとに簡単な説明を行い, その中で特に重要な部分―OSの仕組みに深くかかわる部分―もしくはさらに詳しい説明については別ページで行います. これら別ページ―詳細ページ―は子コンテンツである"仕組み"にまとめられています.
話の流れは次のとおりです.
- RTOSとは
- 目標と使い方
- 準備
- ファイル構成
- スクリプト
- ボードの設定
- 仕組み
対応状況
- Arduino UNO
- Arduino Mega
動作確認済み環境
- Arduino IDE 1.8.10
- Arduino AVR Boards 1.8.1
ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.
OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.
今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.
このページでは, OSによるメモリ管理をどのように実装するのか説明します.
OSがタスクの切り替えを行うためには, 定期的にOSが現在実行中のタスクの処理を中断してタスク切り替え処理を行う必要があります.
ここでは, このようなOSが定期的に割り込み処理を行う方法を説明します. また, 割り込み時の処理について説明します.
ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.
OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.
今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.
このページでは, OSによるメモリ管理をどのように実装するのか説明します.
ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.
OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.
今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.
このページでは, OSによるメモリ管理をどのように実装するのか説明します.
PortMacro.hで宣言されているOSコア部分の関数をここで定義します. このファイルはAVRマイコン専用です.
PHPでWebアプリケーションを作るとき, 必ずデバックを行う必要があります. Debugの方法として, "echo"関数などを使用したプログラムの状態を画面に出力するなどがありますが, ファイルとしてそのようなデバック情報が保存されないのが難点です.
このDebugツールは以下の目的で作られました.
- 簡単にDebugできるように
- 外部ファイルとしてデバック情報を保存
LanguagePackManagerとは言語パックを管理するものです. もちろんですがUnity上で動作します.
これを使うと以下のことができます.
- 言語パックの管理
- 各シーンでのアンロードとロード
言語パックといいながらファイル形式はテキスト形式です. 言語関係の編集が簡単になります.
また言語パックを各シーンでアンロードされるのでロードした言語パックが残り続けることがありません. これはすなわち使っていないメモリを開放します.
LanguagePackManagerを改良、強化、何でもしてください(;´∀`)
このページで書かれている書かれている内容が実際のスクリプトと異なる可能性があります.
このページの内容は2016年に執筆されています.
PHPでWebアプリケーションを作るとき, 必ずデバックを行う必要があります. Debugの方法として, "echo"関数などを使用したプログラムの状態を画面に出力するなどがありますが, ファイルとしてそのようなデバック情報が保存されないのが難点です.
このDebugツールは以下の目的で作られました.
- 簡単にDebugできるように
- 外部ファイルとしてデバック情報を保存
LanguagePackManagerとは言語パックを管理するものです. もちろんですがUnity上で動作します.
これを使うと以下のことができます.
- 言語パックの管理
- 各シーンでのアンロードとロード
言語パックといいながらファイル形式はテキスト形式です. 言語関係の編集が簡単になります.
また言語パックを各シーンでアンロードされるのでロードした言語パックが残り続けることがありません. これはすなわち使っていないメモリを開放します.
LanguagePackManagerを改良、強化、何でもしてください(;´∀`)
このページで書かれている書かれている内容が実際のスクリプトと異なる可能性があります.
このページの内容は2016年に執筆されています.