29-Jan-2021
[LPCNetべんちまーく。(4)]

19-May-2020の続編ではありません。(ここから長い前置き)Orange Pi One Plus(Allwinner H6)でのOpenBSD/arm64の動作テストを行っている際、ネットワークが動かないのでarmbianを動かしてみる→もしかしてAArch64だけでなくAArch32なバイナリも動いたりしませんか?→じゃあちょっと試してみましょう→なんか動いちゃったので適当なコードで試してみましょうか、という訳で。(ここまで長い前置き)

ちゃんとメモを取っていた訳では無いのでもしかすると誤りがある可能性がありますが、AArch64なarmbianでAArch32なバイナリを動かすため必要なことは四つ。

  1. apt-get install crossbuild-essential-armhf
  2. echo "/usr/arm-linux-gnueabihf/lib" > /etc/ld.so.conf.d/arm-linux-eabihf.conf
  3. ln -s /usr/arm-linux-gnueabihf/lib/ld-2.28.so /lib/ld-linux-armhf.so.3
  4. /sbin/ldconfig

あとはarm-linux-gnueabihf-gccでコンパイルし、得られたAArch32オブジェクトを実行すれば良い訳ですが…何かのライブラリ(例えばLibreSSL)のAArch32版が要る!となった場合については分かりません。

25-Apr-2020に記したテスト方法で、AArch64/AArch32それぞれにコンパイルオプションを設定して試してこんな感じ。

optionencodedecode
-O3 -march=armv8-a+fp+simd8.858s3m0.391s
-O3 -march=armv8-a+fp+simd -ffast-math -DFLOAT_APPROX8.890s2m54.571s
-Ofast -march=armv8-a+fp+simd -DFLOAT_APPROX7.023s2m44.057s
optionencodedecode
-O3 -march=armv8-a -mfpu=neon-fp-armv811.416s3m2.165s
-O3 -march=armv8-a -mfpu=neon-fp-armv8 -ffast-math -DFLOAT_APPROX7.653s2m36.745s
-Ofast -march=armv8-a -mfpu=neon-fp-armv8 -DFLOAT_APPROX7.665s2m36.888s
-O3 -march=armv8-a -mfpu=neon-vfpv411.370s3m22.586s
-O3 -march=armv8-a -mfpu=neon-vfpv4 -ffast-math -DFLOAT_APPROX7.628s2m56.099s
-Ofast -march=armv8-a -mfpu=neon-vfpv4 -DFLOAT_APPROX7.519s2m54.130s
-O3 -march=armv7-a -mfpu=neon-vfpv411.982s3m27.884s
-O3 -march=armv7-a -mfpu=neon-vfpv4 -ffast-math -DFLOAT_APPROX7.961s3m4.428s
-Ofast -march=armv7-a -mfpu=neon-vfpv4 -DFLOAT_APPROX8.009s3m5.798s
-O3 -march=armv7-a -mfpu=neon-vfpv311.915s3m31.134s
-O3 -march=armv7-a -mfpu=neon-vfpv3 -ffast-math -DFLOAT_APPROX7.874s3m8.154s
-Ofast -march=armv7-a -mfpu=neon-vfpv3 -DFLOAT_APPROX7.950s3m4.763s

何と何を比較して、どう評価するか悩む結果なのですが…AArch64の"-march=armv8-a+fp+simd"とAArch32の"-march=armv8-a -mfpu=neon-fp-armv8"のdecodeで比較するのが良いのでしょうか。-ffast-mathだの-Ofastだのを指定しない場合はAArch32よりもAArch64の方がちょっぴり速いと言えそうですが、指定した場合はAArch32の方が速くなるのが謎です。AArch32同士では、neon-fp-armv8→neon-vfpv4→neon-vfpv3の順に遅くなっていく、と乱暴に結論付けます。

Cortex-A53の場合においては、

という感じに見えますが、Raspberry Pi4等に使われるCortex-A72だとどうなるんでしょうかね?52.50kg(20:55)

23-Jan-2021
[大陸の覇者おぼえがき]

頻繁に書いている気がしますが、なにしろ追加の旅人がどんどん増えるのでメモしないことには誰が居て誰が居ないかが全然分からなくなるという…

★5
ギルデロイ(槍), ソフィア(本), ハンイット(弓), ニコラ(短剣), トレサ(槍), ライオネル(剣), ドロテア(槍)
★4
コルネリア(斧), ケネス(本), エフレン(杖)

