基本的には今回も Using ARM on Debian の通り。
環境は以下の通り。
user@host:~$ uname -a Linux host 5.15.146.1-microsoft-standard-WSL2 #1 SMP Thu Jan 11 04:09:03 UTC 2024 x86_64 GNU/Linux user@host:~$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 11 (bullseye)" NAME="Debian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
user@host:~$ sudo apt update user@host:~$ sudo apt-get install -y git tar wget dfu-util cmake python3 bzip2 lz4 curl hackrf python3-distutils python3-setuptools python3-yaml user@host:~$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; python3 get-pip.py user@host:~$ export PATH=/home/user/.local/bin:$PATH user@host:~$ pip install pyyaml (上で python3-yaml を入れているので不要) user@host:~$ sudo mkdir /opt/build && cd /opt/build user@host:/opt/build$ sudo wget -O gcc-arm-none-eabi.tar.bz2 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=108bd959-44bd-4619-9c19-26187abf5225&rev=108bd95944bd46199c1926187abf5225&hash=E367D388F6429B67D5D6BECF691B9521' user@host:/opt/build$ sudo mkdir armbin user@host:/opt/build$ sudo tar --strip=1 -xjvf gcc-arm-none-eabi.tar.bz2 -C armbin user@host:/opt/build$ echo 'PATH=/opt/build/armbin/bin:/opt/build/armbin/lib:/home/user/.local/bin:$PATH' >> ~/.bashrc user@host:/opt/build$ source ~/.bashrc user@host:/opt/build$ cd /opt
最新のリポジトリをひっぱってくるとビルドエラーになりやすいので、リリースバージョンを指定して clone する。
user@host:/opt$ sudo git clone --recurse-submodules https://github.com/portapack-mayhem/mayhem-firmware.git -b v2.0.1 user@host:/opt$ sudo chown -R user:user /opt/mayhem-firmware user@host:/opt$ cd /opt/mayhem-firmware/ user@host:/opt/mayhem-firmware$ mkdir build && cd build user@host:/opt/mayhem-firmware/build$ cmake .. user@host:/opt/mayhem-firmware/build$ make
ひとまずビルドできることまで確認する。
組み込まれている送信系アプリをメニューから外す。
user@host:/opt/mayhem-firmware/build$ cd ../firmware/application/ user@host:/opt/mayhem-firmware/firmware/application$ cp ui_navigation.cpp ui_navigation.cpp.org user@host:/opt/mayhem-firmware/firmware/application$ vi ui_navigation.cpp
編集は vi でなくてもよい。
183行目付近に以下のようなところがある。
/* TX ********************************************************************/
{"adsbtx", "ADS-B TX", TX, ui::Color::green(), &bitmap_icon_adsb, new ViewFactory<ADSBTxView>()},
{"aprstx", "APRS TX", TX, ui::Color::green(), &bitmap_icon_aprs, new ViewFactory<APRSTXView>()},
{"bht", "BHT Xy/EP", TX, ui::Color::green(), &bitmap_icon_bht, new ViewFactory<BHTView>()},
{"bletx", "BLE Tx", TX, ui::Color::green(), &bitmap_icon_btle, new ViewFactory<BLETxView>()},
{"morse", "Morse", TX, ui::Color::green(), &bitmap_icon_morse, new ViewFactory<MorseView>()},
//{"nuoptixdtmf", "Nuoptix DTMF", TX, ui::Color::green(), &bitmap_icon_nuoptix, new ViewFactory<NuoptixView>()},
{"ooktx", "OOK", TX, ui::Color::yellow(), &bitmap_icon_remote, new ViewFactory<EncodersView>()},
{"pocsagtx", "POCSAG TX", TX, ui::Color::green(), &bitmap_icon_pocsag, new ViewFactory<POCSAGTXView>()},
{"rdstx", "RDS", TX, ui::Color::green(), &bitmap_icon_rds, new ViewFactory<RDSView>()},
{"soundbrd", "Soundbrd", TX, ui::Color::green(), &bitmap_icon_soundboard, new ViewFactory<SoundBoardView>()},
{"sstvtx", "SSTV", TX, ui::Color::green(), &bitmap_icon_sstv, new ViewFactory<SSTVTXView>()},
{"touchtune", "TouchTune", TX, ui::Color::green(), &bitmap_icon_touchtunes, new ViewFactory<TouchTunesView>()},
これを、
/* TX ********************************************************************/
/*
{"adsbtx", "ADS-B TX", TX, ui::Color::green(), &bitmap_icon_adsb, new ViewFactory<ADSBTxView>()},
{"aprstx", "APRS TX", TX, ui::Color::green(), &bitmap_icon_aprs, new ViewFactory<APRSTXView>()},
{"bht", "BHT Xy/EP", TX, ui::Color::green(), &bitmap_icon_bht, new ViewFactory<BHTView>()},
{"bletx", "BLE Tx", TX, ui::Color::green(), &bitmap_icon_btle, new ViewFactory<BLETxView>()},
{"morse", "Morse", TX, ui::Color::green(), &bitmap_icon_morse, new ViewFactory<MorseView>()},
//{"nuoptixdtmf", "Nuoptix DTMF", TX, ui::Color::green(), &bitmap_icon_nuoptix, new ViewFactory<NuoptixView>()},
{"ooktx", "OOK", TX, ui::Color::yellow(), &bitmap_icon_remote, new ViewFactory<EncodersView>()},
{"pocsagtx", "POCSAG TX", TX, ui::Color::green(), &bitmap_icon_pocsag, new ViewFactory<POCSAGTXView>()},
{"rdstx", "RDS", TX, ui::Color::green(), &bitmap_icon_rds, new ViewFactory<RDSView>()},
{"soundbrd", "Soundbrd", TX, ui::Color::green(), &bitmap_icon_soundboard, new ViewFactory<SoundBoardView>()},
{"sstvtx", "SSTV", TX, ui::Color::green(), &bitmap_icon_sstv, new ViewFactory<SSTVTXView>()},
{"touchtune", "TouchTune", TX, ui::Color::green(), &bitmap_icon_touchtunes, new ViewFactory<TouchTunesView>()},
*/
のようにしてコメントアウトする。
user@host:/opt/mayhem-firmware/firmware/application$ cd ../../build/ user@host:/opt/mayhem-firmware/build$ make clean user@host:/opt/mayhem-firmware/build$ make
これでビルドが完了すること。
次に external なアプリについて。
user@host:/opt/mayhem-firmware/build$ ls -alF firmware/firmware_tar/APPS/ total 292 drwxr-xr-x 2 user user 4096 May 17 23:07 ./ drwxr-xr-x 4 user user 4096 May 17 23:07 ../ -rw-r--r-- 1 user user 20040 May 17 23:07 afsk_rx.ppma -rw-r--r-- 1 user user 14104 May 17 23:07 analogtv.ppma -rw-r--r-- 1 user user 7068 May 17 23:07 audio_test.ppma -rw-r--r-- 1 user user 21368 May 17 23:07 blespam.ppma -rw-r--r-- 1 user user 10008 May 17 23:07 calculator.ppma -rw-r--r-- 1 user user 11172 May 17 23:07 coasterp.ppma -rw-r--r-- 1 user user 2168 May 17 23:07 extsensors.ppma -rw-r--r-- 1 user user 992 May 17 23:07 font_viewer.ppma -rw-r--r-- 1 user user 19556 May 17 23:07 foxhunt_rx.ppma -rw-r--r-- 1 user user 14448 May 17 23:07 gpssim.ppma -rw-r--r-- 1 user user 16728 May 17 23:07 jammer.ppma -rw-r--r-- 1 user user 13512 May 17 23:07 keyfob.ppma -rw-r--r-- 1 user user 16680 May 17 23:07 lcr.ppma -rw-r--r-- 1 user user 14224 May 17 23:07 lge.ppma -rw-r--r-- 1 user user 17900 May 17 23:07 nrf_rx.ppma -rw-r--r-- 1 user user 16832 May 17 23:07 pacman.ppma -rw-r--r-- 1 user user 20748 May 17 23:07 spainter.ppma -rw-r--r-- 1 user user 5064 May 17 23:07 tetris.ppma -rw-r--r-- 1 user user 2836 May 17 23:07 wardrivemap.ppma user@host:/opt/mayhem-firmware/build$ ls -alF firmware/firmware_tar/FIRMWARE/ total 1032 drwxr-xr-x 2 user user 4096 May 17 23:07 ./ drwxr-xr-x 4 user user 4096 May 17 23:07 ../ -rw-r--r-- 1 user user 1048576 May 17 23:07 portapack-mayhem_dev.bin
マイクロSD カード向けに以上のようなファイルが作られているので、
- blespam.ppma
- gpssim.ppma
- jammer.ppma
- keyfob.ppma
- lcr.ppma
- lge.ppma
- spainter.ppma
- coasterp.ppma
を削除しておく。
最後にバージョン番号表示について。
cmake の前に
user@host:/opt/mayhem-firmware/build$ export VERSION_STRING="v2.0.1_rx"
のようなことをしておくと、それが反映されるらしい。
ちなみに元々使っていた blacklist は以下の通り。
ADS-B TX APRS TX BHT Xy/EP BLE Tx Morse OOK POCSAG TX RDS Soundbrd SSTV TouchTune BLESpam BurgerPgr GPSSim Jammer Keyfob TEDI/LCR LGE S.Painter