のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

STM32CubeIde

STM32CubeIde HardFault その16 周辺のnewlibのソース

newlib/newlib/libc/stdio/findfp.c __sinit() /* * __sinit() is called whenever stdio's internal variables must be set up. */ void __sinit (struct _reent *s) { __sinit_lock_acquire (); if (s->__sdidinit) { __sinit_lock_release (); return; } …

STM32CubeIde HardFault その15 0x20030001

0x20030001

STM32CubeIde HardFault その14 Stackの内容

Idle Task IDLE Task Tmr Svc tmr svc myTask01 myTask01 myTask02 myTask02

STM32CubeIde HardFault その13

HardFaultになるまで、の経路。 異なるアドレスで起こっている。 原因が、よくわからない。 StartTask02>printf startTask02 puts puts puts_r puts_r _puts_r>sinit sinit _puts_r>sinit>sfp __sfp _puts_r>sinit>sfp>sfmoreglue sfmoreglue puts_r>sinit>s…

STM32CubeIde HardFault その12

STM32CubeIde HardFault その11

sfpの中で死んでるのかな?

STM32CubeIde HardFault その10 STM32CubeIde > "Hard Fault" >"Instruction Stepping Mode"

Instruction Stepping Modeを有効にすると、 Disassemblyの画面で、1命令づつ、実行できるようになる。

STM32CubeIde HardFault その9 impreciserr newlib hard fault

LR pc hiro99ma.blogspot.com community.st.com

STM32CubeIde HardFault その8 hardfault

prvPortStartFirstTaskの中で、hardFaultになっているのかな? hardFault vPortSVCHandlerにブレークポイントを置く。 vPortSVCHandler ステップインすると、MyTask2の先頭へいく。 MyTask2 ステップイン vPortRaiseBASEPRI ステップイン printf ステップイン…

STM32CubeIde HardFault その7 _puts_r

0x80041f0 _sinit puts_r 1づれているようにみえる。 なんでだろう? 080041f1 sinit elfのlistを見ると、偶数番地に__sinitがある。 080041f0 elf.list 080041f0 <__sinit>: 80041f0: 6983 ldr r3, [r0, #24] 80041f2: b510 push {r4, lr} 80041f4: 4604 mov r4, r0 </__sinit>…

STM32CubeIde HardFault その6 STM32CubeIde HardFault_Handler prvPortStartFirstTask

prvPortStartFirstTask

STM32CubeIde HardFault その5 error: expected expression before ')' token

compile error ../Src/main.c: In function 'main': ../Src/main.c:40:26: error: expected expression before ')' token printf(fmt, __VA_ARGS__); \ ^ ../Src/main.c:141:4: note: in expansion of macro 'safe_printf' safe_printf("Main:Hello World\n"…

STM32CubeIde HardFault その4 stack over flow check

stackoverflow stackoverflow stackovf cmsis_os2.c

STM32F429ZI semihostingの設定 まとめ

main.c extern void initialise_monitor_handles(void); initialise_monitor_handles(); settings "Libraries" rdimon "--specs=rdimon.specs" Debug config ST-Link(OpenOCD) "monitor arm semihosting enable" syscall.c unused yuqlid.hatenablog.com os…

STM32CubeIde F401RE FreeRTOSなし SemiHosting

FreeRTOSなしのとき、SemiHostingでprintfが表示された。 capture Open On-Chip Debugger 0.10.0+dev-00021-g524e8c8 (2019-06-12-13:13) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html srst_only separate sr…

STM32CubeIde HardFault その3 vTaskSwitchContext

vTaskSwitchContext asm c

STM32CubeIde HardFault その2 printf

hello 0x08009af0に、putsがある。 puts

STM32CubeIdeで、SemiHostingは、ST-Link(OpenOCD)

Debug ProbeをST-LINK(OpenOCD)にしたら、動くようになった。 openocd yukblog.net 赤い文字で出るようになる。 Open On-Chip Debugger 0.10.0+dev-00021-g524e8c8 (2019-06-12-13:13) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/…

STM32CubeIde GDB Hardware Debuggingの場合、うまくいかない

GDB Hardware Debuggingの場合、エラーで終了してしまう。 うまくいかない。 debugger ”use remote target"にチェックを入れないと、エラーすらでない。 以下のエラーになる。 Failed to execute MI command: target remote localhost:61234 エラーの詳細は…

STM32CubeIde Debug monitor arm semihosting enable

monitor arm https://yukblog.net/stm32cubeide-printf-semihosting/ failed ccwo.hatenablog.jp Error in final launch sequence: Failed to execute MI command: monitor arm semihosting enable Error message from debugger back end: Protocol error wi…

STM32CubeIde "--specs=rdimon.specs"を追加したら、”multiple definition”のエラーになった。

"--specs=rdimon.specs"を追加したら、multiple definitionのエラーになった。 arm-none-eabi-gcc -o "Nucleo-F429ZI.elf" @"objects.list" -lrdimon -mcpu=cortex-m4 -T"C:\Users\m_fujii\Documents\0500_BitBucket\0600_STM32CubeIde\ws_1.0.1\Nucleo-F429…

STM32CubeIde HardFault その1 printfにStepInすると、hardFault_Handlerに入る

タスクのスタックサイズを2048から4096に変えてみる。 フォルトアナライザ memory browser

STM32CubeIde Compile option

-fstack-usage がデフォルトで入っていた。 arm-none-eabi-gcc "../Src/syscalls.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DSTM32 -DSTM32F429ZITx -DSTM32F4 -DDEBUG -DNUCLEO_F429ZI -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage…

STM32CubeIde Project References

ProjectReferencesで、スタティックライブラリを参照。 Project References リンクするライブラリが見つからないとき、こっちも、必要だった。 Path

STM32CubeIde Preprocessorの設定

preprocess

STM32CubeIdeでStatic Libraryを作る方法

STM32 Projectを選択する STM32 Project Boardを選ぶ Boardを選ぶ Static Libraryを選ぶ static library DefaultのStatic Libraryのプロジェクトができる DefaultのStatic Libraryのプロジェクトができる デフォルトのファイル /** ************************…

FreeRTOSをEnableにしたときのStatic Stack Analyzer

FreeRTOSをEnableにしたとき

STM32CubeIde Static Stack Analyzer

OSなしのとき、 テストの関数を呼び出してみた。 Reset_Handlerの下にmain関数がぶら下がるようだ。 今回テストしたのは、testEngine関数。 funcMulAddは普通の関数。 funcAdd2は再帰の関数。 再帰の関数funcAdd2を呼んでみた。 実行を完了しても、再帰関数…