STM32 startup kod

Jan Waclawek konfera na efton.sk
Středa Srpen 14 09:48:18 CEST 2019


No tak skusit inu verziu prekladaca resp. prekladac z ineho zdroja, moze
mat zle prelozene kniznice, zle nastavene specs... vsetko veci ktorym
nerozumiem a nedotykam sa ich. Pisete, ze je to starsi projekt, tak mozno
tou verziou prekladaca ktorou bol povodne prekladany.

wek


----- Original Message ---------------

>To me napadlo ale nastaveni linkeru by snad melo byt OK, typ jadra i 
>thumb tam je.
>
>-mcpu=cortex-m3 -mthumb -mfloat-abi=softfp -specs=nosys.specs 
>-specs=nano.specs -T"../STM32F101RBTx_FLASH_.ld" -Wl,-Map=output.map 
>-Wl,--gc-sections -lm
>
>Ale skutecne mi to tak take pripada. Jsem z toho jelen, odkazy v sekci  
>.init_array a .fini_array take vedou na nesmyslny kod...
>
>
>Dne 14.08.2019 v 9:18 Jan Waclawek napsal(a):
>> Nie je to nahodou ARM binar (t.j. ne-Thumb)?
>> Pri linkovani boli pouzite prepinace pre thumb a prislusny typ jadra?
>>
>>> A taky by me zajimalo, proc se mi vzdycky po vygenerovani novych
>>> zdrojaku z CubeMX znici .LD soubor
>> To je zasluzeny trest za pouzivanie CubeMX.
>>
>> wek
>>
>> ----- Original Message ---------------
>>> Zdravim, vzal jsem do ruky starsi projekt s procesorem STM32F101RBT6, v
>>> CubeMX nakonfiguroval a vygeneroval projekt s HAL. Potud vse OK. Preklad
>>> nesel, dokud jsem nevlozit do nastaveni projektu definici __SOFTFP__,
>>> budiz, drobna chybka...
>>>
>>> Ale program stejne nefunguje, zhavaruje volani fce  ve startup kodu
>>>
>>> bl __libc_init_array
>>>
>>> ktera je ponekud nesmyslna (asi v sekci .preinit_array nic neni ale
>>> funkce prilinkovana dle map souboru je) a vypada takto - druha instrukce
>>> skace nekam doprostred fce... Kod i jinak nedava smysl.
>>>
>>> __libc_init_array:
>>> 080013f0:   adds    r0, #112        ; 0x70
>>> 080013f2:   b.n     0x8000f34 <HAL_RTC_SetDate+68>     //!!!!! nesmysl?
>>> 080013f4:   eors    r0, r6
>>> 080013f6:   stmdb   sp!, {r12, lr}
>>> 080013fa:   b.n     0x8001b3e
>>>
>>> ...
>>>
>>> Sekce z .map souboru
>>>
>>> .text.__libc_init_array
>>>                  0x080013f0       0x88
>>> c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825/tools/compiler/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib\libc_nano.a(lib_a-init.o)
>>>                  0x080013f0                __libc_init_array
>>>
>>> .preinit_array  0x080014d4        0x0
>>>                  0x080014d4                PROVIDE
>>> (__preinit_array_start = .)
>>>   *(.preinit_array*)
>>>                  0x080014d4                PROVIDE (__preinit_array_end = .)
>>>
>>> .init_array     0x080014d4        0x4
>>>                  0x080014d4                PROVIDE (__init_array_start = .)
>>>   *(SORT_BY_NAME(.init_array.*))
>>>   *(.init_array*)
>>>   .init_array    0x080014d4        0x4
>>> c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825/tools/compiler/bin/../lib/gcc/arm-none-eabi/7.3.1/crtbegin.o
>>>                  0x080014d8                PROVIDE (__init_array_end = .)
>>>
>>> Prekladac je z SW4STM32 a SW je aktualni. Netusi nekdo, kde muze byt
>>> chyba? Je snad pouziti techto starych MCU v kombinaci s novymi nastroji
>>> nefunkcni?
>>>
>>> A taky by me zajimalo, proc se mi vzdycky po vygenerovani novych
>>> zdrojaku z CubeMX znici .LD soubor, zkrati se na delku 0. Staci jej
>>> smazat a znovu vygenerovat projekt...
>>>



Další informace o konferenci Hw-list