ARM

ARM64 OSを作ろう (3) ~ 割り込みとタイムシェアリング

前回実装したマルチタスク機能をベースに、今回はARM64向け自作OSにタイマー割り込みによるタイムシェアリング機能を実装します。Raspberry Pi 4のGICv2とGeneric Timerを利用し、タスクが自動的に切り替わる仕組みを構築します。

新Linuxカーネル解読室 - Linuxの起動 ~ARM64編~ (1)

ARM64 Linuxカーネルがどのような手順で起動するかを解説します。仮想記憶の初期化、デバイスツリーの処理、マルチコア起動、initramfsの展開などを取り上げ、カーネルエントリからinitプロセス起動までの流れをソースコードとともに見ていきます。

ARM64 OSを作ろう (2) ~ タスク切り替え

前回構築したUART出力環境をベースに、ARM64アーキテクチャ向け自作OSへマルチタスク機能を実装します。コンテキストスイッチをアセンブリで記述し、C言語によるタスク管理やスケジューラと組み合わせることで、Raspberry Pi 4上で複数のタスクが順番に動作…

ARM64 OSを作ろう (1) ~環境構築と実行

本連載は「RISC-V OSを作ろう」シリーズの流れを踏まえ、ARM64アーキテクチャを対象に自作OS開発を行います。ターゲットマシンとしてRaspberry Pi 4 を利用します。

ARMv8-A AArch64 ベタメタルプログラミング ブート編

ARMv8-A アーキテクチャでの 64bit 環境 (AArch64) でのブートプログラム作成についてまとめます。 今回のブート処理では AArch64 ステートで実行し例外レベルを EL1 にして特権プログラムの実行の準備までを行います。