To content | To menu | To search

portapack-mayhem/mayhem-firmware のビルド

2024 Apr 30 に試した内容

基本的には Using ARM on Debian の内容を実行。

環境はこちら

(2024 May 1st 追記:Ubuntu で生成した bin ファイルは実機で Bad Firmware と判定されてしまった。Debian 10 で生成したものは動いた)

$ uname -a
Linux ubuntu 5.15.146.1-microsoft-standard-WSL2 #1 SMP Thu Jan 11 04:09:03 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Debian の環境

$ uname -a
Linux xxxx 5.15.146.1-microsoft-standard-WSL2 #1 SMP Thu Jan 11 04:09:03 UTC 2024 x86_64 GNU/Linux

$ 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/"
$ sudo apt update
$ sudo apt-get install -y git tar wget dfu-util cmake python3 bzip2 lz4 curl hackrf python3-distutils python3-setuptools
$ git config --global core.autocrlf false
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; python3 get-pip.py
$ export PATH=$PATH:/home/user/.local/bin
$ pip install pyyaml
$ sudo mkdir /opt/build
$ cd /opt/build
$ sudo wget -O gcc-arm-none-eabi.tar.bz2 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2?revision=05382cca-1721-44e1-ae19-1e7c3dc96118&la=en&hash=D7C9D18FCA2DD9F894FD9F3C3DC9228498FA281A'
$ sudo mkdir armbin
$ sudo tar --strip=1 -xjvf gcc-arm-none-eabi.tar.bz2 -C armbin
$ echo 'PATH=/opt/build/armbin/bin:/opt/build/armbin/lib:/home/user/.local/bin:$PATH' >> ~/.bashrc
$ cd /opt
$ sudo git clone --recurse-submodules https://github.com/portapack-mayhem/mayhem-firmware.git
$ sudo chown -R user:user /opt/mayhem-firmware
$ cd /opt/mayhem-firmware/
$ mkdir build
$ cd build
$ source ~/.bashrc
$ cmake ..
$ make
$ make build_tests
$ apt search g++
$ sudo apt install -y g++
$ make build_tests

最後のテストでは g++ が無いといわれ、インストールして再度実行したら以下のようなエラーになった。

$ make build_tests
[  0%] Building CXX object firmware/test/baseband/CMakeFiles/baseband_test.dir/main.cpp.obj
[  0%] Building CXX object firmware/test/baseband/CMakeFiles/baseband_test.dir/dsp_fft_test.cpp.obj
[  0%] Building CXX object firmware/test/baseband/CMakeFiles/baseband_test.dir/__/__/common/dsp_fft.cpp.obj
[  0%] Linking CXX executable baseband_test
[  0%] Built target baseband_test
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/main.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_basics.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_circular_buffer.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_convert.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_file_reader.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_file_wrapper.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_freqman_db.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_mock_file.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_optional.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_string_format.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/test_utility.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/__/__/application/file_reader.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/__/__/application/freqman_db.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/__/__/common/utility.cpp.obj
/opt/mayhem-firmware/firmware/common/utility.cpp: In function ‘uint32_t simple_checksum(uint32_t, uint32_t)’:
/opt/mayhem-firmware/firmware/common/utility.cpp:242:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  242 |         checksum += *(uint32_t*)(buffer_address + i);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/__/__/application/file.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/__/__/application/string_format.cpp.obj
[  0%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/__/__/application/tone_key.cpp.obj
[100%] Building CXX object firmware/test/application/CMakeFiles/application_test.dir/linker_stubs.cpp.obj
[100%] Linking CXX executable application_test
/usr/bin/ld: CMakeFiles/application_test.dir/__/__/application/freqman_db.cpp.obj: warning: relocation against `freqman_dir' in read-only section `.text'
/usr/bin/ld: CMakeFiles/application_test.dir/__/__/application/freqman_db.cpp.obj: in function `get_freqman_path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
freqman_db.cpp:(.text+0x43a): undefined reference to `freqman_dir'
/usr/bin/ld: CMakeFiles/application_test.dir/__/__/application/file.cpp.obj: in function `file_update_date(std::filesystem::path const&, FATTimestamp)':
file.cpp:(.text+0x19d0): undefined reference to `f_utime'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make[3]: *** [firmware/test/application/CMakeFiles/application_test.dir/build.make:369: firmware/test/application/application_test] Error 1
make[2]: *** [CMakeFiles/Makefile2:2029: firmware/test/application/CMakeFiles/application_test.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:2010: firmware/test/CMakeFiles/build_tests.dir/rule] Error 2
make: *** [Makefile:953: build_tests] Error 2

マイクロSD カードは、最初 KIOXIA の 64GB SDXC を試したもののやはり容量がだめ。次に試したのが Panasonic の 32GB SDHC で、容量は大丈夫のはずなのに TEST でコンペアエラーになった。最後に KIOXIA の 16GB SDHC を買ってきたところ、これは TEST も正常終了して問題無く使えているよう。

(2024/May/16) クロスコンパイラはこちらが良いかもしれない。

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

Add a comment

HTML code is displayed as text and web addresses are automatically converted.

They posted on the same topic

Trackback URL : https://www.pseudomoon.jp/dotclear/index.php?trackback/213

This post's comments feed