最新の Linux Kernel を各環境でビルドして動かしてみる(2023/8/6)

ここ数年の Linux Kernel はかなり安定しているとは思っていて、滅多にハングする状況を見ることをなくなりました。
でも、本当にそうなのか気になります。
気が向いたときに最新の Linux Kernel をいくつかのアーキテクチャでビルドして動かしてみた結果をまとめてみます。

■ 以下の情報に関する注意点

  • ファームウェアやブートローダ、ユーザランドは適当なので、現時点で再現性はないです
  • あくまでも起動プロセスを見ているだけです。長時間動作させた場合や高負荷時の条件では、別の問題が発生する可能性があります

■ 結果 (mainline)

バージョン : 6.5-rc4

  • Raspberry Pi 2 (arm)

    • 問題なし
    • DTSの配置先が変わっている。arch/arm/boot/dts/bcm2836-rpi-2-b.dtb -> arch/arm/boot/dts/broadcom/bcm2836-rpi-2-b.dtb
      • 以前からdtsディレクトリのファイルは多かったので、整理されるとありがたい
  • VisionFive 2 (riscv)

    • ルートファイルシステムのマウントで止まる
    • ドライバはロードされているものの、microSDの挿抜で何もログがでていないので、認識していない? [ 0.121509] sdhci: Secure Digital Host Controller Interface driver [ 0.121528] sdhci: Copyright(c) Pierre Ossman [ 0.121643] sdhci-pltfm: SDHCI platform and OF driver helper … [ 1.123265] Waiting for root device /dev/mmcblk1p4...
    • MMCDWSTARFIVE がデフォルトでnだったので、yにしてみたものの変わらず
    • DTSを確かめてみるとそもそも定義がなかった
      • VisionFive2のカーネルのリポジトリを見ると定義があったので、これを使えばできそうには見えるものの、電源レギュレータとかも参照していて単純なコピペでは無理

■ 結果 (-rt)

バージョン : 6.4.6-rt8

  • Raspberry Pi 2 (arm)
    • 問題なし
Posted at : 2023-08-06 17:01:39 / Category : none

OpenOCDを使ってVisionFive2のJTAGデバッグ

単純なアタッチは以下の通りでできた。
https://forum.rvspace.org/t/connecting-to-visionfive-s-jtag-port-a-short-guide/514/1

ホスト側のJTAG I/Fには秋月のFT232HLを使用した。

アタッチしてデバッグまでは特に問題なくできるものの、
TRSTnをアサートしてもリセットがかからない。
これができれば、リセットベクタからデバッグができるのだけどなぁ。。。

手順は以下の通り。

  1. FT232HLのOpenOCDの設定にTRSTn関連の端子設定をする
  2. gdbからmonitor resetコマンドを実行する

念のためオシロでTRSTnの端子を見ると、ちゃんと一定時間Lにアサートしていた。
アサート時間が短いのかなと思い、monitor jtagntrstassert_widthで調整をしてみても変わらず。
ホスト側は特に問題なさそう。

ターゲット側の問題のような感じはするけど、はっきりとはわからず。
仕様書は抜粋版しか公開されていないようなので、ここからも情報は得られなかった。

そうなると、U-Bootだとresetコマンドが実行できるのはなんでだろう?
抜粋版の仕様書にリセットレジスタの記載があるので、これを叩いているのだろうか。

ソースを見てみる。
U-BootのCONFIGSYSRESETSBIが経っていて、resetコマンド実行時にU-BootからOpenSBIに落ちている。
OpenSBIでは、I2Cでregulatorのレジスタのresetビットを叩いている…。
これは望んでいた方法ではないな。。。

Posted at : 2023-08-05 16:13:07 / Category : none