Skip to content

takeharukato/sample-tsk-sw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

タスクスイッチのサンプルプログラム

本プログラムについて

本プログラムは, X64/AArch64でのタスク(スレッド)切り替えの例を示した サンプルプログラムです。

X64 での実行手順

コンパイル手順

トップディレクトリで,以下のコマンドを実行します. 動作確認は, FreeBSD10, CentOS6.2, CentOS7.0で行っています。

$ make

しばらく待つとkernel.elfという名前のファイルができます。

実行手順

本プログラムは, ユーザランド上でタスクスイッチの動作を確認するためのサ ンプルですので, 実機上やシミュレータからブートさせる必要はありません。

$ make menuconfig

を実行し, Hardware Abstraction Layer(HAL)の項目をNに設定し, 左端の選択表示部分が, [ ] になることを確認して, Exitを選択, コンフィ グレーション情報を保存してください。

その後,

$ make

を実行することで, kernel.elfというx64用のサンプルプログラムが生 成されます。

次に, シェルのコマンドラインから以下を実行します:

$ ./kernel.elf

本サンプルを実行すると2つのスレッドが自身のスレッド名を画面に表示しな がらお互いに動作を切り替える様子が観察できます。実行例は以下の通りです。

threadA
threadB
threadA
threadB

AArch64での実行手順

コンパイル手順

Linux用のAArch64のクロスコンパイラ (aarch64-none-linux-gnueabi-gcc/aarch64-none-linux-gnueabi-ldなど)への パスを環境変数PATHに設定し,

$ export CROSS_COMPILE=aarch64-none-linux-gnueabi-
$ export CPU=aarch64

を実行して環境変数を設定した上で,

$ make menuconfig

を実行し, Hardware Abstraction Layer(HAL)の項目をYに設定し, 左端の選択表示部分が, [*] になることを確認して, Exitを選択, コンフィ グレーション情報を保存してください。

その後,

$ make

を実行するとkernel.elfというAArch64用のサンプルプログラムが生成 されます。

実行手順

以下のコマンドを実行することで, QEmuのAArch64システムシミュレータ上で タスク切り替え処理が実行されます。

$ qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic  -kernel
kernel.elf

実行例を以下に示します:

$ qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic  -kernel
kernel.elf
boot
threadA
threadB
threadC
threadA
threadB
threadA
threadB
threadA
threadB
...

About

A Sample Operating System Kernel for Embedded Systems

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published