のねのBlog

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

TouchGfx font class

www.touchgfx.com 裏で、Freetype touchgfx.zendesk.com

vcom

prvPortStartFirstTaskのあと、HardFault

prvPortStartFirstTaskで、svc 0のあと、HardFaultになる。 prvPortStartFirstTask static void prvPortStartFirstTask( void ) { __asm volatile( " ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */ " ldr r0, [r0] \n" …

Timebase SourceをTIM14に変更

Timebase SourceをTIM14 Timebase SourceをTIM14 Timebase code generation xPortSysTickHandlerが呼ばれるようになった。 void xPortSysTickHandler( void ) { /* The SysTick runs at the lowest interrupt priority, so when this interrupt executes all…

CALL HAL handlerを有効にすると

port.c void xPortSysTickHandler( void ) { /* The SysTick runs at the lowest interrupt priority, so when this interrupt executes all interrupts must be unmasked. There is therefore no need to save and then restore the interrupt mask value a…

listCURRENT_LIST_LENGTH のところから、抜けない

#if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) { if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) { taskYIELD(); } else { mtCOVERAGE_TEST_MARKER(); } } #endif /* ( (…

タスクのスタックサイズをわざと、小さくしたとき

Stackをわざと、必要な容量より小さい、128に設定して動作させてみた。 myTask01のスタック領域が壊れている。 HardFaultになった。 StaStack破壊のときの例 必要な容量 タイマタスクのスタックサイズが200のとき、myTask01のTCBが壊れている。 mytask01のス…

STM32CubeIde HardFault その18 Stackの最後の位置+1に書き込めるようにしてみる。

STM32F429ZITX_FLASH.ld STACKの最後に+1した領域に、値を書きにいっているため、HardFaultになっているのでは?と思った。 リンカのファイルを以下のように変更して、最後の位置+1に書き込んでも問題ないようにしてみた。 すると、HardFaultがでなくな…

configUSE_NEWLIB_REENTRANT

configUSE_NEWLIB_REENTRANT mcuoneclipse.com

STM32CubeIde HardFault その17

cantwriteの中で、__swsetup_rを呼んでいる。 /* Return true and set errno and stream error flag iff the given FILE cannot be written now. */ #define cantwrite(ptr, fp) \ ((((fp)->_flags & __SWR) == 0 || (fp)->_bf._base == NULL) && \ __swsetu…

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

Nucleo-F429ZI-Os3.elf section `._user_heap_stack' will not fit in region `RAM'

arm-none-eabi-gcc -o "Nucleo-F429ZI-Os3.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\m_fujii\Documents\0500_BitBucket\0600_STM32CubeIde \ws_1.0.1\Nucleo-F429ZI-Os3 \STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="Nucleo-F429ZI-Os…

sinit newlib

__sinit github.com

STM32CubeIde HardFault その8 hardfault

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

librdimon.aの場所

librdimon.a

elfのmap

このフォルダにライブラリの実体がある。 c:/st/stm32cubeide_1.0.1/stm32cubeide/plugins/ com.st.stm32cube.ide.mcu.externaltools. gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/ tools/bin/../lib/gcc/arm-none-eabi/7.3.1/ ../../..…

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>…

timer task stack size 256

timer task 固定サイズ 固定サイズ

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

NVIC

NVIC

When FreeRTOS is used, it is strongly recommended to use a HAL timebase source other than the Systick.

warning When FreeRTOS is used, it is strongly recommended to use a HAL timebase source other than the Systick. The HAL timebase source can be changed from the Pinout tab under SYS