今日追加されたドロテア(槍)ガチャ(期間限定)、トレサもギルデロイも居ないので溜め込んでおいたルビーを使って引いてみましたが…ペレディール(本)が来たくらいですかね。これで初期実装の64人は★5の2人を残すのみ。

ストーリーの進行は、全てを極めし者第4章を終えた時点から進めていません。なにしろ、ここしばらくは忙しい人でも出来る!1日1回あることをやるだけで簡単にLV40のキャラを量産するレベル上げ方法とは?という動画に従い、上級討伐にいるキャットリン狩りをあまり使わないキャラで行う(リタイヤして経験値だけもらう)→普段使いのキャラは普通に討伐→名もなき町でナッツ畑用の素材集め、の繰り返しなので(でもナッツは食べずに溜め込むだけ)。

ストーリーを進めるにしても、武器防具を作るための素材がなかなか集まらないのでどうしようかなという感じです。とはいえ(追憶の塔攻略のための)街道等にいるシンボルエネミーを倒すにも武器防具は重要なので、素材集めするしかないんですよね…面倒なんですが。

サービスを開始してから追加キャラが色々出ていますけど、何だかんだ言って初期実装64人中の★5でパーティーを組むのが実は一番バランスが良かったりするのではないかと思うのですが…実際のところどうなのでしょう?53.30kg(20:30)

17-Jan-2021
[OpenGD77(実際はOpenDM1801だけど)を書き込んでみる]

OpenGD77 CPSを使えば、ネットワークの向こうにある、リリース版/ベータ版のOpenGD77(OpenDM1801)をBaofeng DM-1801に書き込むことはできます。しかし、現時点では09-Jan-2021の手順でビルドしたものや、ネットのどこかに転がっているオリジナルの(DM-1801/BF-1801)ファームウェアを書き込むことがうまくできません。SGL形式のファイルであることは認識しているようなのですが、そこから先へ進まないのです。

…では、どうするか。

OpenGD77/blob/master/tools/Python/FirmwareLoader/gd-77_firmware_loader.pyを使います。OpenGD77のビルドに使用したArch Linux上で動かすなら、予めpacman -S python-pip; pip install pyusb等して必要なモジュールをインストールしておくのと、パーミッションの設定を適切にするなりrootに化けておくといった準備をしておいてください。

あとは、gd-77_firmware_loader.py -m DM-1801 -f path/to/firmware.sglで書き込めるのですが…適切にビルドされたOpenDM1801ならともかく、bin2sglでDM1801用の設定を忘れた等の理由によりファームウェアの対象機種と無線機が一致しない!と怒られてしまう場合はgd-77_firmware_loader.py -F -m DM-1801 -f path/to/firmware.sglのように-Fオプションを追加することで強制的に書き込むことができます(通常はこのオプションは使用しないようにしてください)。

実行例、出しておきます。1blockの書き込みに1秒程度かかるので、書き込みが終わるまではかなり時間がかかります。


[root@archlinux-vm uaa]# ./gd-77_firmware_loader.py  -m DM-1801 -f OpenGD77/firm
ware/build/bin/OpenDM1801.sgl
 - Now flashing your DM-1801 with "OpenGD77/firmware/build/bin/OpenDM1801.sgl"
 - Firmware file confirmed as SGL
 - Sending Download command
 - Sending ACK
 - Sending encryption key
 - Sending F-PROG command
 - Sending radio modem number
 - Sending radio modem number 2
 - Sending version
 - Sending erase command
 - Send post erase command
 - Sending Program command
 - Sending last block
Firmware update complete. Please reboot the DM-1801.
[root@archlinux-vm uaa]#

なお、gd-77_firmware_loader.pyを見れば分かることではありますが、SGLファイルの11バイト目に機種別のIDが記されています。


[uaa@archlinux-vm bin]$ hexdump -C OpenDM1801.sgl | head
00000000  53 47 4c 21 16 09 0f 77  63 77 7d 4f c8 47 0c c5  |SGL!...wcw}O.G..|

これが0x1bならGD-77, 0x70ならGD-77S, 0x4fならDM-1801, 0x5cならRD-5Rだそうです。でも、どこかから拾ってきたBF-1801 2.2.5のファームウェアだと…


uaa@framboise:~$ hexdump -C BF-1801_V2.2.5.sgl |head
00000000  53 47 4c 21 16 09 0f 77  63 77 7d 1a 8a 47 31 92  |SGL!...wcw}..G1.|

