Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!

Vytvořit web zdarma

Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!

Vytvořit web zdarma

Compaq EVO T20 thin client

T20-right T20-front T20-left
      31.10.2008 jsem dostal od kamarda tento pkn mal strojek. Jedn se o tenk klient, uren pro pipojen k Windows Terminal Serveru. Jednotka tedy pouze zobrazuje data ze serveru a posl vstupy od uivatele po sti. Nicmn narozdl od starch unixovch terminl je tento tenk klient vybaven pomrn silnm procesorem, kter umouje bh samostatnho operanho systmu a tak se otevr cesta k zajmavjmu vyuit. Vzhledem k malm rozmrm a spoteb kolem 5 W me slouit teba jako trvale bc nenron linuxov server, logovac stanice pro rzn men nebo linuxov klient pipojen k linuxovmu serveru. Akort na multimdia se vzhledem k slabmu HW moc nehod.

Hardware

      Na zkladn desce je vidt snaha o max. hardwarovou jednoduchost a nzkou cenu. EVO T20 nen pmo dlo Compaqu, ale je to v jdru WYSE Winterm 8235LE pebalen v jin krabici. Design je podle m docela zdail, take neudl ostudu ani v obvku vedle televize. Srdcem T20 je 32-bitov nzkopkonov x86 procesor Geode GX1 s integrovanm severnm mstkem a grafickm jdrem taktovan na 300 MHz. Geode vychz z jdra MediaGX, jen vyvinula firma Cyrix, kterou pozdji koupil National Semiconductors a od nich to pak koupilo AMD. Funkcemi ho lze pirovnat k Pentiu MMX, CPUID je 540h. Vrobce uvd typickou spotebu 1,2 W pi taktu 300 MHz a napt 2,0 V. Procesor v sob integruje i funkce severnho mstku, tedy adi SDRAM pamt, adi PCI sbrnice a interface pro jin mstek. Obsahuje i jednoduch grafick jdro, kter vyuv st (max. 4 MB) operan pamti jako videopam a zvld zkladn 2D a MPEG1 akceleraci.
      Procesoru sekunduje jin mstek CS5530A sdruujc 1-kanlov IDE adi (v T20 ale bohuel nen IDE interface vyuit), druhou st grafickho jdra s analogovm vstupem na CRT a digitlnm pro LCD (T20 m jen analogov vstup), 2-portov USB 1.1 adi (dle rozen 4-portovm USB hubem TUSB2046), PCI2ISA mstek a integrovanou zvukovku AC97, kter m navc hardwarovou podporu pro emulaci SoundBlasteru 16 za pomoci SMBIOSu (vrobce to zde oznauje jako VSA - Virtual System Architecture). Funguje to zhruba tak, e chipset odchytv vechny pstupy na I/O porty a DMA, kter pouval klasick SB16 a generuje SMI peruen. Softwarov obsluha SMBIOSu pak zad odpovdajc akci na AC97 hardwaru. To samozejm zabere urit as CPU navc, ale zato emulace funguje v relnm i chrnnm mdu a nezvisle na operanm systmu. koda, e u se to tak nedl u dnench integrovanch zvukovek. Dal nezbytnou periferi je 10/100 Mbit ethernet sovka DP83815, takt od Nationalu.
      PS/2 konektory pro klvesnici a my byste zde hledali marn. Vrobce se toti pyn sloganem "legacy free" a tak nezbv ne periferie zapojit do USB. Bohuel BIOS nepodporuje emulaci standardn klvesnice, take OS a bootloadery bez USB HID podpory jsou v iti. Teoreticky by se dal pipojit SuperIO s roziujcmi porty na ISA sbrnici, ale napchnout vechny potebn signly sbrnice by bylo dost obtn a navc by se musel napsat kd pro jeho inicializaci. Jedin tlatko na pedn stran slou k vypnn (funguje asi pouze ve Windows) a pi delm dren dojde k resetu. Vrobce etil na hardware tak mocn, e se ani neobtoval zlohovat RTC bateri. To je ale celkem pochopiteln, protoe se potalo se synchronizac asu z NTP serveru. J jsem po vzoru Karla Mowsona pidlal na MB drk s klasickou 3V lithiovou bateri a pipojil ji k RTC DS12885 (U20B), plus na pin . 20 (Vbat) a mnus nkam na zem, teba pin . 12. Pak je jet poteba odpjet odpory R85 a R86 z druh strany. Ppadn je mon stvajc RTC odpjet a vymnit ho za DS12887A, kter u m baterii vevnit (na desce jsou na to pipraven dry).
      EVO T20 se vyrblo v nkolika variantch s odstupovanou velikost pamt, konkrtn typ uruje sriov slo. J mm pouze zkladn model s 32 MB onboard RAM a 16 MB onboard NAND flash. Nejvy m pak 256 MB RAM a 256 MB FlashROM. Mn se typy a poet osazench pamovch ip na desce a obsazen pamovch slot (nap. 32M verze: 1 x 58F256, 48M verze: 58128 + 58256, 64M verze: 2 x 58F256, 96M verze: 2 x 58F256 + 32MB SmartMedia karta). Flash pam lze sice teoreticky rozit SmartMedia kartou (max. 128 MB), ale prakticky se u ned nikde koupit. Navc nevm, zda-li by se BIOS vypodal s netradin kombinac onboard NAND flash a karty. Jako jedinou monost tak vidm rozkuchat njakou star 64MB nebo 128MB CompactFlash kartu a z n pepjet pamov ipy. Operan pam RAM lze rozit pomrn snadno pomoc SO-DIMM SDRAM PC133 modulu o max. velikosti 256 MB. Tak jsem tak uinil. Jen upozoruji, e v R se tyto historick moduly prodvaj za docela vydidusk ceny, na e-bay je lze koupit mn ne za polovic. Vloen modul si BIOS sm zdetekoval a v OS se objevila pln velikost, tj. celkem 288 MB RAM. Zde je pehled HW parametr:

CPU + NB:  National Semiconductors Geode GX1 @ 300 MHz; 0,18 µm; 352-pin BGA
SB + VGA: National Semiconductors CS5530A; max. 4 MB VRAM; 1280x1024/16bpp; VBE 2.0
Pam: RAM: 4x Hynix HY57V641620HG 4M x 16 SDRAM
1x soket pro SO-DIMM SDRAM PC133 modul, max. 256 MB
NAND flash: 1x Toshiba TC58128AFT 16 MB
1x slot pro SmartMedia kartu
Sovka: National Semiconductors DP83815 10/100 Mbit ethernet
Audio: CS5530A Kahlua - integrovan v SouthBridge, AC97
VSA emulace SoundBlaster 16 pes SMI BIOS
RTC: Dallas DS12885 bez zlon baterie
USB: 4-portov USB 1.1 hub Texas Instruments TUSB2046
Konektory: 1 x napjen 5 V DC (na konektoru vpravo dole je -, ostatn 3 dutinky jsou +, protikus)
4 x USB 1.1
1 x VGA D-SUB 15
1 x 3,5 mm jack phones / line out
1 x 3,5 mm jack microphone in
1 x RJ45 ethernet
BIOS: Wyse embedded BIOS, nem SETUP, upgrade po sti pes TFTP
256 kB FlashROM Winbond W29C020, 5 V nebo
512 kB FlashROM Winbond W29C040, 5 V (verze s WinXPE)
Rozmry: 19 x 20 x 4,5 cm (bez podstavce); samotn deska: 14 x 16 cm

