STM32 startup kod
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Středa Srpen 14 13:52:08 CEST 2019
Tak reseni je na svete - zahodit System Workbench (SW4STM32) a jeho
nastroje a nainstalovat nejprogresivnejsi nejmodernejsi, nejpomalejsi
ale presto celkem funkcni moloch STM32CubeIDE. Tam tento problem
nevznika, asi jiny toolchain...
Teda ale je to sila, zkusim si chvili zvykat nez prejdu na make :-D
Dne 14.08.2019 v 12:53 Jaroslav Buchta napsal(a):
> 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
>
>
> _______________________________________________
> 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