細かいことは一旦置いといて、とりあえずこれで手元でビルドしたものやネットワークからダウンロードしたものだけでなく、元(オリジナルのファームウェア)に戻すこともできるようになりました。Arch Linux上で(MCUXpressoを使わずに)ビルドしたOpenDM1801がなんとなく動いているのも確認できました。

ビルド〜書き込みの一連の作業を行う際にMakefileがちょっと使いにくかったので、多少使いやすい形に整備してpull requestを出してみましたが、MCUXpressoでの開発を前提としている以上マージされる可能性は低いかもしれません。54.00kg(09:50)

16-Jan-2021
[キーボードとマウス替えました]

03-Jan-2021にキーボードを発注した話を書いていますが(実際に発注したのは昨年末だったのですけど)、届いたので早速交換しています。キーボードはB.O.WHW098Aというもので、テンキー無しのコンパクトサイズの物です。前のキーボードの癖が手に残っているのでスムースにはまだ打てないのですが、感触としては悪くないと思います(\2k未満の安いキーボードとしては十分という意味での悪くない、です)。

静音という割に多少のカシャカシャした打鍵音はあり、これは気にならないのですが…チャタリングでもあるのかiiだの))だのと文字がダブって入力されることが多い点が気になります。とはいえこの現象は仕事場の、日本のパソコン会社の冠を記したUSBキーボードでも起こるので、最近のキーボードはそういうものなのでしょうか。何にせよ、新しいキーボードは良いです…テンション上がります。

マウスについてもMicrosoft Basic Optical Mouse v2.0 (Model 1113)に交換です…同じモデルですが、白→黒に色が変わっています。クリックの感触は変わりませんが、ホイールを回したときの音が静かになっており、新しいマウスはやっぱり良いですねーなどと実感しております。

入力デバイスも一新したことですし、これで生産性が向上しないと「何やってんの?」と怒られちゃいそうですね…53.55kg(08:45)

13-Jan-2021
[神プランやめました]

05-Feb-2020〜10-Jan-2021の期間ということで、11ヶ月くらい。ロケットモバイルさん、お世話になりました。

結局MMDVMHostによるHotSpot用回線として使えるかどうかは確認しなかったのですが、それ以外については19-Feb-2020に書いた感想から変わりません。LINE通話やZoiPer ProによるMy 050の利用には問題が無かったので、データ通信経由の音声通話主体で緊急通報を使わないケースでは十分使えると言えます(データ専用SIMでもau回線ならVoLTE越しの緊急通報ができるという話があるようですが、docomo/SoftBank回線ではどうなんでしょうね?)。

感想に追加するとすれば、Twidereで、流れてきたツイートに添付された画像を開くのが重くて辛いことくらいでしょうか。これは、500〜600kbps出るとされるServersMan SIM LTEだと多少は改善されるのか気になるところです。

なお、神プランを止めた理由はその月額費用を他のことに回す必要が生じたという、それだけの理由です。51.45kg(18:30)

09-Jan-2021
[OpenGD77をビルドしてみる]

LoRaモジュールと同時に変更申請(増設)を出しているBaofeng DM-1801なのですが、OpenGD77(OpenDM1801)と呼ばれるファームウェアを入れることができるようです。実際に入れてみる前に、ソースコードからビルドできるかどうかを試してみましょう。

ビルドを行う上では、特に以下の二つが重要です。

これ、現時点ではなかなか厳しくて、手元の環境ではどれも対応できません。

今まで使ったことが無かったのですが、Arch Linuxの仮想マシンを用意してビルドしました。これはarm-none-eabi-gcc-10.2.0と新しく、libc_nano.aもあります。

最初にOpenGD77/firmware/linkerdata/codec_dat_files_creator.exeを実行し、OpenGD77/firmware/linkerdata/codec_bin_section_[12].binを作成します。このexeは.NET Framework 4.7.1によるもののようで、Windowsに限らずMonoを使っても実行可能です(Windows/Monoでの生成結果に相違が無いことを確認しています)。道具と必要なファイルさえ揃っていれば、作業用のディレクトリをOpenGD77/firmware/build等の名称で作成し、作業用ディレクトリからmake -f ../Makefileでビルド可能です。

なお、codec_dat_files_creator.exeはhttps://github.com/rogerclarkmelbourne/Radioddity_GD-77/blob/master/Generic_devices/generic_dmr_codec.binからファイルを生成しているようですが、元データが何なのか、そこから抽出したファイルを使うことによる(ライセンス上の)問題は無いのかは不明です。多少の警戒が必要かもしれません。

