スキップしてメイン コンテンツに移動

投稿

11月, 2025の投稿を表示しています

arm64 kernel device tree で特定範囲のメモリ領域をマッピングさせない様にする

以前に入手したH728を搭載した X96Q Pro Pluse での設定は一通り済んだので、別の安価な Android TV Box で色々できないかと思い探したところ、 Allwinner H313 を搭載した Android 14 な H96 Max H313 というモノがあったので入手してみました。Allwinner H313 を搭載した Android TV Box は他にも X96Q というのもあるのですが、こちらはAndroid のバージョンが 10 だったので、前者を選択しました。 H313はダイがH616/H618とほぼ同じだということだったので、H728同様になんとかなるだろうと思いarmbianのコードをみてみると、X96Qの設定があったので、これをもとにフォークしたところ、あっさり起動しました。 しかし、メモリを多めに(とはいっても300MB程度以上)使用するコマンド・アプリを起動するとログなしでハングしてしまいます。Device Treeをみても特にこれといった問題点は見つからなかったので、以前と同様に電源周りかなと思い、電源をかえてみたのですが同じでした。どこが悪いのか分からなかったのですが、u-boot を memtest を有効にしてコンパイルさせてメモリーをチェックすると、特定領域についてはエラーが出ていました。Android として起動させた場合は特にエラーはみつからなかったので、DRMのパラーメータをAndroidのものと同じにしても同じでした。カーネルのソースの問題かDRAM設定かいずれかの問題だとは思うのですが、DRAMのパラメータを算出するには情報が少なすぎて適切な値がわかりません。 そこで荒治療ですが一層のことエラーの出ている領域をアクセスしないようにすればハングは回避できるのではと思い表題のようにしたところ、ハングしなくなったので備忘録として挙げておくことにしました。 以下設定です。 #arch/arm/dts/sun50i-h313-h96-max-h313.dts # 前略 reserved-memory { #address-cells = ; #size-cells = ; ranges; ...