forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Měření času v debug - jak dlouho trvají bloky kódu?

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM
 
Bartt
Profesionál
Profesionál


Založen: 31.1.2012
Příspěvky: 40

PříspěvekZaslal: 28 srpen 2013, 13:03    Předmět: Měření času v debug - jak dlouho trvají bloky kódu? Citovat

Zdravím,

neví někdo o způsobu jak lze měřit čas toho, jak dlouho trvají bloky kódu při debuggu? Je mi jedno jestli v Keil nebo v Attolic True studio. Díky moc.

Arrow administrator: přejmenováno z "měření času v debug"
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Panda38
Profesionál
Profesionál


Založen: 18.9.2012
Příspěvky: 398
Bydliště: Praha, Most

PříspěvekZaslal: 28 srpen 2013, 13:47    Předmět: Citovat

V Keilu "execution profiler" http://www.keil.com/uvision/db_anl_profiler.asp
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Bartt
Profesionál
Profesionál


Založen: 31.1.2012
Příspěvky: 40

PříspěvekZaslal: 28 srpen 2013, 16:03    Předmět: Citovat

Hm, to lze jen při simulaci. A tu se mi nikdy nepovedlo rozběhat. pořád na mě skče tahle chyba:

*** error 65: access violation at 0x0000000C : no 'read' permission
*** error 65: access violation at 0x00000000 : no 'execute/read' permission
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 464

PříspěvekZaslal: 28 srpen 2013, 16:05    Předmět: Citovat

V HW debugu to nejde...myslím
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Panda38
Profesionál
Profesionál


Založen: 18.9.2012
Příspěvky: 398
Bydliště: Praha, Most

PříspěvekZaslal: 28 srpen 2013, 18:08    Předmět: Citovat

Není nad to používat svá měření. Dobu provádění funkcí měřím tak, že funkci volám x-krát ve smyčce ve které blikám LEDkou - počet volání došolichám zkusmo tak, aby LED blikala přesně v sekundových intervalech. Nebo počítám bliknutí za 10 sekund. Sice pracnější metody, ale nenáročné na další vybavení a přitom docela přesné. Smile A kupodivu když si některé funkce počítám z časování instrukcí, tak se trefuji dost přesně.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 464

PříspěvekZaslal: 28 srpen 2013, 21:30    Předmět: Citovat

Proč to dělat (ledky a podobný věci) když v simulátoru to jde....
To jen v případě že nění možné zjistit v reálný aplikaci kolik času v jaký funkci cpu v průměru stráví bych sáhnul (a taky sahám) k těmto metodám.
Vytížení cpu jsem dokázal měřit i na 8051 (posílal mi to po zběrnici), takže u armu to je možný taky a snadněji.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Panda38
Profesionál
Profesionál


Založen: 18.9.2012
Příspěvky: 398
Bydliště: Praha, Most

PříspěvekZaslal: 28 srpen 2013, 22:59    Předmět: Citovat

Např. když někdo nepoužívá simulátor nebo nějaká vývojová prostředí ale jen přeloží s gcc a utilitkou vypálí do čipu. Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 464

PříspěvekZaslal: 29 srpen 2013, 11:27    Předmět: Citovat

Jo to pak "no way" Smile
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Bartt
Profesionál
Profesionál


Založen: 31.1.2012
Příspěvky: 40

PříspěvekZaslal: 29 srpen 2013, 14:56    Předmět: Citovat

Ledky budou asi jediná cesta. Jedná se o měření délky AD konverze... Vůbec mi nedošlo, že tohle simulátor nezvládne. Až teď sem si to uvědomil
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Bartt
Profesionál
Profesionál


Založen: 31.1.2012
Příspěvky: 40

PříspěvekZaslal: 29 srpen 2013, 15:08    Předmět: Citovat