Zkladn deska:

T20 MB top T20 MB bottom

Firmware (BndL, no-PXE)

      Od velikosti instalovan pamti se odvj tak nainstalovan operan systm. Verze s 16 a 32 MB Flash b na Windows CE 2.12 nebo Windows CE.NET, 48 - 128 MB verze jedou na Windows NT embedded a nejvy 192 a 256 MB drt Windows XP embedded. Nkter verze firmwaru maj podporu PXE (bootovn ze st). Originln firmware lze sthnout na webu hp. Firmware se skld ze dvou st: safemode BIOS + Netxfer klient, kter sdl ve 256kB FlashROM (U11) a hlavn BIOS s dalmi ROM moduly a operan systm, kter je uloen v onboard NAND flash (U9), ppadn na SmartMedia kart. BIOS nem klasick SETUP, veker nastaven se provd a v operanm systmu.
      Update firmware se provd po sti protokolem BOOTP/TFTP. Pokud nemme k dispozici LAN, budeme potebovat ken UTP kabel pro pm propojen s PC - serverem. Na PC je teba nainstalovat utilitu Netxfer a ta vyaduje pro svou funkci M$ Javu (pod Sun JVM nefunguje). V nastaven st vypneme DHCP a nastavme IP adresu 10.0.0.1 a masku 255.255.255.0. Soubor s pslunm firmwarem zkoprujeme do adrese Netxferu a pejmenujeme ho na bootp.bin. Spustme Netxfer a mlo by se objevit konzolov okno se statistikou staench soubor. Po zapnut EVO T20 nkolikrt stiskneme klvesu 'P' dokud se neobjev hlen klientsk strany Netxferu "Contacting Server" (pokud T20 msto toho normln bootuje, restartujeme delm stiskem power tlatka a zkusme to znovu), kter by se mla po chvilce spojit se serverem a zat stahovat soubor s firmwarem. Po spnm staen se soubor nejprve zkontroluje (nelze nap. do verze s Windows NTE nahrt firmware s Windows CE - zanadv e "Security Key does not match" nebo do verze s mn Flash pamti nahrt fimware, kter zabr vce Flash pamti). Pak se updatuje safemode BIOS a nsledn NAND flash s hlavnm BIOSem a OS. Na obrazovce se vypisuje, kter soubory z image firmware se prv flashuj. Nakonec se T20 sm restartuje a ml by najet nov firmware. Netxfer na serveru meme zavt. V ppad, e je druh st firmware pro NAND flash njakm zpsobem pokozena a systm nenastartuje tak jak m, lze znovu klvesou 'P' spustit Netxfer klient a opakovat flashovn. Pokud chyba postihne systmov BIOS a nelze tak spustit Netxfer klient, nezbv ne FlashROM vyndat a peprogramovat v programtoru.
      Pokud mte PC s Linuxem, lze pro upload firmwaru pout sprvn nakonfigurovan servery dhcpd a tftpd, tzn. DHCP na portech 10067, 10068 a TFTP na portu 10069. Karl Mowson na to napsal skript netxfer.sh. Pr jet existuje monost s klvesou 'Q', kter by mla spustit Netxfer klient na standardnch portech - nezkouel jsem, pouval jsem jenom windoz Netxfer.
      Nyn se podvme podrobnji na obsah firmware image. Ten se li podle druhu operanho systmu a zda-li obsahuje bootrom s podporou PXE. Firmwary s Windows NTE nebo XPE vdy obsahuj image virtulnho disku se souborovm systmem NTFS, z kterho BIOS klasicky zavd OS, zatm co firmware s Windows CE nepouv (nebo mi nen znm) souborov systm a startuje pmo soubor nk.bin (jdro Windows CE). Kdy jsem zkoumal rzn firmwary, narazil jsem mimo jin na kurizn etzce typu "All Your Base Are Belong To Us.", "Somebody Set Us Up The Bomb!", "You Have No Chance To Survive Make Your Time." a pod. (firmware Windows NTE+PXE 64 MB h064b218.bin od offsetu 322190h). Tamt na offsetu 3219F2h jsem nael etzce, kter vypadaj jako z njakho SETUPu - "USB: ", "Legacy", "Enabled" "Disabled", pitom T20 dn SETUP nem. Pozdji jsem piel na to, e novj verze firmware s PXE vypisuje pi bootu textovou informan tabulku o konfiguraci hardware, kde se tyto etzce vyskytuj. Take USB legacy podpora to asi nebude.
      Dle se budu podrobnji zabvat pouze firmwarem Windows NTE 48 MB u48cpq163.bin, jeho struktura je detailnji znm a existuj linuxov nstroje bundle-tools 0.7, kter ho um rozebrat a zase sloit. Firmware image je vlastn slepenec z vce rznch soubor, nkter jsou pouze doasn pro dal poteby flashovn, dal se nahraje do 256kB FlashROM a ostatn do NAND flash. Zde jsem se pokusil sestavit mapu zmiovanho 48MB firmware s Windows NTE u48cpq163.bin:

zatek konec popis
0000000 00001FF 512B hlavika firmwaru, adresy a velikosti obsaench modul, kon 55,AAh
0000200 00081FF 32kB firmware loader tftp.dat
0008200 00481FF 256kB sfamode BIOS + Netxfer client 9.06 ulc_code.ce (stejn ve vech FW)
0048200 0048206 7B bundle ROM signatura 1B, 58, 00, "BndL", nsleduje seznam soubor.
15 B ped jmnem souboru je velikost souboru UINT32,
19 B ped jmnem souboru je UINT32 offset od zatku bundle.
0048352 0088351 256kB sfamode BIOS + Netxfer client ulc_code.ce (2. kopie)
0088352 0088365 20B binrn kl k identifikujc konkrtn verzi EVO T20
0088366 00C8365 256kB hlavn BIOS ulc_code.bin (+ dal ROMky, VGA BIOS, SETUP?)
00A8366 00B0365 32kB VGA BIOS version 2.07 (C) Elpin Systems (soust ulc_code.bin)
00B8366 00C8365 64kB rezidentn st BIOSu, kter se mapuje na adresy F0000 - FFFFFh
00C8366 00C836A 5B etzec verze OS os.ver, zde "4.36 "
00C836E 00CBA95 14120B start-up obrzek (RLE BMP 640 x 480 / 8 bpp) poweron.bmp
00CBA96 00CBC95 512B MBR HDD image filesys0.img o velikosti 31719424 B
00CBC96 00CBE95 512B NTFS bootsector HDD image, CHS: 8/208/56, celkem 93183 sektor
1F0BA96 2E4BA95 15990784B druh st HDD image filesys1.img
2E4BA96 2E4BA9B 6B patika firmware image

