plat/allwinner/common/sunxi_bl31_setup.cでfdtを探しちゃいるけど、得られたアドレスはこの中に囲い込んじゃってるね。検索用のsunxi_find_dtb()についても。
OpenBSD(uaa@), Ham(JG1UAA), Ingress(Lv14, RES), Japanese(Sagamihara-city, Kanagawa)
Another side: https://social.tchncs.de/@uaa
npub1rarr265r9f9j6ewp960hcm7cvz9zskc7l2ykwul57e7xa60r8css7uf890
Messages from this Mastodon account can read via mostr.pub with npub1j3un8843rpuk4rvwnd7plaknf2lce58yl6qmpkqrwt3tr5k60vfqxmlq0w
plat/allwinner/common/sunxi_bl31_setup.cでfdtを探しちゃいるけど、得られたアドレスはこの中に囲い込んじゃってるね。検索用のsunxi_find_dtb()についても。
そもそもlibfdtが触れる、fdtへのポインタってやつをどっかから引っ張って来ないといけないんだけど…引っ張って来れるのか、という問題があるような。
OpenBSDの場合、以前
node = OF_finddevice("/");
if (!node)
return;
if (OF_is_compatible(node, "xunlong,orangepi-one-plus")) {
みたいなコードを自分用に書いていたので、こんな感じの機種判別コードをlibfdt使って実装すれば良いんだろうとは思う。どうやるか全然分からんけど。
SETUP_REGULATORSの有無を切り替えるようなMakefileのパッチは投げてはいるけど、撤回してボード名に応じて動きを変えるようなATFにするパッチをこさえた方が良いんだろうか。こういうのは気分的にすごく嫌なんだけど、それでも無いとまともにボードが動かないし…
(まずは作ってみる必要があるかな、実現可能性を探る意味でも)
ていうか、Orange Pi OnePlusとOrange Pi 3って地雷ってことなんじゃ…(今更気づくか)
axp/common.cはここから下がごっそり無効化されるので、SUNXI_SETUP_REGULATORS=0は牛刀持って鶏を…という気がしなくもない。
https://github.com/ARM-software/arm-trusted-firmware/blob/master/drivers/allwinner/axp/common.c#L52
というか本気でレギュレータの制御を「何もしない」にしてるのがなんとも…(OS側で全部掌握せーよ、ということなんだろうけどOS側が面倒見切れてないという部分もあるのでU-boot他のアシストはあると嬉しいんだよねという甘いことをほざいてみよう)。
コンパイル時のオプションで制御できるからportsで何とかできるのであって、必要な時のみパッチをon/offといった大技(?)までは流石に難しいんじゃないかなあ。
SCPで何かやってると思ったが…どうも違うみたいだ。
ArmbianがATFにパッチを当てて問題を回避してる。
https://github.com/armbian/build/blob/main/patch/atf/atf-sunxi64/board_orangepioneplus/sunxi-Don-t-enable-referenced-regulators.patch
そしてこれはOrangePi OnePlusとOnrange Pi 3でのみ有効になってる。
これなら確かにATFのバージョン縛りは要らないし、SUNXI_SETUP_REGULATORS=0を指定する必要も無い(このパッチによる修正とSUNXI(略)=0での対応は、厳密には同じではないというのも厄介)。
ん-、レギュレータ操作なしのATFを組み込んで、コールドブートした場合のみethernet PHYがちゃんと動く、ってのが厄介だな(rebootでウォームブートするとPHYが見えなくなる)。
多分、SCPにレギュレータ操作を握らせるか何かするとちゃんと動くようになるとかそういう話なんだろうか。Armbianの動作がマトモなので。
SCP抜き、レギュレータの操作はデフォルト(あり)だとこうなるわなあ。
dwxe0 at simplebus0: address 02:07:11:b5:5a:5a
dwxe0: no PHY found!
とはいえ、SCP抜きのせいか時折
NOTICE: BL31: v2.10.2(release):lts-2.10.2
NOTICE: BL31: Built : 05:29:45, Feb 22 2024
NOTICE: BL31: Detected Allwinner H6 SoC (1728)
NOTICE: BL31: Found U-Boot DTB at 0xa0963d8, model: OrangePi One Plus
ERROR: MHU: Unexpected protocol (MHU status: 0x0)
となって起動できないことがある。
今のご時世、big-endianなマシンでかつマトモなOSの走るマシン、状態の良いものがどれだけ残ってるのか…という疑問はある。
ポリタンクなMacの一台くらいは確保したい気分ではあるけど、場所取るしな…(それならpowerpcなMac miniか?)
QEMUでビッグエンディアンな環境をエミュレートとか、ARMのbigendian環境に挑戦とか、方法はありそうな気がする。面倒そうだけど。
このアカウントは、notestockで公開設定になっていません。
Orange Pi One Plus向けのArmbian、何度再起動してもEthernet phyを見失わずに動いてますね…ATFが新しいからなのか、PSCI(crust)対応しているからなのか…
株価が上がろうが、自分の財布に入る金が増えない限り景気が良くなったとは決して言えないのでは?
rootのパスワードを設定せず、ユーザも作らずに再起動したらログインできなくなった…やり直しw
INFO: BL31: cortex_a53: CPU workaround for 855873 was applied
INFO: BL31: cortex_a53: CPU workaround for 1530924 was applied
SCP/INF: Crust v0.6.10000
INFO: PSCI: Suspend is available via SCPI
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x4a000000
INFO: SPSR = 0x3c9
U-Boot SPL 2024.01-armbian (Feb 10 2024 - 01:35:26 +0000)
DRAM: 1024 MiB
Trying to boot from MMC1
NOTICE: BL31: v2.9(debug):armbian
NOTICE: BL31: Built : 01:34:56, Feb 10 2024
NOTICE: BL31: Detected Allwinner H6 SoC (1728)
NOTICE: BL31: Found U-Boot DTB at 0xa096b48, model: OrangePi One Plus
INFO: ARM GICv2 driver initialized
INFO: Configuring SPC Controller
INFO: BL31: Platform setup done
INFO: BL31: Initializing runtime services
落としてバイナリダンプしてみtけどATFのバージョン分からないな…microSDに書いて動かせばいいか。
Armbian/Orange Pi One PlusのサポートはCommunity maintained/Unofficial扱いか。 https://www.armbian.com/orange-pi-one-plus/
Orange Pi One Plusはcrust未対応なんじゃなくconfigが無いだけか。かといってconfig書くのめんどいな(書かないと対話式の質問に答えることになるので余計にめんどいんだけど)。
もしかして:Orange Pi OnePlusってcrust firmware未対応 https://github.com/crust-firmware/crust/tree/master/configs
とりあえず、portsのATFを使って野良ビルドしたu-boot-2024.01でOrangePi OnePlusが起動することは確認。まずはATFのSUNXI_SETUP_REGULATORS=1/0でネットワーク周りの動作がどう変わるかを見ることにしよう…というところまでは、進められたか。
今日が休みならもっと進められるんだが…ほんっと、こうやって実行中のタスクコンテキストをイベントに刺されて実行を切られるのって不愉快極まりないんだよね。コンテキストスイッチが重い部類の人間なので、なるったけこういう切り替えは減らしたいというか0にしないとただでさえ低いパフォーマンスが0になるどころかマイナスになる。
昔のarmbian、ATF縛りやってたはずなんだけどmasterブランチ→mainブランチに変わってからはATFしばり止めちゃったんですかね。 https://github.com/armbian/build/tree/master/config/boards
てーかOrange Pi One Plus動かすのってそうとう久しぶりかも。専用の電源ケーブルをどこやったっけー?と散々探し回るくらい(見つからなかったらストックを開けようかと思ったけどそれはしないで済んだ)。
やっと-currentなportsにあるcrust, ATFからOrange Pi One Plus(H6)向けのu-bootを作って、起動用イメージをこさえるところまできた。ここからがテストの本番なので準備に時間かかりまくりってやつなんですが。
(しばらくsj3はおやすみ)
OpenBSD-Allwinner H6/H616絡みの話が少し動いてるので、そっち側の作業中。ARM Trusted Firmwareのバージョンアップの話があったので、Allwinner H6での問題回避の話(SUNXI_SETUP_REGULATORS=0)を入れてもらうようお願いしているところ。
既にこのオプションあり/なしのビルドを作れるようにしてはいるけど、portsの形で綺麗にまとめるのって結構大変…