Jste zde

Reakce na Recenzi C51

Jeden z našich čtenářů doplnil některé drobnosti nebo i podstatné informace.

Co se tyka ide uVision tak nemam prakticky zadne pripominky a tato recenze se mi velice libi. U dScope jsem take na nic vic neprisel oproti vam. Pouzivam ho jen pro kontrolu a prohlizeni vysledneho kodu po kompilaci v C. Ma velkou vyhodu pri zjistovani rychlosti provedeni ruznych funkci (zjisteni doby vypoctu funkci s realnymi cisly). Da se v nem prepinat verze procesoru. Napr funkce "sqrt(2)" druha odmocnina ze dvou trva asi 5ms na procesoru 80c51. Kdezto u Dallas 80c320 trva 2ms. Z vyuzitim matematicke jednotky u Siemens 80c517 trva take 2ms. Vse pro stejny krystal. Duvod? procesor 80c517 vychazi rychlejsi z duvodu matematicke jednotky, ale vsechny ostatni instrukce jsou stejne rychle jako standart51. Kdezto Dallas sice nema matematickou jednotku, ale ma vsechny instrukce v prumeru o 2.5x rychlejsi pri stejnem krystalu. 

Vyse uvedene poznatky se daji zjistit v dScope. Overoval jsem to i prakticky. 

Recenze na Keil C je take v poradku jen ma nejake male doplnky. Byl jsem take prekvapen, jak je vysledny kod dobre optimalizovan. Jakekoliv funkce deleni, nasobeni nebo cykly for jsou prizpusobeny typu promenne kterou v nich pouzivam. Zbytecne nepouziva funkce s int, kdyz nasobin jen char atd... 

Take jsou velmi vyhodne funkce printf a scanf. Lze k jednocipu pripojit pres Rx,Tx terminal, nebo PC a vnem spustit emulaci terminalu(Hyperterminal ve WIN95) a potom funkci printf pisu normalne na obrazovku a funkci scanf ctu znaky z klavesnice. Jednoduche zobrazovani promennych i realnych pri ladeni.Jednoduche zadavani promennych, vypisy obsahu pameti, no proste nadhera. Toto clovek oceni az pri skutecne praci. 

Vypracoval jsem uz vice projektu jak v ASM tak i v C. Muj nejvetsi projekt, ktery jsem napsal v Keil C byl krizovy stul (dva krokove motory,dve osy x a y). Vypalovani ruznych tvaru (primky, kruznice). Potreboval jsem sin,cos,odmocninu. Keil C byl pro to jako stvoreny. Ono to neni nic jednoducheho delit treba dve 32bit cisla v asembleru. Co teprve sinus s realnymi cisly. Vysledny program zabral cca 8kB. Hodne zaberou funkce printf a scanf cca polovinu, coz mne udivilo. Ale jinak bych ten program ze skusenosti v asembleru asi kratsi nenapsal. Opravdu maji knihovni funkce dobre optimalizovane. Provedl jsem prakticke testy s rychlosti na tomto projekty. Opet pro vsechny procesory stejny krystal. Vypocet kruznice o polomeru 10cm krok 0.01mm. 

8031 - 3min:30sec
Pouha vymena procesoru Dallas 80c320 - 1min:30sec
Zapnuti pouzivani dvou DPTR registru (konfigurace C) - 1min:10sec 

Je videt, ze je vhodne si pohrat s konfiguracema prostredi a prizpusobit ho pouzitemu procesoru. Pri vypoctech na procesoru 80c517 cca 1min.(Nutno zamenit knihovni funkce za funkce 517) Z toho vyplyva ze procesor 80c517 sice ma matematickou jednotku ale oproti dallas nic moc neziskava. A to jeste ma Dallas rezervu (Dela se 33MHz,Siemens jen 18) Bohuzel jsem nemel k dispozici Intel 151 a 251. 

Na rychlost vysledne aplikace ma taky velmi velky vliv kde jsou umisteny promenne, jestli ve vnitrni pameti nebo ve vnejsi. Pokud jsme nuceni pro velky pocet promennych zvolit model aplikace large je vhodne explicitne urcit u casove kritickych promennych umisteni ve vnitrni pameti. 

A abych jenom nepomlouval 80c517 tak uvedu priklad. 

U normalniho procesoru rychle zaplnim vnitrni pamet hlavne kdyz pouzivam realna cisla a potom nezbyva nic jineho nez pripojeni externi RAM. U procesoru 80c517 je internich 2kB RAM mapovanych do oblasti 62 - 64 kB externi RAM. Takze jednoduse se da vyuzit pro promenne a 2kB to uz celkem staci pokud nepracuji s poli. Jediny problem nastal, ze implicitne prekladac prideluje pamet od 0. Ale v prekladaci se da nastavit baze na 62kB. 

Samozrejmosti je moznost vyuziti pameti 128-256 u 8032. 

Abych to shrnul. Je to velmi promakany system. Nic lepsiho jsem jeste nevidel (samozrejme pro procesory x51)

 

Autorovi samozřejmě děkujeme za doplnění a vítáme vaše další názory.

Hodnocení článku: