Portál AbcLinuxu, 10. května 2025 08:08

Dotaz: Časování s hrtimers, problémy

8.9.2008 11:36 Vinicius
Časování s hrtimers, problémy
Přečteno: 356×
Odpovědět | Admin
Příloha:
Dobrý den.

Vyvíjím jaderný modul, který s frekvencí maximálně 44100 Hz mění logickou hodnotu na datovém výstupu sériového portu.

K časování používám časovač s vysokým rozlišením, který 'tiká' s frekvencí 44100 Hz.

Problém je ale v tom, že se často stává, že je velké množství tiků přeskočeno, protože je třeba věnovat čas také jinému kódu. Když se vypne X-Server, tak k přeskakování dochází méně často, ale stejně je občas vynecháno i 6 tiků, což učiní signál na sériovém portu nedekódovatelným.

Mám proto 2 otázky:

1. Je vůbec reálné zajistit provádění kódu každých 1/44100 s ? (Athlon XP 2200+, 512 MB RAM)

2. Lze nějakým způsobem sebrat procesor ostatnímu kódu a věnovat ho přednostně mému jadernému modulu i za cenu zpomalení ostatních aplikací ?

P.S Mám důvod proč řídít sériový port takto divně - překážejí mi start a stop bity.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.9.2008 14:19 Milan
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ad 1) 44KHz je velmi velka frekvence na normalni Linux. Kdyz uz linux, tak se zamerte na -rt patchset ktery se snazi o hard-realtime podporu pro Linux. V nem lze nastavit prioritu jednotlivych preruseni; vy si nastavite nejvyssi prioritu u preruseni casovace a budete doufat...

Ad 2) Ono ani nejde o to sebrat procesor a bat se zpomaleni ostatnich aplikaci. Vam jde o latenci, o to aby se vas kod vykonal kdyz na to prijde. Problem je ze system zrovna muze obsluhovat preruseni, muze byt ve stavu kdy jsou preruseni zakazany, atd...
12.9.2008 12:03 Vinicius
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Děkuji za odpoveď, obával jsem se, že to bude nějak takhle. A hádám, že ústup k circa 22 KHz by také nic nevyřešil.
12.9.2008 12:26 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
K čemu je to konkrétně dobré? Na těchto frekvencích se již běžně ve zvukovkách používá DMA a vlastní hodiny, aby přenos nezatěžoval CPU. DMA by asi nutné nebylo, protože jde o nízký datový tok, ale vlastní hodiny s bufferem a přerušením asi ano. Nešlo by ten HW nějak udělat přes USB? Jednočipy mají běžně podporu USB.
13.9.2008 10:13 luky
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Odpovědět | | Sbalit | Link | Blokovat | Admin
CPU si ukrast muzete, ale v kontextu timeru nedovedu poradit vhodne reseni. PC Speaker driver (/sound/drivers/pcsp/) taky zapisuje na port a bezi na hrtimerech, muzete se jim inspirovat.
13.9.2008 16:52 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mě napadl takovej hack, co nastavit nějakou správnou rychlost na sériovým portu (myslím, že se používá cokoliv 115200/(16bit číslo) ) a pak posílat nějakej pattern, tak aby start bity a stop bity, parita a data tvořily nějakou, aspoň trochu přesnou frekvenci 44100Hz. Problém je ten, že 115200/44100 nedá celý číslo, takže to bude buď 38400 nebo 57600, možná s rychlejším portem by to šlo přesněji, ale ten není běžně na deskách. Další možnost je generovat to třeba zvukovkou a nebo grefikou (tam to bude ultra přesné) :-D. Ještě mě napadlo vytvořit to pomocí PCSpeakeru, který je napojen na nějaký typ potomka 8253 a tomu se dělila frekvence něco přes 1MHz. Problém je ten, že na novejch deskách už PCS nejsou.
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
13.9.2008 16:55 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Hm tak vidím, že to s speakerem už někoho napadlo, tak jsem to aspoň rozvedl :-).
17.9.2008 20:20 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Další možnost je generovat to třeba zvukovkou a nebo grefikou (tam to bude ultra přesné)

Zvukovka asi nebude schopná udělat 44kHz obdélníky, které lezou z toho portu.
Quando omni flunkus moritati
17.9.2008 21:29 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Kruci, pravda... leda by se frekvence vynásobila 2.
Voty avatar 18.9.2008 17:51 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Dnešní zvukovky umí i více než 44 kHz ne? Takže by to neměl být zásadní problém a navíc takhle krátký obdélníčky by ještě mohly vypadat jako obdélníčky, pokud je teda nepožere výstupní filtr na zvukovce. Já takhle generuju signály i když jenom do 1 kHz. Takže bych zkusil vytvořit soubor z /dev/random a poslat do zvukovky a mrknou co z toho leze.
Jednu rozbil a tu druhou ztratil.
18.9.2008 19:53 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Leda, že by uměly samplovat s frekvencí >= 88.2kHz a nebo by zvukovka posílala samply ve formě pulzů.
18.9.2008 23:34 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
Kdyby posílala samply, tak by těch 44100Hz možná stačilo, jenže ještě záleží na výstupním filtru a rychlosti přeběhu výstupu. 44kHz obdélníky totiž v podstatě znamenají, že karta by musela zvládat na výstupu frekvenci 440kHz (sin)
Quando omni flunkus moritati
19.9.2008 00:47 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Časování s hrtimers, problémy
To je fakt, ten OZ co bude na výstupu by vyšší harmonické pro vytvoření obdélníku už nemusel zvládat. I když by asi stačila i sinusovka na výstupu a použije se tvarovač. Nejlepší řešení je tedy asi ten výstup na PCSpeaker (čítání ~ 1MHz). Na zjištění jeho ovládání na úrovni IO portů se hodí manuály ATHelp, Sysman nebo popis portů od Ralfa Browna.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.