POST karta pro diagnostiku PC

      5.2.2000 Asi každý, kdo sestavuje a opravuje počítače, se už dostal do situace, kdy zapne PC a nic se neděje. Obrazovka zůstává černá a nanejvýše se ozývá pípání. Něco je evidentně špatně, ale co? Naštěstí už od dávných dob vzniku PC obsahuje BIOS diagnostické rutiny, které mohou napomoci k řešení problémů s počítačem. Při každém zapnutí nebo tvrdém restartu PC probíhá kompletní POST (Power-On Self-Test), který zinicializuje a zkontroluje základní hardware (CPU, chipset, paměť, řadiče sběrnic...). V počáteční fázi ještě není inicializovaná grafická karta, takže nemá smysl vypisovat chybové hlášky na monitor. Místo toho se používají tzv. beep kódy, což jsou jednoduché sekvence pípnutí různých tónů a délek, které signalizují závažné chyby. Za normálních okolností PC při startu jednou krátce pípne. Přes beep kódy nelze jednoduše indikovat větší počet chyb (že by nikoho nenapadlo použít morseovku?) a tak se navíc používá posílání diagnostických POST kódů v každé fázi inicializace HW na určitý I/O port (typicky 80h). Alternativní BIOS Coreboot posílá ladicí výpisy přes sériový port.
      Abychom si mohli POST kódy přečíst, je třeba mít speciální POST kartu. Vyrábí se pro sběrnice ISA a PCI, ale je docela drahá. Přitom na ní není nic složitého a součástky stojí pár korun. A tak jsem se rozhodl postavit si vlastní ISA POST kartu. Funkce sběrnice ISA je jednoduchá na pochopení a používá klasické 5V TTL úrovně a nižší frekvence (typ. 8 MHz), takže lze použít běžně dostupné integrované obvody řady 74xx. Sběrnici ISA tvoří adresové linky A19:A0 (PC XT) nebo A23:A0 (PC AT a vyšší), datové linky D7:0 (PC XT) nebo D15:0 (PC AT a vyšší), řídicí linky pro výběr čtení/zápisu, IRQ, DMA a další a napájení (+5 V, -5 V, +12 V, -12 V). Pro náš účel jsou důležité adresové linky A11:A0 (I/O prostor ISA je omezen na rozsah 0 - FFFh), datové linky D7:0, řídicí linka IOW# a napájení +5 V.
      Když CPU provádí instrukci OUT, tak napřed nastaví na adresních linkách požadovanou adresu IO portu, na datových linkách nastaví zapisovaná data a nakonec stáhne IOW# do log. 0. A když CPU zapisuje do paměti, tak zatáhne za linku MEMW#. Tímto je odlišen paměťový a I/O prostor. Pro zachycení vysílané informace na sběrnici je tedy třeba umět dekódovat konkrétní I/O port a v daný okamžik si zapamatovat a zobrazit 1 Byte. Pro adresový dekodér jsem vybral dva 8-bitové komparátory 74LS688 s hradlovacím vstupem. Pokud bychom se smířili se zrcadlením na vyšších adresách, stačil by jen jeden. Komparátory porovnávají stav adresové sběrnice s přednastavenou hodnotou na DIP přepínači a hradlovací vstupy jsou připojeny na IOW#. Pokud se adresa shoduje a zároveň je aktivní IOW#, objeví se na výstupu komparátorů log. 0, sečte se NOR hradlem 74LS02 a aktivuje se 8-bitový střadač 74LS573, který si zapamatuje na svých výstupech stav 8-bitové datové sběrnice. Pak už jen stačí zachycený Byte prohnat dekodérem a zobrazit na 7-segmentovém LED displeji. Dekodérů je celá řada, ale jen málokteré zobrazují i hexadecimální číslice, použil jsem tedy dekodéry MHB4311, které ještě tehdá vyráběla Tesla. V nouzi stačí 8 LED diod s odpory a naučit se číst binární kód (do hexa se dá převádět snadno). POST kartu jsem dále doplnil děličkou hodinového kmitočtu ze dvou čítačů 4020 v kaskádě, abych viděl, zda-li vůbec funguje oscilátor. Také jsem přidal 4 LED na každou napájecí větev.

