はじめに
「Zynq MPSoCで、コンピュータを学ぼう」のその2です。
- その1 : Xilinx社のZynqUltrascale+ MPSoC について
- その2 : Zynq Ultrascale+ MPSoC がどのように立ち上がっていくのか
- その3 : Linux の dts を見て、どのようなハードウェアを使っているのか?
- その4 : Linux の デバイスドライバについて
- その5 : Programmable Logic
- その6 : QEMU (Zynq Ultrascale+ MPSoC の実物が無くても、Linuxが立ち上がる)
Zynq Ultrascale+ MPSoC がどのように立ち上がっていくのか
Zynq Ultrascale+ MPSoC は、次のステップで立ち上がります。
- 内部ROMが起動
- 内部ROMがストレージから FSBL (First Stage Boot Loader) をロードし、FSBL を起動
- FSBL がストレージが ATF (Arm Trusted Firmware) の bl31 を DRAM にロードし、ATF (bl31) を起動
- FSBL がストレージから U-Boot を DRAM にロードし、U-Boot を起動
- U-Boot がストレージから Linux を DRAM にロードし、Linux を起動
Zynq Ultrascale+ MPSoC では、上記のような流れになっていますが、ARM v8 の 64bit コアの SoC ではほぼ同じ流れになっています。
x86-64のLinuxマシンも同様に、x86-64の内部ROMからブートして、FSBLとU-Bootが x86-64 用のBIOSやBoot Loaderになるだけで、流れは同じです。
上記の流れの内、下記の4種類のソースコードは、公開されています。つまり、内部ROMのコード以外は全部、ソースコードが提供されていることになります。
- FSBL
- Arm Trusted Firmware : ARM Cortex-A53用のFirmware
- U-bool (u-boot-xlnx)
- Linux (linux-xlnx), device-tree-xln
また、これ以外に、PMU (Platform Management Unit) なるものがあり、その中にある Microblaze (Xilinx社の独自32ビットマイコン)が動いています。その Microblaze で動いている Firmware が 下記の PMU Firmware です。
おわりに
今回は、「Zynq Ultrascale+ MPSoC がどのように立ち上がっていくのか」を見てみました。
Google君に聞くと、上記な流れでブートすると書いているだけで、それぞれのソースコードの中までを解説する記事はほとんどありません。
ソースコードの中を調べて、どのようなことをやっているかを調べるだけで、いろいろなことを知ることができます。ソースコードでは、Zynq Ultrascale+ MPSoC の各種レジスタ等にアクセスしますので、そのレジスタがどんなものでなんのためにやっているかをZynq Ultrascale+ MPSoCの仕様書を読むことで理解が深まります。
コスパやタイパを考えると、そこまでやる必要がないよね。思うかもしれませんが、全く調べたことが無い人と、一回でもキチンと調べたことがある人ではその後それなりの違いが出るものだとあたしは思っています。
ということで、
- ドキュメントを読む
- ソースコードを調べる
ということで、コンピュータを学ぶことができるのです。
そういうことは、教科書には書いてありませんが、お仕事をする上では、絶対に必要なことです。