Další dotaz na STM32F050C4

Miroslav Mraz mraz na seznam.cz
Úterý Prosinec 3 12:41:37 CET 2013


To vypadá, že je tam nějaká nekonzistence mezi startup kódem a linker 
skriptem. Ve startupu musí být něco jako ResetIsr() z čehož je pak 
voláno main(). V linker skriptu pak musí být definováno ENTRY(ResetIsr). 
Takhle to vypadá, že se použil startovací kód z newlib, což pak vytvoří 
ta divná data a bss. Docela bych se divil, že vám to takhle běží.

Mrazík

On 12/03/2013 11:17 AM, HUDA volny wrote:
> Omlouvám se, nestíhám.
> Teď jsem udělal znova několik pokusů a pořád je to stejné.
> Raději jsem si všechno psal, neb hlava je .... a zapomíná.
> Pokud se po nastavení déla nezměnila pokračoval jsem dál.
> Program jsem zredukoval na nastavení hodin na externí krystal,
> nastavení SysTick na 1 ms,nastavení dvou pinů, na kterých
> jsou ledky a smyčka ve které jedna ledka změní stav a počká
> se 300ms. Nic víc tam už není. Program je v jednom souboru
> a nepoužívá standardní knihovny. Je použita jediná proměnná
> uint32_t pro zpoždění.
>
> První délka je bez všech doporučených nastavení, optimize O0.
>
> Program size (bytes):    2364|
> Data size    (bytes):    1092|
> BSS size     (bytes):     288|
>              ----------------|
> Total size   (bytes):    3744   (R/W Memory: 1380)|
>
> 1 - newlib-nano          (v linkeru Newlib Nano-branch)
> 2 - -fno-builtin         (v kompileru)
> 3 - -ffunction-sections  (v kompileru - Isolate each function in a 
> section)
>     -fdata-sections      (v kompileru - Place data into its own section)
>   - --gc-sections        (v linkeru Remove unused sections)
> Program size (bytes):    1780|
> Data size    (bytes):    1076|
> BSS size     (bytes):     288|
>              ----------------|
> Total size   (bytes):    3144   (R/W Memory: 1364)|
>
> 4 - optimalizaci -Os
> Program size (bytes):    1224|
> Data size    (bytes):    1076|
> BSS size     (bytes):     288|
>              ----------------|
> Total size   (bytes):    2588   (R/W Memory: 1364)|
>
> 5 - -fshort-enums        (v kompileru - Allocate to an enum type only 
> as many bytes as it needs (short-enums))
>   - -funsigned-bitfields (v kompileru - A bit field is unsigned)
>   - -funsigned-char      (v kompileru - Left the type char be unsigned)
>
> 6 - zmena StarUp a LD scriptu (startup_ARMCM0.S , gcc_arm.ld) nevim, 
> zda program bezi
> Program size (bytes):    1504|
> Data size    (bytes):    1064|
> BSS size     (bytes):       4|
>              ----------------|
> Total size   (bytes):    2572   (R/W Memory: 1068)|
>
> 7 - Heap size - nastaveno 0x0010 predtim 0x0000
> 8 - listing nevypisuje zadny odkaz na impure..... blok, ani nekam do 
> nej (aspon jsem to nenasel)
>
> HUDA
>



Další informace o konferenci Hw-list