ビルド条件を整えるよりも、むしろArch Linuxのインストールの方が厄介です…今回は試していませんが、同じArch系のManjaroの方が楽かもしれません。OpenGD77のユーザフォーラムではLinux Mintでのビルドができたというスレッドがあるものの、Linux MintにインストールしたMCUXpresso IDEからのビルドができたという話なのでこの日記とは方向性が違うように思われます。53.55kg(18:55)

10-Jan-2021補足:公式なビルド手順はOpenGD77 SW Developmentにあるように、MCUXpressoを使うことを前提としています。よって、MCUXpresso抜きでどうにかした、ここに記した手順でビルドしたバイナリが動作するかどうかは怪しいですし、問題が起こってもサポート対象外となります。

また、Generating the binary data sections from the official firmwareによれば、codec_bin_section_[12].binについてはGD77の公式ファームウェアv3.1.1からDMR codecを抜き出しているとの記述があります。

08-Jan-2021
[最近は]

大陸の覇者を起動して討伐して日替任務片付けて終わり、のサイクルでシナリオを何も進めていません…最近始まった「精鋭の旅人たち」のガチャでミロード(杖)(ただし★4)がやってきて、残りは

★5
ギルデロイ(槍), ソフィア(本), ハンイット(弓), ニコラ(短剣), トレサ(槍)
★4
ペレディール(本), コルネリア(斧), ケネス(本)

結局8人のまま。せめてサービス開始当初の64人は揃えたいんですけどね…

それにしても、まさか元旦にトレサを追加してくるとは。大陸の覇者じゃない方のオクトパストラベラーとの整合性はどうするの?って感じなんですが、これについては別世界なので気にしちゃいけないと考えるしかないのでしょうか(ちょっと気分はフクザツです)。

パーティーも、開始当初から遊んでいたキャラよりレベルが下がってしまうのですが、★4/★5主体の物に組み替えて育てたらこんな感じ。やっぱ★が多いだけのことはあるというのが率直な感想。

前衛後衛
ヴィオラ(★5短剣 Lv42/85)フィオル(★5剣 Lv41/84)
スケアクロウ(★5弓 Lv52/89)リネット(★54扇 Lv51/68)
テレーズ(★54本 Lv40/63)モルルッソ(★54杖 Lv42/62)
シェルビー(★4斧 Lv40/70)ピア(★4槍 Lv40/68)

槍キャラはバラッドを使いたいのですが、ただでさえ風属性でスケアクロウ/モルルッソが被っているのに、これに加えて火属性のリネット/バラッド被りをやるのは流石にどうなのという理由でピア(光属性)です。この部分はパーティー全体の配置も含め、更なる検討が必要そうです。52.80kg(22:15)

03-Jan-2021
[新年早々行き詰まる]

Orange Pi One Plus(Allwinner H6)でOpenBSDを動かそうとするとシリアルポートがうまく動かないという問題、この休みで調べているのですが…全然解決の糸口が見えません。

FCRに0を書き込み、FIFOをdisableにする→その後の1文字分はきちんとLSR.DRが動作するものの、RBR読み出してデータを取得してもLSR.DRが1のままになってしまう(ために受信していないはずのデータを受信する動作が延々と続く)という問題です。

NetBSDでは同じようにFIFOをdisableにしても動いているので、レジスタ設定の順番か何かの問題だろうとは思うのですが…これが全く見当が付かない。道楽なのでゆるゆるやっても文句言われないのは助かるのですが(しかし先に進まない)、お仕事でこういうハマりが起こっていたら…と思うと背筋が凍ります。

日記によれば01-May-2012にApple Keyboard(MB110LL/B)に自宅/職場のキーボードを替えたとあります。昨年末に自宅側のキーボードがヘタってしまったので職場で使っていたものに替えてみたものの、こちらも調子が良くありません。

キーボードは作業するための生命線となるデバイス、以前のようにUSキーボードが入手しやすい状況なら良いのですが…残念なことにその辺のお店では手に入らなくなってしまったので、AliExpressでさっさと注文することにしました。必要十分な品質を持つかどうかは届いてみてのお楽しみ。

そういえば、Microsoft Basic Optical Mouse v2.0 (Model 1113)も、ホイールがくたびれた感じがしますね…これをいつ手にしたのかは分からないのですが、10年以上交換した記憶が無いのでそろそろ替えても良いのかもしれません。

という訳で、本年もよろしくお願いします。53.50kg(12:45)