31-Dec-2021
[まったくもう…]

ここしばらくは年賀状の作成にはがきデザインキットを使っていたのですが、(Adobe AIRのサポート終了によるものか)住所録の書き出ししかできなくなっていたのを知ったのは年賀状を作ろうとアプリを開いた時の話。文面も宛名書きもお手軽に作業できるので気に入っていたのに…

時間はありませんし、使えなくなったアプリに縋っても仕方がありません。ueokande/jletteraddressとTeXで宛名書きをすることにしました。

オリジナルのjletteraddressだと

という問題があるため、自分なりにちょっといじったものをjg1uaa/jletteraddressにフォークしています。これと組み合わせて使うCSV→TeX変換ツールなるものもどうにか作って、なんとか宛名書きは終了。本文もPNGなりJPEGなりの一枚絵にちょっとしたメッセージを書くだけなので、これもTeXで作ることに。

変換ツール、「郵便局の総合印刷サービス用CSVファイル」を適当に解釈しjletteraddressに合わせてデータを吐くだけ…ではなく、

という工程が必要でした。ローマ数字→漢数字の置換のために<wchar.h>を使いワイド文字間連の処理を行うのは初めてだったのですが、何とかなったようです。あとは出来上がったものをポストに投函すればお終い。これで、来年も年賀状作成が多少は楽になると良いのですが、さてどうかな…?

本年もお世話になりました。来年もよろしくお願いいたします。55.0kg(04:00)

30-Dec-2021
[アンテナ張ってみました(2)]

前回の続き。致命的な問題に遭遇というのは、コネクタとケーブルの半田付けができない、ということ。使用したSMAコネクタ付きのケーブルはATNJの3D-FB 20mの物で、アンテナ側はSMA-Mコネクタを介しているので問題無いのですが、無線機側がどうにもならず。最後の最後でこれかよ…と。

AliExpressで安かったし(2020年1月に購入し、\698+送料\660)コネクタも付いているからという理由で買ったのが災いしたようで、芯線はともかく網線にまったく半田が乗らない。どうしたものかと呟いたらアルミを使っていないか?という話があり(@jf1tpr)、じゃあ圧着か専用工具の用意が面倒だなと考えていたらBNCはどうかというアドバイスがあり(@jj1dbx)、無事コネクタを取り付けてIC-7200M〜WA-21改の接続が完了しました。

でもこのケーブル、網線がスカスカなんですよね。3D-FBだし絶縁体にアルミテープ巻いてるからこの程度で充分でしょ?という思想なのか。

tpc294380.jpg tpc294381.jpg

tpc294382.jpg tpc294383.jpg

中国製の同軸ケーブルは絶縁破壊したおかげで無線機が壊れたという話(@7L3KPX)を聞いたので、このケーブルは大丈夫かとメーカーに問い合わせてみました。頂いたデータシートにはpeak powerが0.132kWと書かれていたので、28MHzとはいえこれに50W突っ込むのはちょっと止しといた方が良さそうな気がしています。

まだ数日しか使っていませんが、実家で使っていた40mくらいのウインドムアンテナと比べるとあまり聞こえるものがない(中波放送もNHKはともかくTBSの受信すら苦労する)というのが残念ですが、この程度のアンテナでもKG-FAXを使ってラジオFAXが受信できるのは嬉しいですね。IC-7200だとUSBケーブル一本でPCに繋がりますし。

実のところもう少し長いアンテナを屋根裏に入れることはできそうなので、28MHzよりも低い周波数帯にトライしたいという欲が出ています。とはいえ折角設置した以上、まずはこれを遊び倒してからでも良いでしょう。流石に、同軸ケーブルは換えますが。54.7kg(06:50)

27-Dec-2021
[アンテナ張ってみました]

暑い季節に屋根裏に入ると生命の危険がありますので、秋以降にやることになると思いますということで、居間〜屋根裏間のケーブルが引き回せるかどうかの確認なんてやらずにいきなり始めます。なにしろ、安全に作業できるチャンスがなかなか巡ってこないので。

