背景
UV-K5シリーズという中華系の無線受信機をご存じだろうか。地震、台風、異常気象や犯罪、事故が頻発する現代で、ネット以外の情報収集手段を確保すべく、無線受信機を購入。ファームウェアソースがGITで公開されており、カスタマイズし放題というゴージャス仕様にして中国から3000円程で購入できる。
ソースコードはC言語、動作プラットフォームはARM。カスタマイズすべく、普段使いのWin11のWSL2にARMのクロスコンパイル環境を導入した。
手順
ダウンロード
以下からクロスコンパイラのダウンロードが可能
gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
こちらを選択してダウンロード。WSL2はデフォルトでbz2が解凍できないため、ツールをインストール。
$ sudo apt install bzip2
解凍確認&解凍
アーカイブの中身とパスを念のため確認。
$ sudo cat gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | bzip2 -d | tar -xvf -
が、インストーラが含まれておらず、面倒になって手抜きへ方針転換。
インストール
$ sudo apt install gcc-arm-none-eabi
簡単にインストール成功。
uv-k5のFirmwareをコンパイルしてみる
gitリポジトリからuv-k5のソースコードをゲット。
egzumer
現在の最新はrelease 0.22。
uv-k5-firmware-custom-0.22.zip
make一発で順調にコンパイル成功。(crcmodがないと怒られるが)
arm-none-eabi-objcopy -O binary firmware firmware.bin
arm-none-eabi-size firmware
text data bss dec hex filename
61288 44 3172 64504 fbf8 firmware
まとめ
思っていたよりも簡単にWindows上にARMのクロスコンパイル環境を構築することができた。デバイス関係はARMチップで動作するものが多く、いくつかはソースコードが公開されており、自由自在にカスタマイズできる(能力が伴えば)。