arm-none-eabi-gcc 13.2がリリースされたので、DAPLinkをビルドしてみたのですが、謎のリンクエラーが表示され、ビルドする事が出来ませんでした。
色々と調べてみたところ、クローズされたissueに回避方法の情報がありました。
https://github.com/ARMmbed/DAPLink/issues/1003#issuecomment-1412320300
なるほど、known issueだったようです。せっかくなので、この方法でビルドを試みてみました。
回避方法を適用したブランチは、こちら。
https://github.com/toyowata/DAPLink/tree/gcc_13_build
DAPLinkのビルド
では、DAPLinkをビルドします。ここでは、mbed LPC1114FN28ボード用にビルドします。
$ git clone -b gcc_13_build https://github.com/toyowata/DAPLink my_daplink
$ cd my_daplink
$ ./tools/progen_compile.py -t make_gcc_arm lpc11u35_ssci1114_if
Preprocessing ../../../source/hic_hal/nxp/lpc11u35/gcc/lpc11u35.ld
Compiling ../../../source/board/ssci1114.c
Compiling ../../../source/daplink/HardFault_Handler.c
(中略)
Compiling ../../../source/usb/winusb/usbd_core_winusb.c
Assembling ../../../source/hic_hal/nxp/lpc11u35/gcc/startup_LPC11Uxx.S
Assembling ../../../source/rtos2/RTX/Source/GCC/irq_cm0.S
Linking build/lpc11u35_ssci1114_if.elf
Memory region Used Size Region Size %age Used
m_interrupts: 1 KB 1 KB 100.00%
m_text: 54648 B 59 KB 90.45%
m_cfgrom: 10 B 4 KB 0.24%
m_data: 7252 B 7904 B 91.75%
m_cfgram: 142 B 256 B 55.47%
m_data_2: 2 KB 2 KB 100.00%
m_usb_ram: 40 B 2 KB 1.95%
text data bss dec hex filename
55664 1224 8276 65164 fe8c build/lpc11u35_ssci1114_if.elf
55664 1224 8276 65164 fe8c (TOTALS)
Converting build/lpc11u35_ssci1114_if.hex
Converting build/lpc11u35_ssci1114_if.bin
build/lpc11u35_ssci1114_if_crc
board_id None
family_id None
bin_offset None
Start 0x0, Length 0xde38, CRC32 0x07a97979
無事にビルドできました。
サイズ比較
参考までにビルドされたイメージサイズを比較してみました。少しだけ、小さくなっていました。
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)
text data bss dec hex filename
55748 1320 8280 65348 ff44 build/lpc11u35_ssci1114_if.elf
55748 1320 8280 65348 ff44 (TOTALS)
arm-none-eabi-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009
text data bss dec hex filename
55676 1224 8276 65176 fe98 build/lpc11u35_ssci1114_if.elf
55676 1224 8276 65176 fe98 (TOTALS)
ボードへの書き込み
ターゲットボードに書き込みを行います。ISPボタンを押しながら、USBケーブルでPCと接続します(CRP DISABLDというボリュームがマウントされます)。
古いファームウェアを削除します。
$ rm -rf /Volumes/CRP\ DISABLD/firmware.bin
新しいDAPLinkを書き込みます。
$ cp ./projectfiles/make_gcc_arm/lpc11u35_ssci1114_if/build/lpc11u35_ssci1114_if_crc.bin /Volumes/CRP\ DISABLD
$ sync
USBケーブルを再接続して、DAPLinkが更新されたことを確認します。
$ cat /Volumes/MBED/DETAILS.TXT
# DAPLink Firmware - see https://daplink.io
Build ID: 0246-1329-g8f927427 (gcc)
Unique ID: 1114000119e5e91e00000000000000000000000097969902
HIC ID: 97969902
Auto Reset: 1
Automation allowed: 1
Overflow detection: 1
Incompatible image detection: 0
Page erasing: 0
Daplink Mode: Interface
Interface Version: 0259
Git SHA: 8f927427df0982d29b91d360d790ae3e2a095f4f
Local Mods: 0
USB Interfaces: MSD, CDC, HID, WebUSB
Interface CRC: 0xc20904fd
Remount count: 0
URL: https://mbed.org/device/?code=1114000119e5e91e00000000000000000000000097969902?version=0259?target_id=@T
以上です。