いろいろ試す63

ああもうこんな季節だ…忙しいのに頭が空回りで何もできていない…
とりあえずできることをできるだけ頑張っていく…!!


●ねむいさんのぶろぐhttps化
タイトルの通りでござます。私のぶろぐの母体"びぃブログ"の仕様が
常時https化したことにより私のぶろぐもhttpsに強制的に変わったの
ですが…

10年来使用してきたソースコードハイライト機能syntax highliterが
今回のhttps化で機能しなくなったのが判明し別のハイライト機能に
切り替えることにしました。それで見つかったのがhighlight.jsです。

かつてのsyntax highliterとほぼ同じ表示感覚で使用でき、表示方法も
ほぼ同じ感覚でした。9月末からhighlight.jsを導入しております。

こんな感じにソースコードの
//ハイライト表示ができます



しかしながらhtmlタグがsyntax highliterのころとは微妙に違うので
過去にさかのぼってブログの記事をせっせと修正しました…
くそ…もっと早くやっておけばよかった…
いちおうすべての記事でhighlight.jsに対応しましたが疲れた…


●OneDriveが仕様変更で古い共有リンク全滅
あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”!!!!
9月末くらいの仕様変更でおきぱにおいてあるSTM32のプロジェクトとか
OpenOCDバイナリとかのリンク全部不通になってたぁああああ!!!

というわけでこちらにも対応して全部共有リンクを再生成してソース
コード置き場
のリンクはちゃんとダウンロードできるよう修正いたし
ました…あとは過去のぶろぐ中に張った直リンクたちですが数が膨大に
あるのですがこちらもできる範囲で適宜修正していこうと思います…

また、記事を見直して10年以上前の古いものはリンク仕舞いする個所も
あるのでご注意願います…なるべく残せるようにがむばります…


●最新のarm-gccのgdbの挙動がおかしい?
う〜〜ん私のやり方が悪いのかどっちが悪いのか断定はできませんが
現時点で最新のArm GNU Toolchain Version 13.3.Rel1のgdbなんですが、
なんでか"tbreak main"が効かずデバッグ開始時にmain関数の先頭で
止まってくれません。


*問題の13.3.Rel1(GDB14.2)の場合

