いろいろ試す46(+2020年反省会)

ねむいさんは悪くない全部コロナのせい全部!
反省会終了!





さて本題に入ります…




●OpenOCD最近の更新トピック
日々着実に機能を増強しているOpenOCD。ここ数か月の更新でめぼしい更新を
ピックアップしてみます。

1.QSPI/OCTOSPIのサポートがついに公式実装!!
何年待たせたんだYO!
ねむいさん待望のQSPI-ROMのOpenOCDからの読み書き機能がようやく公式に
マージされる運びとなりました。ねむいさんのSTM32F7やH7の作例でmakefile
みたら気付いた方もいると思います。一応以前からパッチを当てたビルドは
公開していたのですがなかなかにっちにな需要だったので表の出さずにして
おきました。

公式マージにあたり、若干の動かし方の差異が発生してましたのでこちらで
吸収しております。

makefileは516行目から、

実際に書き込みに使用するOpenOCDのcfgは私のバイナリ同梱のstm32h7disco_dap_flash.cfg
の170行目くらいを参考にしてください。

実際にQSPI-ROMに読み書きした様子はこんな感じです。
↓mass_eraseの時

> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/stm32h7disco_dap_flash.cfg -c "eraser_qspi"
Open On-Chip Debugger 0.11.0-rc1+dev-00010-gc69b4deae (2020-12-27-08:37)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
force hard breakpoints
Info : STLINK V3J4M2 (API v3) VID:PID 0483:374E
Info : Target voltage: 3.219171
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : clock speed 1000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x6ba02477
Info : stm32h747xih6.cpu0: hardware has 8 breakpoints, 4 watchpoints
Error: stm32h747xih6.cpu0 -- clearing lockup after double fault
Polling target stm32h747xih6.cpu0 failed, trying to reexamine
Info : stm32h747xih6.cpu0: hardware has 8 breakpoints, 4 watchpoints
Info : starting gdb server for stm32h747xih6.cpu0 on 3333
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Info : flash1 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
Info : flash2 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:02

↓FontX2ファイルなどのバイナリファイルを書き込んだ時
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/stm32h7disco_dap_flash.cfg -c "mt_flash_qspi lib/FONTX2/inc/fonts/ILFONT/ILGZ24XF.FNT 0x90010000"
Open On-Chip Debugger 0.11.0-rc1+dev-00010-gc69b4deae (2020-12-31-18:42)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
force hard breakpoints
Info : STLINK V3J4M2 (API v3) VID:PID 0483:374E
Info : Target voltage: 3.217121
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : clock speed 1000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x6ba02477
Info : stm32h747xih6.cpu0: hardware has 8 breakpoints, 4 watchpoints
Info : starting gdb server for stm32h747xih6.cpu0 on 3333
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08050484 msp: 0x20020000
Info : flash1 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
Info : flash2 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
Info : Device: STM32H74x/75x
Info : flash size probed value 2048
Info : STM32H7 flash has dual banks
Info : Bank (0) size is 1024 kb, base address is 0x08000000
Info : Device: STM32H74x/75x
Info : flash size probed value 2048
Info : STM32H7 flash has dual banks
Info : Bank (1) size is 1024 kb, base address is 0x08100000
Info : wrote 636586 bytes from file lib/FONTX2/inc/fonts/ILFONT/ILGZ24XF.FNT in 17.585402s (35.351 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:19



QSPIの読み書きに関しての注意点ですが現状は完全安定とは言えず、消去や
書き込みを行う度に電源を投入しなおさなければなりません。
いずれは解決されるでしょうがこの点だけはご留意ください。


2.ST-Linkで16bitのメモリ読み書きが実装される
何年待たせたんだYO!もう7年くらいたってるYO!
今更もう遅いよぅ!!!

FM3のフラッシュコントローラたたく以外に何の用があるのか!?
今となっては使い道が分かりません…

●arm-gcc定期更新
arm-gccも12月に更新掛かってました
主な変更点はついにGCC10.0になったことでしょうか。

とりあえずSTM32H7のビルドサイズの比較…
↓前回の
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2019-q3-update) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
Copyright (C) 2018 Free Software Foundation, Inc.
Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 768116 0 768116 bb874 main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
765464 2652 2383344 3151460 301664 main.elf
main.elf :
section size addr
.text 0xbaca0 0x8000000
.ctors 0x0 0x80baca0
.dtors 0x0 0x80baca0
.ARM.exidx 0x8 0x80baca0
.itcm 0x170 0x0
.data 0xa5c 0x24000000
.bss 0x11c68 0x24000a60
.heap 0x0 0x240126c8
.dtcm 0x20c 0x20000000
.stack 0x4 0x2000020c
.ram1_d2 0x0 0x30000000
.ram2_d2 0x0 0x30020000
.ram3_d2 0x0 0x30040000
.ram4_d3 0x0 0x38000000
.batram 0x0 0x38800000
.extram 0x233f78 0xd0000000
.qspirom 0x0 0x90000000
.comment 0x76 0x0
.debug_aranges 0x4d48 0x0
.debug_info 0x186579 0x0
.debug_abbrev 0x1f290 0x0
.debug_line 0xba997 0x0
.debug_frame 0x16ca8 0x0
.debug_str 0x1c2fb 0x0
.debug_loc 0x1439d1 0x0
.ARM.attributes 0x32 0x0
.debug_ranges 0x1dc00 0x0
Total 0x6fab68