とりあえずLANケーブルの通ってるコルゲートチューブに同軸ケーブル突っ込めば入るんじゃないの?3D-FBなんだし、と思っていましたが…その考えは甘々で、当然のごとく途中で詰まります。何かガイドとなるような針金でも通すかね、と思って近所のDIY屋さんで相談してみたところ呼び線なる道具があることを教えてもらいました。

という訳で、DENSAN BX-5215 ブラックエース15mなるものを早速購入して作業です。お財布は軽くなってしまったものの、やはり専用の工具は威力が違い、あっさりとケーブルを通すことができました(でも5D-2Vを通すのは流石に厳しそうな気がする)。今後LANケーブルや同軸ケーブルの引き直しを行うこともあるかもしれませんので、その時にまた活躍してもらうとしましょう。

コンセント周りはこんな感じにまとめました。コンセントプレートをWTF7007W(7個用)からWTF7009W(9個用)に変更し、前からあったNR3160W(LAN)に加えてケーブル引き出し用のWN3025SW(通線チップ・ブッシング付)とWN3020SW(ブランクチップ)を組み合わせています。テレビコンセントはインピーダンスが違う(75Ω)ために使えないので、直接引き出すしかありません。

tpc264373.jpg

同軸ケーブルを屋根裏に通してしまえば、あとはアンテナを張るだけ。屋根裏なので防水も考えず、お気楽にやっちゃいます。

tpc264379.jpg tpc264378.jpg

アンテナを張る前にリビングで大体の周波数を合わせていたのですが(その時は28.7MHz辺りがSWRの底だった)、屋根裏に張った状態でアンテナ直下のSWRをNanoVNAで測ると28.480MHzが一番低い状態になっていました。28.0MHz〜29.0MHzの範囲なら1.5以下、29.5MHzまでくると2でしょうか…アンテナの張り方で数百kHz程度は簡単にずれることに注意が必要なのはともかくとして、これならアンテナチューナー無しで使えたりしませんかね?

tpc264377.jpg

…ここまでやった後、致命的な問題に遭遇するのですがこれについてはまた後日。52.8kg(23:55)

26-Dec-2021
[今年の振り返りをするには]

まだ若干早い気がするのですが、時間が取れるかどうか怪しいので簡単にやっちゃいます。

とはいえ11-Feb-2011のToDoで、

OpenBSD/Allwinner H6
なんとなく片付きつつある、H616対応も入れてみたけどこっちはまだ動いてない
M17
何もしてませんごめんなさい
xlxd
IPv6対応の再々作成はしてあるものの、マージされる気配はないしこちらもIPv6の通信環境を失ってしまう…
LGT8Fx
最近見てないや
LoRa: 2.4GHz
JARD測定器室での測定は完了しているが変更申請は出していない、RadioLib-5.0対応が必要な状況であることは認識しているものの未作業
direwolf
sndio対応はしたはず…?

あとはOpenBSDでのlibkkcはlibkkc-dataをなんとかするのが終わってないので何とかしないといけない気がするけど未着手、W806はAllwinner H6/H616関連によりぶん投げたままという状況になっております。

ドローン遊びは秋分が過ぎてしまい、日の出ている時間が激減しているためお休み中です。こういう時は家の中で遊べる、FPVを載せたTinyWhoopがあれば良いのでしょうけど(BETAFPV Cetus Pro FPV Kitが気になります)、制度の整備等により今後お金がどれだけ飛ぶか読めない以上は機材への投資は止めることにしています。ドローン登録システムによる登録をまだ行っていないので、正月休みの間に済ませておかないと…

来年、どうなるんでしょうかね。なんかもう全然想像がつきませんし、想像しても…という気分になってしまいます。53.1kg(18:00)

18-Dec-2021
[おぼえがき:Orange Pi Zero2(Allwinner H616)向けのU-Boot作成]

Orange Pi Zero2(Allwinner H616)も届いているので、まずはU-Bootを動かすところから。W806は一旦脇に置いときます。

