のねのBlog

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

HardFault

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

STM32CubeIde HardFault その3 vTaskSwitchContext

vTaskSwitchContext asm c

STM32CubeIde HardFault その2 printf

hello 0x08009af0に、putsがある。 puts

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

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