Optimalizace programu pro MCU

Michal Grunt michal.grunt na vynet.cz
Pondělí Září 29 17:00:02 CEST 2014


Děkuji za vyčerpávající popis. Netušil jsem, že parametry -Ox jsou jakési předdefinované profily takže se podívám co se pod nimi skrývá... Na zarovnávání se podívám a map soubor zkontroluji.

MG

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Monday, September 29, 2014 3:44 PM
To: HW-news
Subject: Re: Optimalizace programu pro MCU

Je tazke stanovit nejake pevne zasady na usporu RAM. Predovsetkym je vsak potrebne sa naucit zistit, kolko RAM sa skutocne pouzije, a to vratane stacku, heapu apod.

Napisali ste tiez potrebu pouzivat uzsie typy, ale to samo osebe napr. na 32-bitovych strojoch nestaci, je potrebne aj zabezpecit, aby sa napriklad linker nesnazil mensie premenne zarovnavat na 32-bitove adresy (ak to procesor vobec dovoluje, ale vacsina z nich to dovoluje - treba chapat pripadne zadrhele a obmedzenia pri pouziti nezarovnanych premennych), alebo ich vhodne zoradil. Detto pre struct.

Ta redukcia typov plati aj pre _Bool, ten je obvykle implementovany neefektivne (efektivnej implementacii brani aj norma, ak sa berie prisne), takze treba (casto rucne) pouzivat bitfieldy. Niekedy sa da/oplati ist do bitfieldov aj s premennymi, ktore vyzaduju menej ako nasobky 8 bitov, apod.

> 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.

Chceli ste to napisat naopak...

Ale nie je to zasada, len niektore prekladace (mozno vacsina) to takto robia. V skutocnosti klucove slovo const nijako nezarucuje umiestnenie premennej. Prestudujte si dokumentaciu k Vasmu prekladacu.


>Dále mì zajímá jestli pøi zapnutí optimalizace -Os (nebo jiné) jde v kódu oznaèit kus kódu jako vyjímku, aby se na toto optimalizace nevztahovala.

Najjednoduchsie je vyclenit funkcie, ktore sa maju kompilovat s inymi nastaveniami, do osobitnych suborov, separatne skompilovat a potom zlinkovat. Samozrejme treba znova preskumat, ci toto je platny postup.

Ak pouzivate GCC, neocakavajte od -Os rychlejsi kod a od -O3 mensiu spotrebu pamate (ktorejkolvek). Toto su len predzute "skupinky"
optimalizacnych switchov. Skuste si efekt jednotlivych tychto switchov, a ich rucne nastavenych kombinacii, moze to byt v konkretnych pripadoch efektivnejsie nez tie "predzute".

wek


_______________________________________________
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