・ATF(Arm Trusted Firmware)

git clone https://github.com/ARM-software/arm-trusted-firmware; cd arm-trusted-firmware; git checkout v2.6; make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_h616 bl31 DEBUG=1

・U-Boot

tar jxpf u-boot-2021.10.tar.bz2; cd u-boot-2021.10; make CROSS_COMPILE=aarch64-linux-gnu- orangepi_zero2_defconfig; make CROSS_COMPILE=aarch64-linux-gnu- BL31=/path/to/bl31.bin

02-Feb-2021ではAllwinner H6向けのものをリリースビルド/SCPありで作っていますが、やっぱりデバッグメッセージが無いと辛いのと、とりあえずSCPは無くても大丈夫かな?ということで今回はこの設定です。ATFのH616対応はv2.5以降となるため、現時点の最新版であるv2.6を使っています。当然ですが、H6用のATFをH616で動かそうとしても動きません。

雑にOpenBSDの起動ディスクを作った感じでは、この程度動くならそんなに苦労はしないかな?という気がします。なお、シリアルポートのFIFO周りはAllwinner H6と同様の対応が必要そうです(U-Bootでmw 05000008 0とすると例によっておかしくなります)。53.5kg(16:40)

08-Dec-2021
[安かったので(失敗編)]

WinnerMicro W806なるCPUの載ったボードをAliExpressで買ってみたは良いのですが…

timg_20211207_181608_7.jpg

開発環境とか、どう揃えたら良いんでしょうかね。中国語で書かれた資料だのを読み漁ってどうにかするしかないのは確かなのですが。とりあえず、【联盛德W806-KIT开发板试用体验】兵马未动,粮草先行(linux_环境搭建产出fls)に記されていたcsky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gzをダウンロードして、見てみることにします。

アーカイブに含まれるファイルはこんな感じで、C-SKY向けに設定されたbinutils-2.27, gcc-6.3.0のようです。strings(1)でcsky-abiv2-elf-gccを覗いてみると、/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/source//gcc/configure x86_64-linux --enable-languages=c,c++ --disable-threads --enable-sjlj-exceptions --disable-shared --enable-libssp --target=csky-elfabiv2 --prefix=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/install/ --with-headers=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/install//csky-elfabiv2/include --with-lib=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/install//csky-elfabiv2/lib/ --with-mpfr=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/lib-for-gcc-x86_64-linux/ --with-gmp=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/lib-for-gcc-x86_64-linux/ --with-mpc=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-csky-1/lib-for-gcc-x86_64-linux/ --with-cskyabi=abiv2 --with-pkgversion='T-HEAD C-SKY Tools V3.10.29 Minilibc abiv2 B20210423' --disable-tls --enable-threads=posixなんて文字列が埋まっていたのでこれに近い形でconfigureすれば良いのだと思います。

とはいえ、gccのC-SKYサポートは9以降という話がGCC Patches Posted For Port To Chinese "C-SKY" CPU ArchitectureNEW: devel/csky-elf(openbsd-ports)で出ているので、そこそこ新し目のgccをいつもの手順でC-SKY向けにビルドすれば良いのでは?という気もします。newlibについても、newlib-4.0.0以降であれば対応しているようですし。あとは、wm-sdk-w806で書き込みツールが揃うかどうか。

という訳で、まずはクロスコンパイラの用意。wm-sdk-w806/tools/W806/wconfigに従い、(newlibを使ってはいますが)csky-abiv2-elfで進めます。

・csky-abiv2-elf

binutils-2.34
../configure --target=csky-abiv2-elf --prefix=/usr/local --disable-nls
gcc-9.4.0 + newlib-4.1.0
../configure --target=csky-abiv2-elf --enable-languages=c,c++ --prefix=/usr/local --with-newlib --disable-nls --disable-libssp --disable-libgomp --with-gmp=/usr/local --disable-lto --with-cskyabi=abiv2 --disable-threads --disable-tls

