1.LOS_XXとは何ですか
LOS_XX は、LiteOS_M または LiteOS_A カーネルによって提供されるインターフェイス です。例: LOS_TaskCreate、LOS_TaskCreate、LOS_SemCreate など。LiteOS_M と LiteOS_A は異なるカーネル用であるため、LOS_XX の実装も異なります。言い換えれば、LOS_XX は特定のカーネル タイプに関連しています。
ここではソース ファイルの場所についてのみ説明します。興味がある場合は、自分で調べてください。
バージョン 1.0、LiteOS_M
code-1.0\kernel\liteos_m\kernel\base
バージョン 1.0.1、LiteOS_M
code-1.0.1\L01\kernel\liteos_m\kernel\src
バージョン 1.1、LiteOS_M
code-1.1.0\code-1.1.0\kernel\liteos_m\kernel\src
2.osXXとは何ですか
osXX は、osThreadNew、osTimerNew、osSemaphoreNew などのcmsis 標準インターフェイスです。
これらの機能については以前の記事で詳しく紹介しているので、ここではあまり紹介せず、これらのファイルの場所だけを紹介しますので、興味のある方はご自身で調べてください。
バージョン1.0
code-1.0\kernel\liteos_m\components\cmsis\2.0
バージョン1.0.1
code-1.0.1\L01\kernel\liteos_m\kal\cmsis
バージョン1.1.0
code-1.1.0\code-1.1.0\kernel\liteos_m\kal\cmsis
cmsis_liteos2.c には、osXX のすべての関数の実装が含まれています。
バージョン 1.0では、osMemoryXX 関連関数は cmsis ファイルに含まれておらず、定義されているだけで あることに注意してください。したがって、バージョン 1.0 で osMemoryXX 関連関数を呼び出すと、コンパイル時にエラーが報告されます。
3. 二人の関係
osXX は、実際には LOS_XX の上位レベルのカプセル化です。前述したように、LOS_XX は LiteOS_M と Lite_OSA で異なります。実際、より多くのコアがあった場合、LOS_XX にはさらに異なる名前が付けられた可能性があります。開発者がさまざまなカーネルで開発および実行できるようにするために、osXX が誕生しました。
たとえば、A コア システムに AOS_XX があり、B コアには BOS_XX、C コアには COS_XX があるとします。アプリケーション開発者が AOS_XX を呼び出すと、A コアでのみ実行でき、BOS_XX を呼び出すと、B コアでのみ実行できます。これにより、コア全体の複雑さが明らかに増加します。また、アプリケーション開発者が osXX を呼び出した場合、A カーネル、B カーネル、および C カーネルがすべて osXX の実装を提供している限り、アプリケーション開発者は調整を行う必要がなく、A カーネル、B カーネル上で実行できます。 、および C カーネル システムを実行します。
注:バージョン 1.0 は cmsis 標準のみをサポートします。バージョン 1.0.1 以降、cmsis 標準および posix 標準をサポート
バージョン1.0.1
code-1.0.1\L01\kernel\liteos_m\kal
実際、osXX と LOS_XX の関係はコードからもわかります。ここでは osThreadNew 関数を例として取り上げます。まず、この関数の実体を見てください。
osThreadNew 関数のエンティティでは、タスクを作成するために LOS_TaskCreate が実際に呼び出されていることがわかります。