Pomoc bundle-tools lze jednodue extrahovat soubory z ROM bundle (obsaen v hlavice "BndL") do pipravenho adrese. Pak je meme zmnit, odstranit nebo pidat a opt sloit do novho ROM bundle, ke ktermu musme jet pilepit zatek pvodnho firmware image, tzv. bootstrap o velikosti 295424 B. Firmwary s podporou PXE (64 - 256 MB) maj jinou strukturu, obsahuj novj verzi Netxfer klienta 11.49 a VGA BIOSu, neobsahuj ROM bundle signaturu a nen zde dn nstroj na jejich modifikaci.
      Prvn, co jsem si zkusil zmnit, bylo samozejm start-up logo, kter se zobrazuje pi bootovn. Pi vrob vlastnho obrzku je poteba nechat v palet rezervu pro systmov barvy (v PSP volba include windows colors), jinak si je systm alokuje sm a dojde tak k pomrven obrzku. Vsledek ulome do BMP souboru velikosti 640 x 480, 8 bit na pixel s kompres RLE.
      Pro ely nahackovn jinho OS ns bude zajmat hlavn HDD image - soubory filesys0.img a filesys1.img. BIOS obsahuje sluby INT 13h, kter emuluj klasick HDD pomoc jeho image v NAND flash, ale podporuje pouze funkce pro ten, take na virtuln disk nelze zapisovat. Proces bootovn se od klasickho PC li v tom, e BIOS T20 vbec neprovd kd MBR (1. sektor). Pouze si pete partition tabulku a z n si odvod CHS geometrii emulovanho disku. Stvajc HDD image m ponkud obskurn geometrii CHS: 8/208/56, j jsem pouil CHS: 140/16/32 a BIOS podle toho sprvn penastavil geometrii (ovil jsem si to vpisem z voln sluby . 8 INT 13h). Msto toho BIOS nate a spust 2. sektor, kde oekv bootsektor operanho systmu - zde NTFS bootsektor, kter dle nat soubor ntldr - zavad Windows NTE. To je teba mt na pamti, protoe FDISK a dal diskov nstroje nechvaj vdy prvn stopu przdnou a oddl tak zan a od CHS: 1/0/1 jak je na PC zvykem. Nejjednodu je po instalaci OS zkoprovat bootsektor z CHS: 1/0/1 na CHS: 0/0/2 v hexaeditoru.
      Mm clem bylo vytvoit si vlastn HDD image se souborovm systmem FAT16, kam bych nainstaloval DOS a linuxov jdro, kter by se podle poteby natalo loadlinem. Hlavn jsem musel HDD image zmenit, abych se veel do 16MB NAND flash. K tmto hrtkm se dobe hod PC emultor BOCHS. V nm jsem si vytvoil 35MB HDD image s geometri CHS: 140/16/32 (vt velikost kvli FAT16), kter nakonec oznu na velikost 16056832 B a pouiju jako filesys0.img pro sestaven novho ROM bundle. Pokud soubory na filesystmu nepekro s rezervou tuto velikost, tak po defragmentaci nehroz dn ztrta dat. Zde je mj konfigurk pro BOCHS.

FreeDOS na EVO T20

      8.11.2008 V BOCHSu jsem zkusil na HDD image nainstalovat celou adu rznch verz DOSu, kter sice v emultoru krsn fungovaly, ale po flashnut do T20 se to vdy pi bootovn zaseklo. Nap. FreeDOS vytuhnul kdesi na zatku bootsektoru a vypsal jen "FreeDOS" (mlo nsledovat "Kernel" a "GO!"), MS-DOS 6.22 a 8.0 zase skonily na "Starting MS-DOS", PC-DOS 7.1 npodobn, SysLinux 3.72 nemohl najt ldlinux.sys, GRUB4DOS 0.4.4 nenael grldr. Jedin funkn vjimka byl NT Loader a NT bootsector, kter jsem vytvoil pomoc utility bootprep z Windows XPE. Nepiel jsem na to, co dl tento bootsector jinak, ale prost funguje. Jene k emu je dobr NT Loader, kdy ne k bootovn Windows? NT loader m jet dal schopnost - um nast a spustit jin bootsector ze souboru, kter je uveden v boot.ini. Spoutn bootsectoru DOSu nemlo dn smysl, ale zato se d tmto zpsobem nast pmo grldr a GRUB4DOS u nabz vce monost. Umouje pmo spoutt FreeDOS kernel a Linuxov kernel vetn initrd a parametr. Bootovac etzec tedy vypad takto: BIOS -> NT bootsector -> NT Loader -> GRUB4DOS -> FreeDOS Kernel. Mj boot.ini vypad nsledovn:


[boot loader]
timeout=0
default=C:\grldr

