2024年2月3日土曜日

candleLightファームウェアをWindowsでビルドしてみた。

 candleLightはSTM32F0シリーズのUSB2CANとかで使えるファームウェアなんだけど、STM32G431とかでも使えるように改良してる人がいたのでWindowsでビルドしてみた。

Windows側で必要なのはcmakeとmingw64(makeに使用)とgcc-arm-none-eabi-8-2019-q3-update-win32-sha2.exeだった。

とりあえずこれらをインストールして、gcc-arm-none-eabi-8-2019-q3-update-win32-sha2.exe以外は環境変数に入れて呼び出せるようにしておく。

pgreenlandさんのcandleLightブランチをとりあえずZipでダウンロードして展開。

cmakeフォルダの中のgcc-arm-none-eabi-8-2019-q3-update.cmakeをWindows用に少し変更

set(TOOLCHAIN gcc-arm-none-eabi-8-2019-q3-update)
set(CMAKE_MAKE_PROGRAM "C:/mingw64/bin/mingw32-make.exe")

set(TOOLCHAIN_BIN_DIR "C:/Program Files (x86)/GNU Tools ARM Embedded/8 2019-q3-update/bin")

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER "${TOOLCHAIN_BIN_DIR}/arm-none-eabi-gcc.exe" CACHE INTERNAL "")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_BIN_DIR}/arm-none-eabi-g++.exe" CACHE INTERNAL "")

set(CMAKE_EXE_LINKER_FLAGS "" CACHE INTERNAL "")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

SET (CMAKE_C_COMPILER_WORKS 1)
SET (CMAKE_CXX_COMPILER_WORKS 1)

コマンドプロンプトでCMakeLists.txtがあるディレクトリに移動して

mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/gcc-arm-none-eabi-8-2019-q3-update.cmake -G "MinGW Makefiles"
make

こんな感じでビルドできた。WindowsでのポイントはcmakeがnmakeでVisualStudioの環境を作ってしまうようなデフォルト設定になっているので、-G "MinGW Makefiles"をつけるところ。一旦このオプションをつけないで実行してしまうとエラーが出てしまうのでbuildフォルダを削除してやり直し。一番ココでハマった…

というわけでCANable2_MKS_fw.binってのがSTM32G431用のバイナリファイル。しかもこれ、CANable2の公式ファームウェアではCAN FD対応していないらしいけどこっちは対応してるっぽい。

Windows上だとCangarooで使う場合はデフォルトでインストールされるWINUSBドライバでいいけども、Python-CANとかでgs_usbを使う場合はZadigとかでlibusbKに変更する必要がある。その時は(Interface0)が付いてる方だけど変更すること。(OptionのList All Deviceを有効にしないと出ないかも)

ファームウェアを書き込むときは前はdfu-utilでやっていたけど、ブラウザから書き込みができるWebUSB DFUを使うと便利かも。Vender IDは0x0483。




0 件のコメント:

コメントを投稿