> Process Exit Code: 0
> Time Taken: 02:09

↓今回の
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10-2020-q4-major) 10.2.1 20201103 (release)
Copyright (C) 2020 Free Software Foundation, Inc.
Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 770912 0 770912 bc360 main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
768260 2652 2383336 3154248 302148 main.elf
main.elf :
section size addr
.text 0xbb780 0x8000000
.ctors 0x0 0x80bb780
.dtors 0x0 0x80bb780
.ARM.exidx 0x8 0x80bb780
.itcm 0x17c 0x0
.data 0xa5c 0x24000000
.bss 0x11c60 0x24000a60
.heap 0x0 0x240126c0
.dtcm 0x20c 0x20000000
.stack 0x4 0x2000020c
.ram1_d2 0x0 0x30000000
.ram2_d2 0x0 0x30020000
.ram3_d2 0x0 0x30040000
.ram4_d3 0x0 0x38000000
.batram 0x0 0x38800000
.extram 0x233f78 0xd0000000
.qspirom 0x0 0x90000000
.comment 0x4d 0x0
.debug_aranges 0x4d20 0x0
.debug_info 0x118dd1 0x0
.debug_abbrev 0x18cba 0x0
.debug_line 0xb91af 0x0
.debug_frame 0x13678 0x0
.debug_str 0x1bc3c 0x0
.debug_loc 0x14a497 0x0
.ARM.attributes 0x32 0x0
.debug_ranges 0x1cd68 0x0
Total 0x687fd4



> Process Exit Code: 0
> Time Taken: 02:07

う”…サイズ増えてる…

実はちょっと困ったことがあってGCC10.0に上がったせいでChaN氏のFatFsで
ワーニングが出ちゃっています。

↑2048行目でワーニングが出てしまっています。
これは配列のインデックスが0からさらにデクリメントされる
コードが実行されると推測されてときに発動されるようです。
	/* itoa (hexdecimal) */
i = 7;
do {
c = (BYTE)((seq % 16) + '0');
if (c > '9') c += 7;
ns[i--] = c;
seq /= 16;
if(i==0) break; /* Nemui */
} while (seq);
ns[i] = '~';

↑インデックスが0の時の判定文追加してお茶を濁してます…
ChaNさんこれ見てたら効果的なワーニング対策お願いします!11!!!


あとこれは気にしないでいいらしいです…


それとSTM32F7discoveryにおいて最適化の問題に引っかかって正常に
LCDが表示されなくなる現象が発生してしまったのですがpragmaで最適化を
切って対処してます…もっといい方法があるかもしれませんが今はこれが
最適解…



●秋月でSTM32G0、STM32L0追加!!
なんと秋月さんよりSTM32L0と8pinのSTM32G0が追加されてます!!


実はすでに入手して動作確認も行ってますがここで話すには多すぎる
内容ですので次回以降にこうご期待!!!!


●安価なAVR128DA48評価ボードゲッツ!

AVRの正当進化系のAVR128シリーズ。
AVR128DA48の超格安の評価ボードを手に入れました!!
その名もAVR128DA48 Curiosity Nano!!!
しかも電圧変換機能を持ったmEDBGつき!!

もうAVRライタは作る時代から安価で買う時代に変遷してしまいましたね〜

ちなみにavrdudeはビルドインされたmEDBGとAVR128シリーズには対応して
なかったのですが神パッチによって自由自在にできるようになっております!!

こちらもSTM32G0と同じく来年みっっっっっっっっっちりと特集させてもらい
ますので期待してお待ちください!!

と言いたいところですが先行でAVR128DA48 Curiosity Nanoに対応した
avrdudeを公開しております!!!
興味がある方はどんどん使ってください!!!









…というわけで今年も駆け込みでばたばたしてしまいましたがたくさん
買い込んだマイコンやセンサ基板とかの評価も来年も進めていきたいと思います…
皆さまもよいお年を〜


















>ねむいさん‥‥DropBoxの見えなくなった画像ノホウハ…
来年から本気出す!!!!!1!!

Go to top of page