[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation"
C:\grldr="GRUB4DOS 0.4.4"

a menu.lst pro GRUB4DOS:


color black/cyan yellow/cyan
timeout 1
default 0

title FreeDOS kernel 2038
chainloader (hd0,0)/kernel.sys                                   .

Tm ale nebyl problm bootovn FreeDOSu zdaleka u konce. FreeDOS kernel spadl ve fzi InitDisk a skonil dlenm nulou:

FreeDOS kernel InitDisk error, division by zero

Zkouel jsem nkolik verz kernelu (star 2035, 2036 i posledn 2038 SVN), ale vechny spadly stejn. Napadlo m tedy vyut monost GRUBu nabootovat image diskety s FreeDOSem, ale to dopadlo patn kvli chybjc funkci BIOSu: "Fatal: Your BIOS has no support for System Memory Map(INT15/EAX=E820h)." Podobn patn dopadl pokus s MemDiskem 3.72, kter spn naetl mal HDD image s FreeDOSem do pamti, ale pak skonil: "Loading boot sector... booting... disk error". Take tudy cesta nevede.
      Nakonec jsem si sthl zdrojky FreeDOS kernelu 2038 SVN a jal se je debugovat. Jako peklada jsem pouil Watcom C 11.0c, zde je chyba se zapnutm debug vpisem:

FreeDOS kernel InitDisk error, division by zero, debug mode

V modulu initdisk.c jsem narazil na nkolik chyb, nap. patn vpoet celkovho potu sektor oddlu, kde chyblo explicitn petypovn a vsledek nsoben tak petekl a chyblo piten 1 pro cylindry, protoe BIOS vrac max. hodnotu potanou od nuly a ne poet:
driveParam->total_sectors = (ULONG)(driveParam->chs.Cylinder+1)*driveParam->chs.Head*driveParam->chs.Sector;
Dal a podle m fatln chyba byla v nkterch inicializacch globlnch promnnch. Konkrtn promnn:
COUNT nUnits BSS_INIT(0);
nabvala nhodn podezele vysokch hodnot. Typ COUNT je definovn jako integer a makro BSS_INIT() najdeme v souboru init-mod.h. Pro peklada Microsoft C se rozvine jako:
#define BSS_INIT(x) = x
a pro ostatn pekladae zstv jako przdn makro:
#define BSS_INIT(x)
a Watcom C zejm globln promnn sm neinicializuje. Zajmav, e v BOCHSu i na ostatnch PC to takhle fungovalo, jen na EVO T20 nikoliv. Zahrnul jsem tedy __WATCOMC__ do definice makra s explicitnm nulovnm a hle, najednou to krsn nabootovalo:

FreeDOS kernel bug fixed - boot OK

Zde jsou ke staen mnou upraven zdrojov kdy FreeDOS kernelu z 30.11.2008. Zahrnuj i nkolik neoficilnch hotfix od Erica Auera.
      Tuil jsem, e by EVO T20 mohlo dky transparentn emulaci SoundBlasteru 16 dobe poslouit i na hran starch her a poutn demek. Pro inicializaci zvukov karty nejsou poteba dn ovladae, jenom sta do souboru autoexec.bat pidat dek:
SET BLASTER=A220 I5 D1 H5 P330 T6
kter ostatnm programm napov, jak prostedky maj pro zvuk pout. Naped jsem zkusil DOSov pehrva MPXPlay 1.56 a pehrt njakou MP3 - bez problm. Akort nutno podotknout, e zvukov vstup je trochu zaruen umy z MB. Pak jsem zkusil pustit moje oblben demko Boost od Doomsday, kter se po chvli taky rozbhlo i se zvukem, zde mal ukzka.
      kal jsem si, e kdy u jsem doel a sem, poda se to dothnout do konce njakm USB HID ovladaem. Dlouho jsem googlil a protal rzn fra, ale dn takov driver jsem nenael. Pouze ovladae pro USB mass-storage zazen a jeden ovlada pro USB my. Vyzkouel jsem vechny, jene dn nefungoval ani s USB klenkou ani s my. USBMASS/386 4.05 se pokouel nco detekovat, ale pod jen vypisoval teky a nic. USBASPI 2.27 nenajde dn OHCI adi, ASPIOHCI 1.1 nenajde dn zazen. USBLink 2.5 inicializuje OHCI adi, ale nenajde my. DUSE 4.9 detekovalo sprvn OHCI adi: "OHCI USB Controller initialized (BASE 0xCC000, IRQ 6)" a pozn i zazen, kdy zastrm klenku do USB: "Detected USB Storage Device", ale hned na to vype "Failed to load USB Storage Device". Jedinou nadj by mohlo bt DOSUSB 1.4c, kter je jet ve vvoji a autor zde m i ukzkov kd ten znak z USB klvesnice. Bohuel se pi sputn kousne. Ped asem jsem pomhal Georgovi testovat verzi 1.4b, kter dlala chyby pi penosu vtho mnostv dat, kdy se totln zboil filesystm na USB flashce (opraveno ve verzi 1.4c). Poprosil jsem ho o njakou ladic verzi, abych mohl problm vystopovat, ale bylo mi sue eeno, e pokud chci njak sahat do zdrojk, mm si koupit licenci za 1000 euro. Take tmto byl osud FreeDOSu na EVO T20 zpeetn, OS bez monosti ovldn je dost na nic :(.

Debian Linux na EVO T20

      6.12.2008 Na Internetu se d najt nkolik hotovch distribuc pmo pro EVO T20 vychzejcch z Debianu, DSL, Gentoo, Slackwaru, ... Avak jako sprvn nadenec jsem si chtl zkusit sestavit svou vlastn distribuci a nauit se tak nco novho. Vyel jsem z Debianu Etch, protoe u s Debianem mm jist zkuenosti na svm PC a notebooku (v souasnosti Debian Lenny). Debian lze snadno nainstalovat, zkladn systm zabere nco pes 100 MB a meme ho pak dle podle poteby snadno roziovat instalac balk (kterch je jenom na www.debian.org asi 10000) ze st pes apt. U celkem chpu hlku "Toto APT m schopnosti svat krvy" :) Bootovn systmu jsem u vyeil v pedchozm ppad. Sta nahrt kernel a initrd na HDD image a GRUB4DOS se u o to postar. Pro zmnu jdra je tedy nutn peflashovat firmware. Koenov systm je umstn na USB klence, kter si jdro za pomoci USB driver pipoj a nastartuje systm jako z normlnho disku.
      Rozmlel jsem, jakou verzi kernelu pro EVO T20 pout. Z Karlova porovnn kernel 2.4.27-2-386 a 2.6.18-3-486 jasn vyplv, e 2.4.x kernel je rychlej. Dvodem pro 2.6.x kernel zas mou bt nov ovladae, zejmna pro rzn USB zazen. Rozhodl jsem se pro posledn verzi kernelu 2.4.37 na kterou jsem aplikoval patch pro driver sovky od Franka Boehma, kter zamez otravnm kernel debug vpism na konzoli. Pustil jsem se do konfigurace jdra a odebral nkter zbyten komponenty, ale nesnail jsem se zas odrbat kernel a na kost. Nechal jsem tam zatm drivery na IDE a klasickou klvesnici, aby bylo mono kernel ladit v BOCHSu. Jejich vynechnm by se start urychlil o nkolik vtein. Po nkolika cyklech kompilace a test jsem doiteroval k funknmu konfigurku.
      Peklad byl pro m trochu oek, protoe 2.4.x kernel nejde normln peloit gcc 4.x, je poteba star verze (ach ta kompatabilita). To by nebyl problm, v Debianu lze nainstalovat vce gcc balk a pak jen zmnit symlinky. Hor bylo, e star kernel vyadoval initrd-tools a ten byl zas v konfliktu s initramfs-tools pro mj 2.6.x kernel. Nakonec jsem si vzpomnl, e se mi vl ve skni star HDD s instalac Debian Etch a 2.4.x jdrem a tak jsem ho vrazil do uplku a peloil to na nm. Vsledn initrd mi ale njak nefungoval. Vbec se nenaetly moduly pro USB adi a HID, pestoe v initrd byly. Inspiroval jsem se tedy initrd od Franka. V ppad 2.4.x jdra m initrd (init ramdisk) podobu malho image s filesystmem ext2, kter je zabalen gzipem a jsou v nm uloeny moduly potebn pro start systmu, initskript a pr utilit. Pomoc pkazu:
mount -o loop initrd /evo-t20/initrd
jsem si ho pipojil, pepsal pvodn moduly novmi a upravil initskript. Pak zas odmountovat, zagzipovat a hotovo. Zavad systmu (zde GRUB4DOS) rozbal image kernelu a ramdisku do pamti a spust kernel. Ten si pimountuje doasn ramdisk jako koenov souborov systm a podle initskriptu nathne dal moduly, zejmna ovladae zazen z kterho se m dle bootovat. Pak se pokus pimountovat dan oddl na bootovacm zazen (zde USB klenka). Pokud nic nenajde, ohls obligtn "Kernel panic: Unable to mount root fs..." (zde se aspo pust busybox). Pokud spn pimountuje bootovac zazen, dojde pomoc pivot_root k pepnut koenovho adrese a pokrauje zpracovn dalch inicializanch skript, kter mou zavdt dal moduly jdra, vypoutt dmony, atd.
      Zkladn instalaci Debianu pro EVO T20 jsem provedl pod Linuxem na svm PC pomoc vychytan utility debootsrap:
debootsrap etch /evo-t20/rootfs
kter postahuje z netu potebn balky dan distribuce a vytvo adresov strom clov distribuce v danm adresi. Pak je poteba run upravit nkolik konfiguranch soubor v /etc, zejmna /etc/fstab a /etc/apt/sources.list. Pak se meme do nov instalace pepnout pkazem:
chroot /evo-t20/rootfs
a v tom okamiku se adres clov distribuce stv koenovm adresem. Pak je mono pes apt doinstalovat dal balky, v mm ppad nap.: mc, gcc, dosemu, fonty, localepurge, gpm, htop, bluetooth, mpg123, opencubicplayer, mplayer, xmms, xorg, xpdf, gkrellm, icewm, iceape, lynx, centericq, bittorrent, mutella, apache2, php4, mini-httpd, openssh-client, openssh-server, vsftpd, xvncviewer, webcam, perl, python a dal, kompletn seznam zde. Nakonec jsem jet nainstaloval balky kernel-headers-2.4.37 a kernel-image-2.4.37, kter jsem si pedtm pi pekladu vytvoil pomoc make-kpkg. Po promazn zbytenost a kompresi vtiny binrek UPXem, jsem se dostal s velikost instalace pod 400 MB. Abych trochu ulehil USB klence od astch zpis, mountuju koenov filesystem s parametrem "noatime", kter zamez ukldn asu poslednho pstupu k souborm a adres /temp jsem vytvoil v dynamickm ramdisku. Tam jsem tak symlinkem pesmroval adres /var/log, aby se po ase systm nezahltil nahromadnmi logy (ukldn nkterch log jsem rovnou vypnul). Zde je mj /etc/fstab:


# /etc/fstab: static file system information.
# <file sys.> <mount point> <type> <options>     <dump>  <pass>

#Linux root:
/dev/sda2     /           ext2    errors=remount-ro,noatime 0 1
#Linux proc:
proc          /proc       proc    defaults                  0 0
#Linux temp in 64MB RAMDisk:
tmpfs	      /tmp        tmpfs	  size=64M                  0 0

#CD-ROM, USB...
#/dev/scd0     /mnt/_dvd   iso9660 ro,user,noauto            0 0
/dev/sda1     /mnt/usb1   auto    rw,user,auto,noatime      0 0

      Pak bylo poteba penst pipravenou instalaci na USB klenku. Oddly lze sice vytvoit linuxovm fdiskem, ale j mm radi PQ Magic. Pvodn jsem systm instaloval na 1GB intel USB Solid State Disk, jene ten zhy umel na vadn sektory (asi u byl naat). Dal pokus se konal na 2GB reklamn klence, kterou jsem dostal na veletrhu od uBloxu. Kolegm sice dv tyto klenky hned skply, ta moje se zatm dr. Vytvoil jsem 2 primrn oddly, prvn FAT16 o velikosti 1,4 GB a druh ext2 o velikosti 600 MB. Moje bootovac zazen je tedy /dev/sda2. Zjistil jsem, e je jet poteba na novm oddlu nechat pomoc fsck vytvoit UUID, jinak je z toho Linux zmaten. Pi pouit linuxovho mkfs to nen teba. Pak jsem USB klenku pimountoval a na ext2 oddl pekoproval adresov strom clov instalace, odmountoval, zastril do EVO T20 a trad. Do firmware jsem na HDD image pidal novou poloku GRUBu do menu.lst:


color black/cyan yellow/cyan
timeout 1
default 1

title FreeDOS kernel 2038
chainloader (hd0,0)/kernel.sys

title GNU Linux 2.4.37
#root is set in initrd/rootdev file
kernel (hd0,0)/vmlinuz
initrd (hd0,0)/initrd.gz                                       .

Po zapnut EVO T20 se obrazovka GRUBu objev za 40 s, konzolov Linux login za 1:40 od zapnut a start X Windows s ICEWM trv dalch 30 s.
      Po odladn kernelu a initrd jsem u nemusel dle firmware peflashovvat. Avak s doinstalovnm a konfigurac balk byla jet spousta prce. Pi rozchzen zvukovky jsem nejprve zkouel nativn driver kahlua AC97, kter se sice sprvn zavedl, ale nehrlo to. Frank mi poradil pesnou konfiguraci pro sb driver, pes kter to hraje dobe, akort je dky emulaci vy zt CPU. Do souboru etc/modules sta pidat dek:
sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0
Pak jsem ml problm, e se mi nechtl spustit Xorg, protoe chyblo zazen /dev/input/mouse0 a defaultn konfigurk Xorg bez myi nespustil. Upravil jsem si k obrazu svmu xorg.conf od Philipa D Loewena. Driver nsc mi sice v Xkch fungoval dobe, jene po ukonen Xorg a nvratu do textovho reimu konzole se nastavila nezvykle vysok obnovovac frekvence 140 Hz / 69,2 kHz (vypad to, jako by se nepeprogramoval CRTC a zstalo asovn z grafickho reimu). Mj CRT to jet sthal, ale dn LCD takovou frekvenci nepobere a lze akort tak restartovat systm. Proto pouvm vesa driver, kter je o nco pomalej, ale funguje. Tak jsem zjistil, e nejde nastavit vy rozlien jak 1024 x 768, pestoe by grafick jdro mlo umt a 1280 x 1024 / 16 bpp. Pina bude asi v tom, e VGA BIOS v EVO T20 nastav grafick jdro tak, e si alokuje pouze 2,5 MB msto max. 4 MB videopamti (pro 1280 x 1024 / 16 bpp je poteba asi 2,6 MB). Existuje sice patch pro GRUB od Mr. Johannsena, kter pi bootovn penastav registry grafickho jdra na 4 MB videopamti, ale zas to pr zlob pi pouit framebuffer konzole, kde se pak v sti obrazovky ukazuje njak smet.

      28.12.2008 Ohledn problmu s VGA BIOSem m napadla takov vc, e bych zkusil do firmware nahrt jin VGA BIOS (stvajc je ver. 2.07), kter by byl mon ochoten alokovat vce videopamti. Naped jsem zkusil vyextrahovat VGA BIOS ver. 4.13 z 128MB NTE+PXE verze firmwaru pro EVO T20, ale po flashnut vbec nenaskoil obraz. To sam u VGA BIOSu z 256MB firmware pro WYSE Winterm 8235LE. Hledal jsem tedy na Internetu BIOSy pro rzn prmyslov desky postaven na Geode GX1. Podailo se mi vyextrahovat VGA BIOS ver. 2.08, kter po flashnut normln fungoval, ale opt alokoval jenom 2,5 MB videopamti. Kdy nebylo co dl zkouet, prohnal jsem pvodn VGA BIOS 2.07 disassemblerem a proel inicializan rutinu. Jak jsem zjistil, tak ta pouze ovuje, zda-li sed PCI Device ID s tm, co je uloeno v intern PCIR struktue BIOSu a dle provd njak nastaven na IO portech CRTC. dn pstup k registrm, kter maj nco spolenho s nastavenm videopamti jsem nenael. Z toho plyne, e VGA BIOS za nic neme a je teba hledat jinde, nejsp v systmovm BIOSu.

      5.1.2009 Zamil jsem se tedy na systmov BIOS, reps. jeho rezidentn st, kter se mapuje na adresy F0000 - FFFFFh (posledn 64kB blok modulu ulc_code.bin). Ten jsem prohnal disassemblerem - zde je kompletn vpis, kter jsem sten upravil a okomentoval. V datasheetu k procesoru Geode GX1 jsem vytipoval 2 registry, kter maj co do inn s velikost framebufferu:
1) 32-bitov registr BC_DRAM_TOP (GX_BASE+8000h), kter na potku obsahuje nejvy adresu fyzick RAM. BIOS ho automaticky nastav podle velikosti detekovan RAM v systmu (vetn pdavnho pamovho modulu SO-DIMM), v mojem ppad m hodnotu 11FFFFFFh (32 + 256 MB RAM).
2) 32-bitov registr MC_GBASE_ADD (GX_BASE+8414h), kter obsahuje poten adresu framebufferu, jen je umstn na konci RAM. Rozdl tchto 2 adres tedy uruje velikost framebufferu. Z logiky vci vyplv, e velikost lze mnit pouze ve fzi inicializace BIOSu, pozdji by mohlo dojt k pepsn pamti operanho systmu novm framebufferem. V mojem ppad byla tato adresa nastavena na 11D80000h, tedy 2,5 MB pro framebuffer (ten me mnit velikost pouze s krokem po 0,5 MB). Po nastaven bzov adresy framebufferu BIOS posune BC_DRAM_TOP o jeho velikost ne, u m na hodnotu 11D7FFFFh. Tm je zajitno, e OS nevyuije pam ve jako normln operan pam a nedojde ke kolizi kdu/dat s obrazovmi daty ve framebufferu.
GX_BASE je bzov adresa MMIO (pamov mapovanch) registr funknch blok procesoru a lze ji zskat z GCR registru CPU, v mojem ppad m hodnotu 40000000h. V BIOSu jsem nael odpovdajc st kdu, kter nastavuje registr MC_GBASE_ADD a podrobil ho dkladnj analze - ve vpisu najdete zmnn blok pod labelem "SET_FB_SIZE". Je zde vidt, e BIOS vybr velikost framebufferu ze ty konstant: 2, 4, 6, 8 MB na zklad voln funkce, kter manipuluje s IO portem F808h. Bohuel sem nikde v dokumentaci o portu F808h nic nenael. Zkusil jsem tedy velikost nastavit natvdro pepsnm dku s instrukc "OR SI, 1" na "MOV SI, 8" pro 4MB framebuffer:

