Booting 64-bit RISC-V noMMU Linux with rootfs loaded from SDcard on Sipeed Maix Bit

linux-k210-sdcard-maix-bit

Luffcaでは、Kendryte K210を搭載したSipeed社のMaix Bit上で、マイクロSDカードからロードしたrootfsを用いる64-bit RISC-V noMMU Linuxを起動することに成功しました。
また、ベンチマークソフトウェアのDhrystoneを動かしてみました。
このLinuxは、github.com/damien-lemoal/buildrootgithub.com/vowstar/k210-linux-nommuをベースにしています。

Sipeed Maix Bit

Sipeed社のMaix Bitは、Canaan社のKendryte K210を搭載したボードです。
Kendryte K210は、以下を搭載したSoC(System on Chip)です。

  • デュアルコア 64-bit RISC-V
  • CNN(Convolutional Neural Network)ハードウェアアクセラレータ用のKPU(Knowledge Processing Unit)
  • APU(Audio Processing Unit)
  • FFT(Fast Fourier Transform)アクセラレーター
  • etc.

Dhrystone

Dhrystone実行時の出力は、以下のようになっています。

/ # dhrystone 10000000

Dhrystone Benchmark, Version 2.1 (Language: C)

Program compiled without 'register' attribute

Execution starts, 10000000 runs through Dhrystone
Execution ends

Final values of the variables used in the benchmark:

Int_Glob: 5
should be: 5
Bool_Glob: 1
should be: 1
Ch_1_Glob: A
should be: A
Ch_2_Glob: B
should be: B
Arr_1_Glob[8]: 7
should be: 7
Arr_2_Glob[8][7]: 10000010
should be: Number_Of_Runs + 10
Ptr_Glob->
Ptr_Comp: -2140746408
should be: (implementation-dependent)
Discr: 0
should be: 0
Enum_Comp: 2
should be: 2
Int_Comp: 17
should be: 17
Str_Comp: DHRYSTONE PROGRAM, SOME STRING
should be: DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
Ptr_Comp: -2140746408
should be: (implementation-dependent), same as above
Discr: 0
should be: 0
Enum_Comp: 1
should be: 1
Int_Comp: 18
should be: 18
Str_Comp: DHRYSTONE PROGRAM, SOME STRING
should be: DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc: 5
should be: 5
Int_2_Loc: 13
should be: 13
Int_3_Loc: 7
should be: 7
Enum_Loc: 1
should be: 1
Str_1_Loc: DHRYSTONE PROGRAM, 1'ST STRING
should be: DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc: DHRYSTONE PROGRAM, 2'ND STRING
should be: DHRYSTONE PROGRAM, 2'ND STRING

Microseconds for one run through Dhrystone: 2.8
Dhrystones per Second: 360880.6

まとめ

Luffcaでは、Kendryte K210を搭載したSipeed社のMaix Bit上で、マイクロSDカードからロードしたrootfsを用いる64-bit RISC-V noMMU Linuxを起動することに成功しました。