csky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gzに含まれるgccと全然違う設定ですが、困った時に見直すことにします。Arch LinuxではAUR(csky-elf-noneabiv2-tools-bin)で揃うようなので、こちらの設定も調べておけば良かったかな…

インストール後、csky-abiv2-elf-gcc -c hello.c -S -o hello.sでなんとなくコードも生成できているようなので、コンパイラは一応用意できたということにします。

届いたボードが壊れていても困りますので、簡単に動作チェックをするとしても、何をすれば良いか分かりません。とりあえずPCにつないで、LEDは点滅しませんが…通信ソフトを起動しておくとリセットする度に「enter main」なるメッセージが飛んできます。

20211208.png

また、BOOTボタンを押しながらリセットを行うと、W806がひたすらCの文字を送信してくるのですが、書き込みプログラムか何かからのコマンドを待っているのかもしれません。何かしらの反応がある以上、ボードは壊れていないと判断して良さそうです。

あとはwm-sdk-w806をgit cloneして足掻けば良いはず…だったのですが、どうもビルドしたコンパイラが-mcpu=ck804efオプションに対応していないらしく、どうにもなりません。ck804efの代わりに使えそうなオプション(ck803ef?)に変えてごまかすか、ck804efに対応したコンパイラを作り直す必要があります。

という訳で、表題の「失敗編」にあるように、今日の日記の内容では全然進みません。ごめんなさい。52.3kg(21:05)

11-Dec-2021補足:binutils-2.36以降ではck804のサポートがありますが、ck804efは無いようです。gccは現在の最新版(11.2)でもck804の対応はありません。binutilsを見るに、ck804はck803(R3)相当のようですがこれに対応するオプションは無いのでck803r1とし、これにDSP(e)とFPU(f)を付けてck803efr1とするのが良さそうに見えます。

ちょっと足掻いてオブジェクトが得られるところまでは来たのですが、libglossにあるlibnosysあるいはlibsemi(にあるsbrk.o)が必要になります。これはRTEMS 4.5.1-pre3 On-Line Libraryにあるように、gccを作成する際においてnewlibだけでなくlibglossのソースコードへシンボリックリンクを張った状態でビルドすれば作成できます。

ちょっと悩んだのがMAP := -Wl,-ckmap=$(IMAGEODIR)/$(TARGET).mapの部分。ldの-ckmapオプションはT-HEAD(C-SKY)拡張のようで、これは-Mapオプションに置き換えるしかなさそうです。

12-Dec-2021補足:別記事ではなく、補足で進めます。wm_toolによる書き込みがOpenBSDだと上手くいかないようで、その問題を解決しないといけないのですが…原因が掴めないので一旦棚に上げて、野良ビルドしたbinutils+gcc+newlibでwm-sdk-w806を使えるようにすることを優先しました。これは既に実現できており、pull requestとして投げています。既に書いたことの再掲も含みますが、

が必要です。ここまでの作業で、wm-sdk-w806のapp/src(中身はdemo/pwm/led_fade_independentと同じ)が動作することを確認しています。

なお、#include "wm_hal.h"を行い、SystemClock_Config(CPU_CLK_160M)を呼び出す際は注意が必要です。wm_it.cに記述される、CORET_IRQHandler()を実装しないとundefined exception 57が発生して途方に暮れることになります。

ASCIIアートベンチマークをとりあえず載せてみたものの、40MHz設定でもかなり高速で、一瞬で結果が出てしまいます(タイマーの使い方が分からないため、正確な時間測定は行えていません)。単精度とはいえ、FPUを搭載していることが効いているのでしょうか。

あとはmake menuconfigおよびwm_toolのOpenBSD対応が残っています。とはいえ、状況次第ではこのままで放り投げるかもしれません。

05-Dec-2021
[流石にそれはどうかと思う💢(3)]

ATFによる電源制御がRTL8211の誤動作を招いているという点を突き止め、ATFによる電源制御を止めさせることでちゃんと動くようになった…というのはコールドスタートした時だけで、OpenBSDのreboot後はPHYを見失います(PHYのアドレスは7で、0では反応しなくなっていました)。これは、どうにかしてPHYのリセットをきちんとやらないとダメそうです。