F000:C6C9        call    TEST_IO_F808h
F000:C6CC
F000:C6CC FB_SIZE5_NOT_USED:             ; FrameBuffer size in 0,5MB units
F000:C6CC        mov     si, 5           ; this is some default value, my EVO T20 desn't use it
F000:C6CF        test    eax, 1          ; if EAX!=1 then skip (depends on reading IO port F808h)
F000:C6D5        jnz     short skip_fb_size_rd ; read GX_BASE+8000h (BC_DRAM_TOP)
F000:C6D7        mov     ebx, eax        ; my EVO T20 didn't jump there
F000:C6DA        and     ebx, 0Ch        ; mask bits3:2
F000:C6DE        mov     esi, cs:[ebx+0C690h] ; ESI = [F000:C690/C694/C698/C69Ch]
F000:C6E7        or      si, 1           ; FrameBuffer size + 0,5MB
F000:C6E7                                ; Patch this with MOV SI,8 to get 4MB FrameBuffer
F000:C6EA skip_fb_size_rd:               ; CODE XREF: F000:C6D5.j
F000:C6EA        mov     ax, 8000h       ; read GX_BASE+8000h (BC_DRAM_TOP)
F000:C6ED        mov     bx, 0C6F3h      ; (bit28:17=highest avail. mem. addr. not including FB, LSB=128kB)
F000:C6F0        jmp     RD_GX_BASE_AX2  ; continue at CS:[C6F3h]
F000:C6F3        inc     edx             ; EDX = 11FFFFFFh + 1, bit28:17 = 8FFh (32 + 256 MB RAM)
F000:C6F5        shr     edx, 13h        ; 12000000h>>19 = 240h
F000:C6F9        sub     dx, si          ; DX = 240h - 5 -> GRBA = 11D80000h -> 2.5MB framebuffer
F000:C6FB        and     dx, 7FFh        ; mask Graphics Base Address29:19 bits
F000:C6FF        mov     ax, 8414h       ; write GX_BASE+8414h (MC_GBASE_ADD)
F000:C702        mov     bx, 0C708h      ; (bit10:0 = Graphics Base Address29:19, GRBA18:0 is always 0)
F000:C705        jmp     WR_GX_BASE_AX2  ; continue at CS:[C708h]

