これが来たのでLチカしてみる*1。
Web Programmer
まず、Getting Started には、Web Programmerというツールから WebUSB API を使って Daisy にサンプルプログラムをロードする手順が載ってるけど、
たぶん Linux だと権限の問題でこういうエラーに遭遇する。
調べればすぐ解決しそうな気はするけど、これを使うのはどうせ初めだけですぐローカルでの開発に移るので、ここはすっ飛ばすことにした。 (たぶん macOS、Windows なら問題ないと思います)
ローカルの開発環境を整える
手順はここ。
Arch 系だとこんな感じになるはず。newlib
は組み込み用の標準ライブラリらしい。これがないとあとでコンパイルエラーが起こる。
sudo pacman -S dfu-util arm-none-eabi-gcc arm-none-eabi-newlib
次にソースコードを落とす。けっこう重い。
git clone --recurse-submodules https://github.com/electro-smith/DaisyExamples ~/path/to/DaisyExamples
cd ~/path/to/DaisyExamples
./rebuild_libs.sh
Blink をコンパイルして Daisy に読み込み
./seed/Blink
に移動して make
する。
$ make mkdir build arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DUSE_HAL_DRIVER -DSTM32H750xx -I../../libdaisy/core/ -I../../libdaisy -I../../libdaisy/src/ -I../../libdaisy/Drivers/CMSIS/Include/ -I../../libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../../libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I../../DaisySP -O2 -Wall -fdata-sections -ffunction-sections -MMD -MP -MF"build/system_stm32h7xx.d" -Wa,-a,-ad,-alms=build/system_stm32h7xx.lst ../../libdaisy/core/system_stm32h7xx.c -o build/system_stm32h7xx.o arm-none-eabi-g++ -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DUSE_HAL_DRIVER -DSTM32H750xx -I../../libdaisy/core/ -I../../libdaisy -I../../libdaisy/src/ -I../../libdaisy/Drivers/CMSIS/Include/ -I../../libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../../libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I../../DaisySP -O2 -Wall -fdata-sections -ffunction-sections -MMD -MP -MF"build/Blink.d" -fno-exceptions -fasm -finline -finline-functions-called-once -fshort-enums -fno-move-loop-invariants -fno-unwind-tables -Wa,-a,-ad,-alms=build/Blink.lst Blink.cpp -o build/Blink.o arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DUSE_HAL_DRIVER -DSTM32H750xx -I../../libdaisy/core/ -I../../libdaisy -I../../libdaisy/src/ -I../../libdaisy/Drivers/CMSIS/Include/ -I../../libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../../libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I../../DaisySP -O2 -Wall -fdata-sections -ffunction-sections -MMD -MP -MF"build/startup_stm32h750xx.d" ../../libdaisy/core/startup_stm32h750xx.s -o build/startup_stm32h750xx.o arm-none-eabi-g++ build/system_stm32h7xx.o build/Blink.o build/startup_stm32h750xx.o -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard --specs=nano.specs --specs=nosys.specs -T../../libdaisy/core/STM32H750IB_flash.lds -L../../libdaisy/build -L ../../DaisySP/build -ldaisy -lc -lm -lnosys -ldaisysp -Wl,-Map=build/Blink.map,--cref -Wl,--gc-sections -o build/Blink.elf arm-none-eabi-size build/Blink.elf text data bss dec hex filename 26280 36 14656 40972 a00c build/Blink.elf arm-none-eabi-objcopy -O ihex build/Blink.elf build/Blink.hex arm-none-eabi-objcopy -O binary -S build/Blink.elf build/Blink.bin
コンパイルできたら Daisy を USB ケーブルで接続する。(たぶん出荷時にはこれから読み込む Blink が載ってるため)接続した状態だと、下の写真で言うと左側の LED は常時点灯、右側は点滅している。 ここで、BOOT ボタン(写真右)を押したまま RESET ボタン(写真左)を押すと bootloader mode に切り替わる。切り替わるとこの写真のように点滅していた右側の LED は消える。
写真の状態になったら、コンソールに戻って make program-dfu
を実行するとプログラムが Daisy にロードされ、さっき消えていた LED が 1 秒に 1 回点灯するようになる。
$ make program-dfu dfu-util -a 0 -s 0x08000000:leave -D build/Blink.bin dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ dfu-util: Invalid DFU suffix signature dfu-util: A valid DFU suffix will be required in a future dfu-util release!!! Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 1024 DfuSe interface name: "Internal Flash " Downloading to address = 0x08000000, size = 26316 Download [=========================] 100% 26316 bytes Download done. File downloaded successfully dfu-util: Error during download get_status make: *** [../../libdaisy/core/Makefile:236: program-dfu] エラー 74
この最後のエラーにビクッとするが、wiki の説明によるとこれはエラーではないので無視していいらしい。なにそれやめて...
Error 74 is an error inside of the dfu-util program and does not indicate the success or failure of uploading your firmware.
まあ成功らしいのでとりあえず成功ってことで。