Table of Allwinner based boardsからAllwinner H6搭載機の回路図を見るに、

Pine H64 ver 1.1
PC16で電源制御(active high)、PD6でリセット(active low, pull-up)
Pine H64 model B
電源は直結、PD6でリセット(active low)
Orange Pi 3
PD6で電源制御(active high)、PD14でリセット(active low, pull-up)
Orange Pi Lite 2
イーサネットなし(WiFiのみ)
Orange Pi One Plus
PD6で電源制御(active high)、PD14でリセット(active low, pull-up)

となっており、DTBでは

Pine H64 ver 1.1 (sun50i-h6-pine-h64.dtb) [pine64,pine-h64]
gmac-3v3にPC16の定義あり
Pine H64 model B (sun50i-h6-pine-h64-model-b.dtb) [pine64,pine-h64-model-b]
gmac-3v3にPC16の定義あり
Orange Pi 3 (sun50i-h6-orangepi-3.dtb) [xunlong,orangepi-3]
ethernetノードにphy-supplyプロパティ無く、PHYおよび対応する電源の定義なし
Orange Pi Lite 2 (sun50i-h6-orangepi-lite2.dtb) [xunlong,orangepi-lite2]
イーサネットなし(WiFiのみ)
Orange Pi One Plus (sun50i-h6-orangepi-one-plus.dtb) [xunlong,orangepi-one-plus]
gmac-3v3にPD6の定義あり

という状況を見るに、Orange Pi Lite2以外では対処が必要そうに見えます。とりあえず、手元にあるOrange Pi One Plus向けのworkaroundを仕込んで様子を見ることにしましょう。今までの修正でUART周辺以外はokを頂いてコミットできたので、それ以外のまだコミットしていない物をここにまとめておきます。bsd.rdを作成してインストールも行える状態となり、現在は実機上でビルドしています。dmesgはこんな感じ。53.6kg(09:25)

01-Dec-2021
[期間限定キャラは取れる気がしない]

闘技大会で比較的取りやすい(倒しやすい)と言われるリ・トゥが加わり、プリムロゼを★5で引いてはみたものの、他はなかなかやってきませんね…とはいえ、これ以上増えてしまうとどう育成するんだという問題がかなり深刻になってくるのですが。

★5
ハンイット(弓), ニコラ(短剣), トレサ(槍), ドロテア(槍), ティキレン(剣), リュミス(斧), グロッサム(扇), ヴァルカン(本), アデル(短剣), イデア(剣), ムールゥ(本), ガートルード(斧), プロメ(杖), オデット(本), ユーニィ(弓), リオナ(杖), オルベリク(剣), オフィーリア(杖), イェンロン(杖), ウ・ルダイ(槍), ヘイズ(斧), ティティ(扇)

剣士の試煉で得た雷剣将の聖印でライオネルを★4→★5に上げて、ウ・ルダイを引くはずのガチャでハスミ★5を引いたので、クラスアップを考える必要があるのはコウレンだけになりました。しかし銀導石を砕く余裕はないのです…

以下、★4.5。

★5だけで見ていくと、剣(4)短剣(4)弓(4)杖(4)斧(2)扇(4)本(4)槍(3)の29人。属性で数えるなら風(7)闇(4)火(2+1)雷(5+1)光(5)氷(5+1)。扇・闇戦力が急に充実してきましたが、その一方で未だに斧・炎戦力に乏しいというのが何とも。覚醒IVによるアイテムを得たリネットの火力はかなりのものではあるのですけどね…

授けし者編第3章はどれも強そうなボスなので、Lv100まで育てたキャラクタが幾人かいたとしても簡単に勝てそうには見えません(装備を固め、弱点をきちんと突けるパーティーを編成する必要があるゲームなのでこれはそういうものなのですが)。

慌てても仕方が無いので、武器・防具を作るために必要な素材を集めながら旅団を育てて、のんびりシナリオを進めていく予定です。52.8kg(22:15)