To v praxi znamen pepsn 3 Byte v modulu ulc_code.bin (ten zan na offsetu 88366h v image firmware bootp.bin) na offsetech:
3C6E7h: 83h -> BEh (MOV SI opcode)
3C6E8h: CEh -> 08h (immediate value LSB)
3C6E9h: 01h -> 00h (immediate value MSB)
BIOS nekontroluje dn checksum, take tato prava opravdu sta. Po spnm flashnut novho firmwaru jsem si v linuxu zptnm tenm ovil, e se MC_GBASE_ADD posunul na 11C00000h, tedy framebuffer se zvtil na 4 MB. Nativn driver nsc pro Xorg hned tuto zmnu detekoval a sprvn nastavil rozlien 1280 x 1024 / 16 bpp. Bohuel vak petrvv problm pi nvratu do textov konzole, kdy se nastav 140 Hz refresh monitoru. Zkouel jsem nainstalovat i backport Xorg 7.3.0 pro Debian Etch, ale bohuel se stejnm vsledkem.
      Reportovan velikost videopamti VESA BIOSem se nezmnila, stle hls 2240 kB. Vrtil jsem se tedy k disassemblovanmu VGA BIOSu a hledal tentokrt kd VESA/VBE funkce 4F00h, viz label "VESA_GET_INFO". Ta vrac zkladn informace o VBE vetn velikosti videopamti v 64kB blocch. Funkci detekujc velikost videopamti najdete pod labelem "get_vram_size". Ta te rozen CRTC registr s indexem 3Eh. O nm se pe v dokumentaci, e obsahuje velikosti videopamti v 64kB blocch, ale ani slovo o tom, jakm zpsobem si to vycuc z prstu, kdy na zmny MC_GBASE_ADD nereflektuje. Pokusil jsem se tedy vnutit velikost videopamti run pepsnm dku s instrukc "MOV AL, AH" na "MOV AL, 40h" pro 4 MB:

C000:6783 get_vram_size proc near        ; CODE XREF: sub_C6720+41p
C000:6783        push    bx
C000:6784        push    cx
C000:6785        push    dx
C000:6786        call    get_CRTC_port   ; determine IO port of CRTC DX = 3B4h or 3D4h
C000:6789        mov     al, 3Eh         ; AL = 3Eh - Size of graphics memory in 64K units (RO)
C000:678B        call    read_CRTC_al_ah ; read ext. CRTC register 3Eh to AH
C000:678E        mov     al, ah	         ; AL = AH = video memory size in 64kB blocks;
C000:678E                                ; patch by mov al, 40h to get 4MB graphics memory                .
C000:6790        cbw   		         ; AX = sign-extend of AL
C000:6791        cmp     al, 21h         ; if AL != 33 (2112kB)
C000:6793        jnz     short skip_dec_al ; then leave value unchanged
C000:6795        dec     al    	         ; if AL == 33 then AL-- (AL = 32, 2048kB)
C000:6797 skip_dec_al:                   ; CODE XREF: get_vram_size+10j
C000:6797        pop     dx
C000:6798        pop     cx
C000:6799        pop     bx
C000:679A        etn
C000:679A get_vram_size   endp

To v praxi znamen pepsn 3 Byte v modulu ulc_code.bin (ten zan na offsetu 88366h v image firmware bootp.bin) na offsetech:
2678Eh: 8Ah -> B0h (MOV AL opcode)
2678Fh: C4h -> 40h (immediate value)
27FFEh: FFh -> 5Dh (updated checksum)
VGA BIOS je regulern ROM modul s 55AAh hlavikou a tak by ml bt opraven i jeho kontroln souet. Po spnm flashnut upravenho firmwaru vesa driver pro Xorg sprvn detekoval 4 MB videopamti a nastavil rozlien 1280 x 1024 / 16 bpp, jene obraz byl njak rozbit. Rozeznal jsem barvu pozad IceWM a svisl ed pruh v barv taskbaru, ale nebyla vidt ani my ani okna. Mon bude jet poteba upravit jinou VESA/VBE funkci (nap. pro nastaven videomdu i zskn informac o videomdu).
      Dle jsem se dozvdl z mailing listu zajmavou informaci, e u firmwar s Windows XPE + PXE lze nastavit normln rozlien 1280 x 1024 / 16 bpp. Mon bude schdnj cesta upravit tento firmware pro moje EVO T20 s 16 MB NAND flash...

      3.4.2010 David Parkinson zkoumal moje disassemblovan kdy BIOSu a objevil, e hodnota registru MC_GBASE_ADD se nastavuje podle jednoho byte v konfiguran EEPROM, kter je pipojen k ethernet ipu National Semiconductors DP8381. Prvnch 12 word je vyhrazeno pro konfiguraci sovky (nap. MAC adresa) a dalch pr slov vyuv BIOS. ten a zpis do tto EEPROM se dl pes I/O port F808h. Na to jsem pedtm narazil, ale nevdl co to dl. To znamen, e nen poteba patchovat kd BIOSu, ale pouze zmnit word 18h z hodnoty 0010h na 0014h. David k tomuto elu napsal jednoduch progrmek evo_eeprom (s vyuitm kd diagnostick utility od National Semiconductors). Zkusil jsem tedy tuto modifikaci, ale bohuel VESA md 1280 x 1024 / 16 bpp stejn nefungoval korektn. Mon je poteba zmnit jet njak dal bajty v EEPROM, ale k tomu bychom potebovali porovnat dump z PXE firmware.

Firmware (s podporou PXE)

      16.1.2009 Jak u bylo zmnno ve, firmwary s podporou PXE (WinNTE i WinXPE) maj jinou strukturu, ne firmwary bez PXE. Veer jsem na mailing listu zachytil zprvu od Klause Kleina, kter pidal na SourceForge Wiki detailn popis firmwaru WinNTE s PXE pro EVO T20 s 64 MB NAND flash. J jsem si pro zmnu sthnul 256MB firmware s WinXPE a PXE a podrobil ho analze, zda-li popis odpovd. Struktura je stejn jako u WinNTE firmwar s PXE. Tento druh firmware neobsahuje dnou centrln tabulku s popisem obsahu, ale skld se z nkolika modul slepench dohromady, kde kad modul zan svou hlavikou, jen popisuje jeho velikost, jmno, atd. a dle obsahuje vlastn binrn data. Na konci jsou pak 2 speciln moduly bez vlastnho obsahu, kter image firmware zakonuj. Hlavika modulu, stejn jako obsah, m promnnou dlku. Zde je popis hlaviky:

velikost popis
4 Byte zatek hlaviky, vdy stejn DWord 00003938h ("89 ")
4 Byte velikost binrnho obsahu modulu (DWord little endian)
4 Byte neznm, vdy stejn DWord 00000000h
4 Byte dlka jmna clovho modulu (vetn koncov nuly, DWord little endian)
N Byt nulou ukonen etzec se jmnem clovho modulu
4 Byte dlka jmna zdrojovho modulu (vetn koncov nuly, DWord little endian)
M Byt nulou ukonen etzec se jmnem zdrojovho modulu

Jmno modulu obsahuje i cestu odkud byl soubor naten a kam se m do flash uloit. Ihned za hlavikou nsleduj binrn data. Zde jsem se pokusil sestavit mapu zmiovanho 256MB firmware s Windows XPE s podporou PXE h256b255.bin:

zatek konec popis
00000000 000001FF 512B hlavika firmwaru, kon 55,AAh
00000200 0021F1FF 2224128B Netxfer client bootstrap (zarovnno 0)
0021F200 0021F245 70B hlavika modulu .\skeys\k.UTCXPECompaqClosedMASK
0021F246 0021F259 20B .\skeys\k.UTCXPECompaqClosedMASK (binrn kl identifikujc konkrtn verzi EVO T20)
0021F25A 0021F28C 51B hlavika modulu ulc512.rom
0021F28D 0029F28C 524288B safemode BIOS ulc512.rom (obsahuje Netxfer client 11.48, skld se ze dvou identickch 256kB blok)
0029F28D 0029F2CE 66B hlavika modulu .\component\prepmsg.txt
0029F2CF 0029F2D6 8B .\component\prepmsg.txt (textov soubor, obsahuje jen "dummy \r\n")
0029F2D7 0029F30A 52B hlavika modulu t20.raw
0029F30B 0F69F30A 255852544B HDD image t20.raw (CHS: 976/16/32, LBA: 499712)
0029F30B 0029F50A 512B MBR na HDD image t20.raw (CHS: 0/0/1, LBA: 0)
002A330B 002A350A 512B Wyse (typ 52h = CP/M) partition bootsector v t20.raw (CHS: 0/1/1, LBA: 32)
002A350B 003A330A Wyse partition data (celkov velikost oddlu 1048576 B vetn bootsektoru)
003A330B 003A350A 512B NTFS (typ 07h = NTFS) partition bootsector v t20.raw (CHS: 4/1/1, LBA: 2080)
003A350B 0F69F30A NTFS partition data (celkov velikost oddlu 254787584 B vetn bootsektoru)
0F69F30B 0F69F33D 51B hlavika modulu bios.bin
0F69F33E 0F71F72A 525293B hlavn BIOS bios.bin (+ dal ROMky, VGA BIOS, PXE BootROM, start-up logo, SETUP?)
0F6ED2FB 0F6F428A 28560B VGA BIOS version 4.13 (C) Elpin Systems, ROM header: 55,AA,40h (soust bios.bin)
0F71F72B 0F71F762 56B hlavika modulu version.inf
0F71F763 0F71F8DF 381B textov soubor s info o firmware version.inf
0F71F8E0 0F71F91C 61B hlavika modulu component\transferend
0F71F91D 0F71F9C8 172B textov soubor component\transferend s hlkou, kter se objev pi spnm dokonen update firmwaru
0F71F9C9 0F71F9EC 36B hlavika modulu ~REBOOT (0 B, pkaz k restartu)
0F71F9ED 0F71FA0A 30B hlavika modulu ~EOT (0 B, patika FW image)

      Na zklad tchto znalost jsem se pokusil vytvoit vlastn verzi firmware, kter by se vela do 16MB NAND flash. Prvn skal bylo v modulu ulc512.rom, kter pot s 512kB FlashROM, ale mj model EVO T20 m jen 256 kB. Jak jsem zjistil, tak tento modul se skld ze dvou identickch 256kB st, take lze jednu vynechat. Modul jsem tedy oznul na 256 kB a upravil v hlavice jeho velikost. Dle bylo poteba zmenit HDD image. U tohoto typu firmware me HDD image zabrat celou velikost NAND Flash, take jsem pouil parametry CHS: 64/16/32, celkem 32768 sektor a upravil patin partition tabulku. HDD image obsahuje vdy dva oddly. Prvn je typu 52h (CP/M), neaktivn, o velikosti 1 MB a slou pro uloen hlavnho BIOSu (512kB modul bios.bin) a textovho souboru version.inf). Pokud Netxfer nenajde na HDD image oddl tohoto typu, odmtne dl pokraovat ve flashovn. BIOS bootuje standardnm postupem, tj. nat a spout kd MBR, kter pak nate bootsektor aktivnho oddlu. Druh oddl je typu 07h (NTFS), aktivn, o velikosti 243 MB a obsahuje instalaci Windows XPE. Peformtoval jsem ho na FAT, nasysoval a zkoproval soubory ntldr, grldr, linuxov jdro + initrd, atd. a samozejm zkontroloval v BOCHSu.
      Pi flashovn novho firmware image se objevil dal zdrhel - Netxfer hlsil, e nesouhlas security kl, e se pokoum peflashovat jin model EVO T20. To jsem podle Klausova popisu obeel tm, e jsem nahradil modul .\skeys\k.UTCXPECompaqClosedMASK 20B klem ze svho pedchozho firmware zaloenho na 48MB verzi WinNTE bez PXE. Pi dalm pokusu se sice vyskytla chyba "Unable to OPEN DEVICE! (nand/format.nand)", "Stream ERROR! Unable to Bind Device! (nand/format.nand)", ale to je pi zmn na jin typ firmware normln. Stailo restartovat a nechat probhnout upgrade znovu, tentokrt u s novou verz Netxfer klienta 11.48. Po dalm restartu m pivtalo jin start-up logo a taky nov textov tabulka shrnujc informace o hardware a PXE 2.0 BootROM.
      Na otestovn velikosti videopamti jsem si napsal jednoduch progrmek - bootsektor v assembleru, kter pete a vype CRTC registr 3Eh. Peten hodnota je 40h, tzn. 40h * 64 kB = 4096 kB, take u by nemlo nic brnit v pouit rozlien 1280 x 1024 /16 bpp. Bohuel tak snadn to ale nebude. Jak jsem zjistil, moje pvodn konfigurace ntldr - grldr nefunguje. GRUB4DOS 0.4.4 najednou pe "Missing helper" a zatuhne jet ped zobrazenm menu. Zkusil jsem schvln GRUB nainstalovat pomoc grubinst.exe do bootsektoru 2. oddlu. V tom ppad se sice GRUB spustil, ale nenael soubor menu.lst a pepnul se do konzole. Jene to je mi bez podpory USB klvesnice na houby... Zkusil jsem jet instalaci do MBR, ale to skonilo hlkou "Missing MBR helper". Pak jsem zkouel oddl nasysovat FreeDOSem - kernel vytuhnul po initdisku (v njak funkci z newstuff.c). Zkouel jsem i jin verze DOSu, jin verze GRUB4DOS, SysLinux, ale nic nefungovalo (v BOCHSu samozejm bez problm). Zkusil jsem i prohodit poad oddl na disku a taky nic. Klaus narazil na stejn problm pi pouit GRUBu na linuxovm ext2 oddlu. Take jedin, co funguje, je NT loader a ten sm o sob neum pmo spoutt linuxov nebo FreeDOS kernel. Vypad to, e emulace INT 13h nefunguje tak, jak by mla. eenm by mohl bt vlastn NAND flash driver, kter by pouze zkoproval linux kernel do RAM a spustil. Momentln m nic dalho nenapad, ale snad se to poda asem rozlousknout...

Download

BIOSF000.TXT [964 kB] Disassembly listing systmovho BIOSu z oblasti F0000 - FFFFFh
VGABIOS.TXT [574 kB] Disassembly listing VGA BIOSu z oblasti C0000 - C7FFFh
BNDLTOOL.TGZ [21 kB] Bundle-tools 0.7 - nstroje pro manipulaci s firmware image
FDK2038S.ZIP [498 kB] Opraven zdrojov kdy FreeDOS kernelu 2038 SVN
BOCHSRC.TXT [33 kB] Konfiguran soubor pro BOCHS emultor pro ladn HDD image
CONFIG [37 kB] Konfiguran soubor pro Linux kernel 2.4.37
XORGCONF [3 kB] Konfiguran soubor pro Linux Xorg 7.1.0
DPKG-L.TXT [46 kB] Vpis instalovanch balk v Debian Linuxu (Etch)
NATSEMI.PAT [420 B] Patch pro Linux kernel driver sovky National Semiconductors DP83815
GRUBVRAM.PAT [5 kB] Patch pro GRUB od Mr. Johannsena na zvten videopamti
EEPROM.ZIP [13 kB] Nstroj na modifikaci obsahu konfiguran EEPROM
BOOSTDMO.AVI [644 kB] Videoukzka bootujcho FreeDOSu a kousek dema Boost/Doomsday



Zpt

Aktualizovno 15.9.2017 v 3:24