Optimalizace programu pro MCU

Tomáš Hamouz hamouz na divesoft.cz
Pondělí Září 29 15:51:48 CEST 2014


> Poradí někdo zásady optimalizace programu, aby výsledný kód
> potřeboval co nejméně paměti RAM? Vím, že mám používat paměťově méně
> náročné typy (uint8_t místo uint16_t pokud to není nezbytné), napsat
> si svoje optimalizované knihovny (místo StdPeriph Driver ) atd. Jde
> mi o styl zápisu kódu. Např. jsem našel, že definice const proměná
> se uloží do RAM, ale jenom proměná bez const do ROM (FLASH), tak zda to platí atd.

Asi jste to myslel obráceně, const do ROM, bez const do RAM.
Dejte si pozor typicky na pole stringů.

const char* string_array[] = {
    "prvni",
    "druhy",
    "treti"
}

stringy budou v RAM, tabulka v ROM
Musí se uvést

const char* const string_array[] = ...

Zkontrolujte si umisteni proměnných v map filu, zda tam není nějaká o
které víte že tam být nemá.

Dále může pomoct ruční zarovnání složek ve struktuře, pokud je
nastaven alignement jinak než 1.

A třetí námět, používejte takové algoritmy, které jsou méně náročné na
paměť. Obvykle bývají pomalejší, kompromis si musíte najít sám podle
aplikace.

Tomáš



Další informace o konferenci Hw-list