Experiment jsem provedl tak, že nastavím ledku a pustím konverzi. V okamžiku kdy skončí zhasnu ledku a pustím ji znovu. Tohle mám v nekonečné smyčce. Takže perioda kmitů je přibližně doba dvou konverzí...Cca to sedí, ale měřil sem to multimetrem a ten mi tvrdí že frekvence je 0,522MHz což znamená že jedna konverze trvá 1/1044000 což je nesmysl protože max rychlost je 1.12 us. Hold co by člověk nechtěl od mulťáku za litr.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Panda38
Profesionál
Profesionál


Založen: 18.9.2012
Příspěvky: 398
Bydliště: Praha, Most

PříspěvekZaslal: 29 srpen 2013, 15:20    Předmět: Citovat

Už jsem se lekl že okem odhadneš 1 us, když to jde na LED. Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 18 červenec 2014, 16:26    Předmět: Citovat

a v AVR studiu je mozne merat cas vykonavania jednotlivych instrukcii? Pripadne existuje nieco kde by to bolo mozne? Pozeral som ten keil aj attolic no v oboch bolo pisane ze su len pre arm-y pripadne este 8051 a ja by som potreboval nieco podobne na atmegy/xmegy. Dakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 464

PříspěvekZaslal: 19 červenec 2014, 1:14    Předmět: Citovat

Zkus se informovat na IAR, ten AVR umi.
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1449

PříspěvekZaslal: 21 červenec 2014, 7:37    Předmět: Citovat

Pre AVR toto funguje velmi dobre

http://www.youtube.com/watch?v=nPQl3e08vgg

http://www.amctools.com/vmlab.htm

vie sucasne simulovat niekolko MCU typu AVR v PC.


Meranie slucky tak ako bolo popisane nevidím ako úplne šťastné a to z toho dôvodu, že pokiaľ by rutina trvala stále rovnako, potom by stačilo spočítať inštrukcie a vedelo by sa presne koľko rutina trvá. Čas prevodu aj tak určuje užívateľ nastaveniami časovania.

Vzhľadom k tomu, že do procesov často vstupujú rôzne prerušenia, ktorých prejavy sa ťažko odhadujú, za lepšie riešenie ako merať frekvenciu (napríklad merákom, ktorý prevádza frekvenciu na napätie a až to meria už vôbec nie), za lepšie riešenie považujem nasledovné.

Pri behu mcu je použitý nejaký čítač pre presné časovanie procesov.
Časovač treba nastaviť tak, aby v pracovnom čítači (8b/16b) bol rozdiel daný jedným bitom dostatočne jemný.

Na začiatku rutiny si program odpamätá stav tohto pracovného čítača. Na konci rutiny od aktuálnej hodnoty pracovného čítača odpočíta stav na začiatku. Rozdiel určuje čas s presnosťou na LSB pracovného čítača. Z takto získanej hodnoty sa dá ľahko vyhodnotiť priemerná hodnota. Stačí plávajúci priemer, alebo jednoduchý filter typu:
kód:

STARA_PRIEM_HODNOTA = (NOVA_HODNOTA + STARA_PRIEM_HODNOTA) / 2;

Toto hyhodnotenie sa podobá na to meranie frekvencie

Ale asi výpovednejšie bude sledovať maximálnu hodnotu behu rutiny.
kód:

if (MAX_HODNOTA < NOVA_HODNOTA) MAX_HODNOTA = NOVA_HODNOTA;


tieto hodnoty treba načítať cez UART. Vyhodnotenie síce pridá nejaký ten kód (a čas) navyše, ale tento je prísne determenistický a dá sa ľahko od nameraného výsledku odpočítať.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 22 červenec 2014, 16:48    Předmět: Citovat

Ja zvycajne na meranie dlzky nejakeho cyklu pouzivam osciloskop s tym ze na zaciatku nastavim nejaky vystup do log.1 a na konci ho hodim do log.0 a takto viem kolko mi trva cely cyklus. Takto som prisiel napriklad na to ze ak som v Bascome napisal program ktory v nekonecnej slucke prepinal stav jedneho pinu na porte tak toto iste napisane v Ccku bolo priblizne 1,7 nasobne rychlejsie. Rad by som ale skusil aj nejaky simulator
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)