Obmedzenia SDCC/51, was: Kterou CPU platformu vybrat?

Jan Waclawek konfera@efton.sk
Pondělí Leden 26 15:37:45 CET 2009


Obmedzenie vnutornej RAM je jedna z fundamentalnych problemov '51, to je fakt. Je zvlastne, ze napriek tomu ze je to znamy problem, maloktory vyrobca sa vobec pokusil ho nejako riesit, napr. len 3 klony z tych, co poznam, maju moznost umiestnit zasobnik aj do "externej-internej" pamate (ADuC84x, DS89C4x0, AT89C51RE2). Kazdy prekladac sa s tym vysporiadava inak, a niekedy im treba trocha "pomoct".

To spravanie (kam sa alokuju "automaticke" premenne a ako si s ich nedostatkom poradit) sa da (aj) u SDCC ovplyvnit zmenou pamatoveho modelu. Problem je, ak sa chce clovek zmestit do vnutornej pamate v "small" modeli. Keil si s tym tiez nevie uplne dokonale poradit, ale od urcitej verzie (neviem presne ktore, ale je to tak zo 3-5 rokov) ma lepsie vyuzitie internej pamate (DATA) vdaka ich lepsiemu prekryvaniu (overlapping) vo faze linkovania, ked sa vybuduje strom volani a nasledne sa prekryvaju lokalne/automaticke premenne ktore sa nemozu sucasne vyskytnut (t.j. su v roznych vetvach stromu). SDCC (prinajmensom '51, ale asi aj Z80 a HC08 vetva) vyuziva linker napisany povodne mimo projektu, ktory toto nevie, takze overlapping je implementovany dost primitivne len vo funkciach, ktore nevolaju ziadne ine funkcie. Je to pomerne dokladne popisane v dokumentacii.

Skoda ze si to tu nespomenul, mohli sme to spolu prebrat. Nehovoriac o tom, ze forum SDCC je sice tazkopadne lebo bezi na sourceforge ktory nestiha, ale zasa v nom odpovedaju priamo vyvojari a su velmi ochotni.

wek




----- Original Message ---------------

>
>> Dalej, neviem v ktorej faze ste prisli do styku s SDCC ani co presne je pre Vas "pracovalo velmi mizerne", ani s cim ste to porovnali a akou metodikou. Ja som s SDCC v2.6 napisal rozsiahlejsi projekt a aj ked som nasiel jednu chybu prekladaca (uz je odvtedy opravena), vcelku som nenasiel zasadnejsi problem. Je fakt, ze niektore veci sa daju prelozit aj optimalnejsie, ale nevidim pricinu skumat 10-20% ubytku vykonu a priestoru pre bastl- a malokusove riesenia.
>>   
>
>Prostoru ve flash bývá dost, ale hor¹í je to s RAM. Mám na pomìry '51 
>pamì»ovì celkem roze¾raný projekt. Promìnné jsou rozházené po DATA, 
>IDATA i XDATA. Keil si s tím poradí, ale s sdcc jsem se nebyl schopen. 
>U¾ si nepamatuju detaily, ale alokoval si data i pro své pracovní 
>promìnné. Nepomohla zmìna pamì»ového modelu, koukal jsem na nastavení 
>rekurze... Nakonec jsem to vzdal.
>




Další informace o konferenci Hw-list