ソースコードはスタートアップの最初のところを示していますが
breakがかからずそのままプログラムが走ってしまいます。
↓ログはこんな感じ。Continuing...の後音沙汰がありません。
Using gdbinit file: C:¥Users¥nemuisan¥.codelite-gdbinit
Current working dir: R:¥STM32H563xxx_NUCLEO_20241101¥lib¥codelite_dbg¥codelite_dbg
Launching gdb from : ../../../
Starting debugger : C:¥Devz¥arm¥launchpad¥bin¥arm-none-eabi-gdb.exe --command="C:¥Users¥nemuisan¥.codelite-gdbinit" --interpreter=mi "main.elf"
Debug session started successfully!
GNU gdb (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24)) 14.2.90.20240526-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later ¥nThis is free software: you are free to change and redistribute it.¥nThere is NO WARRANTY, to the extent permitted by law.
¥nType "show copying" and "show warranty" for details.
This GDB was configured as "--host=i686-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:¥n <
http://www.gnu.org/software/gdb/documentation/>.¥n
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from main.elf...
Output radix now set to decimal 16, hex 10, octal 20.
`R:¥STM32H563xxx_NUCLEO_20241101¥main.elf' has changed; re-reading symbols.
Remote debugging using localhost:3333
Reset_Handler () at lib/CMSIS/Device/ST/STM32H5xx/Source/Templates/gcc/startup_stm32h563xx.s:59
59¥t ldr r0, =_estack
Successfully connected to debugger server
Applying breakpoints...
Applying breakpoints... done
Unable to match requested speed 480 kHz, using 200 kHz
Unable to match requested speed 480 kHz, using 200 kHz
[stm32h5x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0xf9000000 pc: 0x08053624 msp: 0x20050000, semihosting
Note: breakpoint 1 also set at pc 0x8000252.
Temporary breakpoint 2 at 0x8000252: file src/main.c, line 41.
Continuing...



*ひとつ前の13.2.Rel1(GDB13.2)の場合

ちゃんとmain関数の先頭で停止します。
↓ログはこんな感じ
Current working dir: R:¥STM32H563xxx_NUCLEO_20241101¥lib¥codelite_dbg¥codelite_dbg
Launching gdb from : ../../../
Starting debugger : C:¥Devz¥arm¥launchpad¥bin¥arm-none-eabi-gdb.exe --command="C:¥Users¥nemuisan¥.codelite-gdbinit" --interpreter=mi "main.elf"
Debug session started successfully!
GNU gdb (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.90.20231008-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later ¥nThis is free software: you are free to change and redistribute it.¥nThere is NO WARRANTY, to the extent permitted by law.
¥nType "show copying" and "show warranty" for details.
This GDB was configured as "--host=i686-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:¥n <
http://www.gnu.org/software/gdb/documentation/>.¥n
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from main.elf...
Output radix now set to decimal 16, hex 10, octal 20.
Remote debugging using localhost:3333
Note: automatically using hardware breakpoints for read-only addresses.
Reset_Handler () at lib/CMSIS/Device/ST/STM32H5xx/Source/Templates/gcc/startup_stm32h563xx.s:59
59¥t ldr r0, =_estack
Successfully connected to debugger server
Applying breakpoints...
Applying breakpoints... done
Unable to match requested speed 480 kHz, using 200 kHz
Unable to match requested speed 480 kHz, using 200 kHz
[stm32h5x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0xf9000000 pc: 0x08053624 msp: 0x20050000, semihosting
Note: breakpoint 1 also set at pc 0x8000252.
Temporary breakpoint 2 at 0x8000252: file src/main.c, line 41.
Continuing...
Temporary breakpoint 1, main () at src/main.c:41
41¥t¥tSet_System();


古いほうは古いほうでちょっと問題があってなんでかバイナリサイズが
256MBもあるデバッグビルドになっており、elfファイルの読み込み時間も
時間がかかります(私の環境ではそこまで気にならなかった)。


切り分けのためにFreddieChopin氏のarm-gcc野良ビルド"Bleeding-Edge"
を使ってみます…(32bit版が動作しなかったので64bit版を使います)


GDBが14.2になったのが原因なら同じ14.2なら再現性があるはずですが…

ちゃんとmain関数の先頭で停止しますね…。
Using gdbinit file: C:¥Users¥nemuisan¥.codelite-gdbinit
Current working dir: R:¥STM32H563xxx_NUCLEO_20241101¥lib¥codelite_dbg¥codelite_dbg
Launching gdb from : ../../../
Starting debugger : C:¥Devz¥arm¥launchpad¥bin¥arm-none-eabi-gdb.exe --command="C:¥Users¥nemuisan¥.codelite-gdbinit" --interpreter=mi "main.elf"
Debug session started successfully!
GNU gdb (bleeding-edge-toolchain) 14.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later ¥nThis is free software: you are free to change and redistribute it.¥nThere is NO WARRANTY, to the extent permitted by law.
¥nType "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:¥n <
http://www.gnu.org/software/gdb/documentation/>.¥n
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from main.elf...
Output radix now set to decimal 16, hex 10, octal 20.
Remote debugging using localhost:3333
Note: automatically using hardware breakpoints for read-only addresses.
Reset_Handler () at lib/CMSIS/Device/ST/STM32H5xx/Source/Templates/gcc/startup_stm32h563xx.s:59
59¥t ldr r0, =_estack
Successfully connected to debugger server
Applying breakpoints...
Applying breakpoints... done
Unable to match requested speed 480 kHz, using 200 kHz
Unable to match requested speed 480 kHz, using 200 kHz
[stm32h5x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0xf9000000 pc: 0x08053624 msp: 0x20050000, semihosting
Note: breakpoint 1 also set at pc 0x8000252.
Temporary breakpoint 2 at 0x8000252: file src/main.c, line 41.
Continuing...
Temporary breakpoint 1, main () at src/main.c:41
41¥t¥tSet_System();


FreddieChopin氏一番新しい版はGDB15.2まであがっておりましたので
こちらでも念のため確認してみます。

こちらもちゃんとmain関数の先頭で停止します。
Using gdbinit file: C:¥Users¥nemuisan¥.codelite-gdbinit
Current working dir: R:¥STM32H563xxx_NUCLEO_20241101¥lib¥codelite_dbg¥codelite_dbg
Launching gdb from : ../../../
Starting debugger : C:¥Devz¥arm¥launchpad¥bin¥arm-none-eabi-gdb.exe --command="C:¥Users¥nemuisan¥.codelite-gdbinit" --interpreter=mi "main.elf"
Debug session started successfully!
GNU gdb (bleeding-edge-toolchain) 15.2
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later ¥nThis is free software: you are free to change and redistribute it.¥nThere is NO WARRANTY, to the extent permitted by law.
¥nType "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:¥n <
http://www.gnu.org/software/gdb/documentation/>.¥n
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from main.elf...
Output radix now set to decimal 16, hex 10, octal 20.
Remote debugging using localhost:3333
Note: automatically using hardware breakpoints for read-only addresses.
Reset_Handler () at lib/CMSIS/Device/ST/STM32H5xx/Source/Templates/gcc/startup_stm32h563xx.s:59
59¥t ldr r0, =_estack
Successfully connected to debugger server
Applying breakpoints...
Applying breakpoints... done
Unable to match requested speed 480 kHz, using 200 kHz
Unable to match requested speed 480 kHz, using 200 kHz
[stm32h5x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0xf9000000 pc: 0x08053624 msp: 0x20050000, semihosting
Note: breakpoint 1 also set at pc 0x8000252.
Temporary breakpoint 2 at 0x8000252: file src/main.c, line 41.
Continuing...
Temporary breakpoint 1, main () at src/main.c:41
41¥t¥tSet_System();




ううむ…バージョンの違いで起こった現象でもなさそうですしビルド環境の
差なのでしょうか…あとARM公式のはx86版なのが気にかかりますが…
ひとまずはFreddieChopin氏の物を使ってその場をしのぎつつARM公式
次回リリース版のGDBの挙動を待つとしましょうか…
CodeLiteを使ったデバッグ方法を何とか安定させ正式に公開したいのですが
なかなか手ごわいです…

Go to top of page