ISA POST karta-top ISA POST karta-bottom ISA POST karta-schema

      Vzhledem k provedení ISA konektoru jsem musel použít oboustranný plošňák, což pro domácí výrobu není úplně jednoduché. Tehdá jsem ještě neměl možnost tisknout filmy, tak sem to namatlal lihovkou, čemuž odpovídá výsledek. Ale hlavně že to funguje. Hranový konektor ISA by si zasloužil pozlacení, tak jsem ho aspoň pocínoval. Možná by šlo odstřihnout konektor z nějaké vadné ISA karty a připájet ho k desce mnoha drátky, snad by se to pak neutrhlo. Také jsem někde viděl prodávat univerzální plošňák s ISA konektorem na který by se to dalo nabastlit...

      17.7.2009 Zatím co POST kódy se používají stále, tak ISA sběrnice v původní podobě z PC dávno vymizela. Chtěl jsem si tedy postavit PCI POST kartu. U PCI sběrnice jsou ale vyšší nároky na rychlost obvodů a hlavně konektor s menší roztečí - problém s výrobou plošňáku. PCI sběrnice pracuje s multiplexovanými adresami a daty (společné linky AD31:0) a také zde chybí linka IOW#. Místo toho se zápis do I/O prostoru signalizuje příkazem na linkách C/BE3:0#. Takže logika PCI POST karty by byla složitější. Mezitím kamarád objevil na jednom e-shopu kompletní PCI kartu POST4D za pár euro, aneb Čína rulez. Za to by mi ani v Pragoboardu neudělali plošňák. Karta používá programovatelné logické obvody ATF16V8B-15PU, což je flashová varianta klasických PALů. Jumperem lze přepnout mezi dekódovaným I/O portem 80h nebo 84h. Logika (pochopitelně) neimplementuje Plug & Play a konfigurační registry, takže POST kartu v žádném výpisu PCI zařízení neuvidíte. Pinový konektor na kartě slouží pro připojení druhého displeje, který si můžete dát třeba na předek kejsu. K dispozici je i schéma zapojení, ne však konfigurace PALu. Doufám, že mi POST kódy pomůžou poodhalit problém s občasným resetem overclocking nastavení při zapnutí desky Gigabyte GA-P31-DS3L.

POST4D PCI card

      25.12.2009 Jeden známý mě upozornil na eBay na zajímavou a levnou POST kartu. Po stranách PCB má dva hranové konektory pro sběrnici PCI a ISA, 4-místný LED displej, LEDky na indikaci napájení a stavu sběrnice a pípák. Škoda, že jsem tuto nabídku neobjevil dřív...

      15.6.2012 Na některých novějších základních deskách nemusí správně fungovat přeposílání legacy I/O zápisů na port 80h skrze PCI-E 2 PCI můstek a POST karta tak zůstane "slepá". Jako zajímavou alternativu jsem objevil POST kartu na sběrnici LPC, která je na novějších MB přístupná skrze TPM (Trusted Platform Module) header (např. základní desky Gigabyte s chipsety řady 6x a 7x). Na DealExtreme prodávají za 6,10 $ kombinovanou Mini PCI-E / PCI / LPC POST kartu pro notebooky. Další možné využití LPC je např. rozšíření MB o sériové porty od VIA nebo sériový a paralelní port od Shuttle. Takže je vidět, že se ten konektor hodí i pro něco jiného, než nějaký DRM sráč.
      5.9.2012 Kolega objednal z DealExtreme 3 kousky té Mini PCI-E / PCI / LPC POST kartičky. Zboží dorazilo asi za 3 týdny a skutečně bez poštovného! Říkal jsem si, za ty směšný peníze nekup to, takže jednu jsem vzal pro sebe a jednu pro dalšího kolegu. Zatím ji ale nemám na čem vyzkoušet, nemám žádnou základní desku s vyvedenou LPC, takže asi zkusím nějaký starší MB nadrátovat. Pak asi ještě bude třeba správně naprogramovat PCI 2 LPC můstek, aby se to posílalo tam kam má. Ještě bych chtěl upozornit, že hranový Mini PCI-E konektor ve skutečnosti nepoužívá žádné PCI-E linky, ale rezervované piny 8, 10, 12, 14, 16, 17, 19, které si někteří výrobci notebooků (např. IBM, Toshiba, HP, Asus, TCL...) sami definovali jako LPC debug port, takže ve skutečnosti kartička umí jen 2 různá rozhraní. Ostatně zpracování rychlých PCI-E signálů je mimo možnosti použitého CPLD Altera MAX 7000A s 64 makrobuňkami.

Mini PCI-E / PCI / LPC POST card

      23.4.2018 Jelikož na mé homemade ISA POST kartě už zlobí kontakty, objednal jsem si z eBay novou univerzální POST kartu pro sloty ISA a PCI. Má 4-místný LED displej, který zobrazuje poslední a předposlední POST kód (další předchozí POST kódy jdou namačkat tlačítkem), LEDky na indikaci napájecích napětí (+3,3 V, +5 V, +12 V, -12 V), hodin, IRDY, FRAME, RESET a pípák (připojí se kablíkem přes JP2 na MB). Karta je osazena MCU Atmel AT89C52-24JC, programovatelnými logickými poli AMD PALCE16V8H-10JC/4 a Lattice GAL16V8B-15QJ, které podle poškrábaného povrchu vypadají jak nějaký recyklát z elektroodpadu. Pak jsou tam ještě klopáky DM74ALS374 a 74F74 a 4 tranzistory. Kartu jsem úspěšně otestoval v základní desce Abit BX133-Raid.

ISA / PCI POST card



Zpět

Aktualizováno 25.4.2018 v 3:14