STM32 startup kod

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Středa Srpen 14 12:53:10 CEST 2019


Nasel jsem nejake kuse info, proste to prilinkuje knihovny s ARM 
instrukcemi, protoze zrejme Cortex-M3 je architektura armv7 a tak je ma. 
Nepomuze specifikace architektury armv7-m a zadne jine relevantni 
nastaveni jsem nenasel.
Kdyz zkopiruju knihovny z prislusneho adresare thumb/v7m misto puvodnich 
souboru v ...lib (je to na dvou mistech) tak to vypada OK

A ted babo rad, poustet se do experimentu s ruznymi verzemi toolchainu 
se mi nechce, kopirovat soubory take nebude OK - pro ten jeden projekt 
by to mozna bylo reseni ale osklive...
Zajimave, ze jsem nasel jen par diskusi k tomuto problemu a reseni zadne.

Dne 14.08.2019 v 9:50 Jaroslav Buchta napsal(a):
> To by asi slo ale velmi mne znervoznuje, ze bych tim nejak ztratil 
> duveru v IMHO celkem rozsireny toolchain v baliku SW4STM32...
> No zkusim jej jeste preinstalovat.
>
> Dne 14.08.2019 v 9:48 Jan Waclawek napsal(a):
>> 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...
>>>>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list