FreeBSD 8.1 a multiportova seriova karta
Dan Lukes
dan at obluda.cz
Sun Jan 2 20:38:03 CET 2011
On 01/02/11 17:40, David Pasek:
> potrebuji vice seriovych portu
To jsme pred par lety resil taky a nakonec jsem s uspechem koupil a
dodnes spokojene pouzivam:
http://www.koutech.com/proddetail.asp?linenumber=59
> poridil tuto ctyr portovou kartu
> http://www.sunix.com.tw/product/ser4056a.html
>
> Karta funguje, ale detekuji se pouze dva ze ctyrech RS-232 portu
> Vygooglil jsem podobny problem na FreeBSD 7 a nekdo tam vytvoril
> patch, ktery pomohl.
> http://www.mail-archive.com/freebsd-stable@freebsd.org/msg96080.html
> Nicmene jsem se koukal do zdrojaku 8.1 do souboru
> /usr/src/sys/dev/puc/pucdata.c
> a pripada mi, ze uz to je opravene presne podle toho patche.
Ten patch resi trivialni chybu, kdy se zapomelo, ze RID na techto
kartach ma krok 4 a nikoli 1
Neopraveny kod predpklada pro porty 0,1 RID 0x10 a pro porty 2,3 RID
0x11, zatimco sktuecnost je takova, ze to jsou RID 0x10 a 0x14.
Pridej k tomu pciconf -lv jeste option -b a mel bys to videt sam - kata
ma definovane bar[10] a bar[14] (mozna jeste i nejake dalsi, nas ale
zajimaji tyhle - jsou oba typu I/O port) ale bar[11] tam zadny neni.
Ale prestanme se zabyvat timhle - to je chyba, ktera byla odstranena, je
odstranena a podle meho nejlepsiho presvedceni se tveho problemu netyka.
Tvuj problem je podl eme jinde - ne proto, z ebych si byl az tak jisty
kde, jako spis, ze jsem si takrka jisty, ze tady byt nemuze.
Nez se pustim do slozitejsich uvah zkusime ranu naslepo (ono to neni
uplne naslepo, ale abych vysvetlil proc to navrhuju, musel bych
vysvetlit prilis moc docela netrivialnich veci) - proved jednoduchou
upravu. Ve stejne funkci, co se provadela minula oprava (tedy
puc_config_timedia) je kod:
case PUC_CFG_GET_OFS:
*res = (port == 1 || port == 3) ? 8 : 0;
Tak tu osmicku nahrad sestnactkou.
> Vypis z dmesg:
> ============
> puc0:<Timedia technology 4 Port Serial> port
> 0xe000-0xe01f,0xe020-0xe02f irq 10 at device 17.0 on pci0
> puc0: [FILTER]
> uart2:<16550 or compatible> on puc0
> uart3:<16550 or compatible> on puc0
Tvoje karta je organizovana jako dva dvojporty - to je klasicke
usporadani zachovavane kvuli snadne kompatibilite mezi systemy (takhle
to ocekaval DOS v legaci seriakach). Nicmene, z tohoto vypisu nepozname,
ktere dva ze ctyrech portu byly nalezeny.
Potrebujeme jeste vypis devinfo -rv , respektive, z nej ten podstrom,
ktery popisuje informace o puc0 zarizeni.
Pokud budes mit prvni porty z obou paru, pak problem asi je tam co
predpokladam, a pokud's zkusil shora navrzenou opravu, tak je mozna uz i
napraveny. Pokud nemas prvni dva porty z paru a mas druhe dva porty,
pripadne jeden par kompletni a z druheho nic, pak je teorie patrne
chybna a zkusit doporucovanou zmenu to sice rozhodne muzes, ale hodne by
me prekvapilo, kdyby to pomohlo.
Pokdu se nahodou nepodari problem vyresit touto "prvni ranou naslepo"
tak relevantni casti vypisu pciconf -vlb, devinfo -rv a dmesg z verbose
bootu by mohla pomoct pri vytvateni dalsich teorii.
Jeste jednou rikam, ze tu tvoji kartu neznam - takze varim skutecne jen
z teoretickych uvah. Rozhodne pocitej, ze to nemusi pomoct - a ze se
muze stat dokoce i to, ze upraveny modul ti system shodi. Nemel by, ale
znas to ...
Dan
More information about the Users-l
mailing list