Hm, elég szomorú, hogy kissé üres ez a fórum... Abban bíztam, hogy itt találok hozzáértőt.
Mindegy, azért felteszem a kérdésem: lehetséges e, és hogyan, kernel kód írása nélkül a hardver direkt elérése Linux alatt? Konkrétan a printer portot szeretném használni mikrovezérlő programozás céljából, és nem tűnik kellemesnek, hogy ehhez mindig DOS-t kelljen indítanom...
Van egy regi P1-es gepem, es ebbol szeretnek csinalni egy kis jatekszert. (Konkretan motor-fordulatszamvezerles es nehany A/D atalakito kimenetenek a tovabbitasa egy PC fele lenne a feladata.)
Ket kerdesem van ehhez kapcsolodva:
1. Ra lehet-e venni valahogy ezt a gepet, hogy videokartya nelkul is boot-oljon?
2. Ra lehet-e venni, hogy ROM-ban levo programot inditson, ahelyett, hogy a hattertarakon keresne boot rekordot?
Gondoltam mar erre is. Csak attol felek, hogy a gyari BIOS inicializalja ugyan az alaplapon a mindenfele chip-eket, de en ezt nem biztos, hogy meg tudnam tenni, es attol felek, hogy enelkul nem mukodnenek az alaplapra integralt periferiak. Pedig szamomra pont ez lenne az elonye ennek a megoldasnak, mondjuk egy mikrokontrollerrel szemben. (Arrol nem is beszelve, hogy nem vagyok jartas a mikrokontrollerek vilagaban.)
Most jutott eszembe egy masik otlet, hogy a sajat programomat, ugy helyeznem el gepben, mint egy standard BIOS bovites. (Mint pl. a videokartyak BIOS-a)
Es ezzel megprobalnam becsapni az alaplapi BIOS-t, ugy hogy amikor az en ROM-ban levo rutinjaimra allitanam be az interrupt-tablaban a 13h es a 19h (ha jol emlekszem ezzel a hivassal tolti be a BIOS a boot sector-t) interruptok cimeit.
Szerintetek ez a megoldas mukodhet?
hmm... standard BIOS bővítéshez AFAIK szükséges valami kártya (esetleg egy meglévő video kártyának a BIOSát írod felül). Csak ehhez kártyát csinálni sem lenne járható út számomra legalábbis. Régi video kártyát használni az szóba jöhetne, de ez sem egyszerű dolog, általában EPROM-ban van a kódjuk, ahhoz pedig kell EPROM író, azt törölni kell UV fénnyel, stb. stb.
Nem tudnál találni valami egyszerűbb megoldást, mint pl. rávenni a mostani BIOS-t hogy bebootoljon egy pen driveról?
Azonkívül ha már A/D átalakító és motor fordulatszámmérésre kell az egész, akkor szerezz egy rendesebb PIC-et, meg tudod oldani vele a RS232 kommunikációt a PCvel és akkor nincs szükség erre az egész alaplapos biosos dologra. Ha jól értettem.
"Nem tudnál találni valami egyszerűbb megoldást, mint pl. rávenni a mostani BIOS-t hogy bebootoljon egy pen driveról?"
Ez konkretan biztos, hogy nem fog menni, ugyanis nincs USB vezerlo az alaplapon.
A BIOS bovites nekem nem tunik olyan bonyolultnak, valoban egy kartya kell hozza, a kartyan egy eleg egyszeru logikat kell csak megvalositani, hogy a ROM-ot a CPU a memoria reszekent lassa. Konkretan ilyet meg nem csinaltam, de ISA buszra mar keszitettem primitiv cuccokat. Ez sem tunik sokkal bonyolultabbnak.
A PIC-eket meg nem nagyon ismerem, majd utanajarok, hogy mire is kepesek igazabol. Lehet, hogy tenyleg ez lenne a legegyszerubb megoldas.
Mindenesetre koszonom a valaszokat!
Még mindig azt mondom, hogy egy PIC-kel nagyon könnyen meg lehet ezt csinálni. Nekem sincs sok tapasztalatom vele, de egy 16F84gyel kísérletezgettem 1x. Történetesen egyidejűleg vezérelt egy egyenáramú motort, egy ledet és közben kommunikált a soros porton (parancsokat fogadott és válaszolt). És az egészhez nem kell más mint egy programmer (http://www.jdm.homepage.dk/newpic.htm), egy PIC és néhány áramköri elem. Az AD átalakítók kimenetének a továbbítását is meg lehet vele oldani. És sokkal kevesebbet fog fogyasztani, kisebb helyen elfér, nem kell neki pontos 5V, egyszerűbb hardver kevesebb gond, stb. stb.
Ami a soros kommunikációt illeti, még az RS232 jelszíntátalakítókat is megspóroltam (http://www.geocities.com/uirr/index.htm).
Szóval gondolkozz el a PICes megoldáson... Ami a programozását illeti, azt is egy hétvége alatt átvettem. Van open source szoftver is hozzá (gnupic, picprog, stb.)...
Ha a programod elfér 128kb-ban, akkor kell csinálnod egy isa-s kártyát, amin pl. epromban ott csücsül a kód, a kártya pedig ezt az epromot illeszti a d000:0000 ill. e000:0000 tartományba.
Ha az itt látható memória megfelel bizonyos szabályoknak (ha jól emlékszem, 0x55, 0xaa-ra kell végződnie, de ez nem tuti), akkor a bios inicializáláskor rá fog ugrani.
Részletesebben nekem is utána kell néznem, addig viszont ajánlanám Abonyi Zsolt "PC Hardware kézikönyv" című könyvét.
Tipp: ha nem akarsz kártyát tervezni/gyártani ezért, akkor keríts egy hálókártyát, amin van eprom-foglalat (általában 32k-s 24256-os szokott rátervezve lenni), és tedd be abba mint boot epromot, vagy a d-s vagy az e-s blokk első felére lesz illesztve :)...
De nem értem viszont, hogy ez miben lenne jó egy magasszintű (pl. linux-os) vezérléshez, hiszen ezzel max. a bios-t tudod átverni, azt meg a linux ívesen figyelmen kívül hagyja, ha meg az egész kódot asm-ben írnád, akkor inkább javaslok én is pic-et (www.microchip.com, 16Fxxx szériát javasolnám, flash-es, nem kell neki külön égetőfesz, elég sok minden van benne, az ára meg 2-300Ft-tól 2-3eFt-ig terjed. Nézz meg egy-két adatlapot!)
Ha viszont mégis linuxot akarsz rajta futtatni, de rom-ból, akkor valamilyen compactflash-ide illesztőt javasolnék, (erről már volt szó itt a hup-on valamelyik fórumban,) és akkor egyszerűen vinyónak látszik, és kész.
Nezegetem a Parallax-ot is, meg a Microchip-et is. Biztatonak tunik mindketto.
"...egy magasszintű (pl. linux-os) vezérléshez..."
Nem akarok ra komoly op. rendszert. Csak felmerult bennem az otlet, hogy ezt a regi gepet hasznalom fel ilyesmire. Igazabol igy tenyleg agyuval lovok a verebre.
Ugyhogy egyre valoszinubb, hogy PIC-el lesz a problema megoldva. Van nehany ismerosom akik mar eleg sokat foglalkoztak vele, toluk biztosan tudok majd segitseget is kerni.
A halokartyas otlet nagyon tetszik, ezt mindenkeppen ki kell probalnom! Van is a gepben egy regi darab. :)
Én régebben csináltam ilyesmit csak én reléket kapcsolgattam szintén a printer portot izgattam. Az még 2.4-es kernelel volt, és C-ben írtam egy nagyon primitív kis "programot" SuSE 9.0 alatt. Ha segít el tudom küldeni a forrást.
CF kartyat ra lehet rakni IDE portra, mint winyot, arrol siman tudsz bootolni. Kell egy atalakito, ilyet keress. Semmi aktiv cucc nincs benne, akar csinalni is lehet viszonylag egyszeruen szerintem.
Hozzászólások
Hm, elég szomorú, hogy kissé üres ez a fórum... Abban bíztam, hogy itt találok hozzáértőt.
Mindegy, azért felteszem a kérdésem: lehetséges e, és hogyan, kernel kód írása nélkül a hardver direkt elérése Linux alatt? Konkrétan a printer portot szeretném használni mikrovezérlő programozás céljából, és nem tűnik kellemesnek, hogy ehhez mindig DOS-t kelljen indítanom...
Szia!
En itt kezdenem:
http://www.tldp.org/HOWTO/IO-Port-Programming.html
Aztan ha az IRQ-t is el akarod kapni, akkor irhatsz kernel drivert. Dos alatt mar en is csinaltam hasonlot, de linux alatt meg nem.
Udv:
Zoli
Talaltam meg ezt-azt:
IO kernel driver howto:
http://www.iglu.org.il/lxr/source/Documentation/input/input-programming.txt
Ez meg egy megvalositas, eleg regi es a fene tudja, hogy hanyas kernel kell hozza...
http://www.circlemud.org/~jelson/software/parapin/
Jo programozast!
Zoli
Sziasztok!
Van egy regi P1-es gepem, es ebbol szeretnek csinalni egy kis jatekszert. (Konkretan motor-fordulatszamvezerles es nehany A/D atalakito kimenetenek a tovabbitasa egy PC fele lenne a feladata.)
Ket kerdesem van ehhez kapcsolodva:
1. Ra lehet-e venni valahogy ezt a gepet, hogy videokartya nelkul is boot-oljon?
2. Ra lehet-e venni, hogy ROM-ban levo programot inditson, ahelyett, hogy a hattertarakon keresne boot rekordot?
Elore is koszonom a valaszokat!
írsz egy saját bios-t (vagy meghekkeled a mostanit) és lecseréled az alaplapit... akkor azt csinálsz vele amit akarsz.
Gondoltam mar erre is. Csak attol felek, hogy a gyari BIOS inicializalja ugyan az alaplapon a mindenfele chip-eket, de en ezt nem biztos, hogy meg tudnam tenni, es attol felek, hogy enelkul nem mukodnenek az alaplapra integralt periferiak. Pedig szamomra pont ez lenne az elonye ennek a megoldasnak, mondjuk egy mikrokontrollerrel szemben. (Arrol nem is beszelve, hogy nem vagyok jartas a mikrokontrollerek vilagaban.)
Most jutott eszembe egy masik otlet, hogy a sajat programomat, ugy helyeznem el gepben, mint egy standard BIOS bovites. (Mint pl. a videokartyak BIOS-a)
Es ezzel megprobalnam becsapni az alaplapi BIOS-t, ugy hogy amikor az en ROM-ban levo rutinjaimra allitanam be az interrupt-tablaban a 13h es a 19h (ha jol emlekszem ezzel a hivassal tolti be a BIOS a boot sector-t) interruptok cimeit.
Szerintetek ez a megoldas mukodhet?
hmm... standard BIOS bővítéshez AFAIK szükséges valami kártya (esetleg egy meglévő video kártyának a BIOSát írod felül). Csak ehhez kártyát csinálni sem lenne járható út számomra legalábbis. Régi video kártyát használni az szóba jöhetne, de ez sem egyszerű dolog, általában EPROM-ban van a kódjuk, ahhoz pedig kell EPROM író, azt törölni kell UV fénnyel, stb. stb.
Nem tudnál találni valami egyszerűbb megoldást, mint pl. rávenni a mostani BIOS-t hogy bebootoljon egy pen driveról?
Azonkívül ha már A/D átalakító és motor fordulatszámmérésre kell az egész, akkor szerezz egy rendesebb PIC-et, meg tudod oldani vele a RS232 kommunikációt a PCvel és akkor nincs szükség erre az egész alaplapos biosos dologra. Ha jól értettem.
ha már itt tartunk akkor egy beágyazott rendszerrel egyben mindent meg lehet csinálni és cserébe az egész nem lesz akkora mint a szgép tápja...
"Nem tudnál találni valami egyszerűbb megoldást, mint pl. rávenni a mostani BIOS-t hogy bebootoljon egy pen driveról?"
Ez konkretan biztos, hogy nem fog menni, ugyanis nincs USB vezerlo az alaplapon.
A BIOS bovites nekem nem tunik olyan bonyolultnak, valoban egy kartya kell hozza, a kartyan egy eleg egyszeru logikat kell csak megvalositani, hogy a ROM-ot a CPU a memoria reszekent lassa. Konkretan ilyet meg nem csinaltam, de ISA buszra mar keszitettem primitiv cuccokat. Ez sem tunik sokkal bonyolultabbnak.
A PIC-eket meg nem nagyon ismerem, majd utanajarok, hogy mire is kepesek igazabol. Lehet, hogy tenyleg ez lenne a legegyszerubb megoldas.
Mindenesetre koszonom a valaszokat!
szerintem nézz körbe itt:
http://www.parallax.com/
mindent meg lehet csinálni a cuccaikkal, persze ennél olcsóbban is össze lehet tákolni cumót sima PIC ből
Még mindig azt mondom, hogy egy PIC-kel nagyon könnyen meg lehet ezt csinálni. Nekem sincs sok tapasztalatom vele, de egy 16F84gyel kísérletezgettem 1x. Történetesen egyidejűleg vezérelt egy egyenáramú motort, egy ledet és közben kommunikált a soros porton (parancsokat fogadott és válaszolt). És az egészhez nem kell más mint egy programmer (http://www.jdm.homepage.dk/newpic.htm), egy PIC és néhány áramköri elem. Az AD átalakítók kimenetének a továbbítását is meg lehet vele oldani. És sokkal kevesebbet fog fogyasztani, kisebb helyen elfér, nem kell neki pontos 5V, egyszerűbb hardver kevesebb gond, stb. stb.
Ami a soros kommunikációt illeti, még az RS232 jelszíntátalakítókat is megspóroltam (http://www.geocities.com/uirr/index.htm).
Szóval gondolkozz el a PICes megoldáson... Ami a programozását illeti, azt is egy hétvége alatt átvettem. Van open source szoftver is hozzá (gnupic, picprog, stb.)...
Ha a programod elfér 128kb-ban, akkor kell csinálnod egy isa-s kártyát, amin pl. epromban ott csücsül a kód, a kártya pedig ezt az epromot illeszti a d000:0000 ill. e000:0000 tartományba.
Ha az itt látható memória megfelel bizonyos szabályoknak (ha jól emlékszem, 0x55, 0xaa-ra kell végződnie, de ez nem tuti), akkor a bios inicializáláskor rá fog ugrani.
Részletesebben nekem is utána kell néznem, addig viszont ajánlanám Abonyi Zsolt "PC Hardware kézikönyv" című könyvét.
Tipp: ha nem akarsz kártyát tervezni/gyártani ezért, akkor keríts egy hálókártyát, amin van eprom-foglalat (általában 32k-s 24256-os szokott rátervezve lenni), és tedd be abba mint boot epromot, vagy a d-s vagy az e-s blokk első felére lesz illesztve :)...
De nem értem viszont, hogy ez miben lenne jó egy magasszintű (pl. linux-os) vezérléshez, hiszen ezzel max. a bios-t tudod átverni, azt meg a linux ívesen figyelmen kívül hagyja, ha meg az egész kódot asm-ben írnád, akkor inkább javaslok én is pic-et (www.microchip.com, 16Fxxx szériát javasolnám, flash-es, nem kell neki külön égetőfesz, elég sok minden van benne, az ára meg 2-300Ft-tól 2-3eFt-ig terjed. Nézz meg egy-két adatlapot!)
Ha viszont mégis linuxot akarsz rajta futtatni, de rom-ból, akkor valamilyen compactflash-ide illesztőt javasolnék, (erről már volt szó itt a hup-on valamelyik fórumban,) és akkor egyszerűen vinyónak látszik, és kész.
Koszi a link-eket!
Nezegetem a Parallax-ot is, meg a Microchip-et is. Biztatonak tunik mindketto.
"...egy magasszintű (pl. linux-os) vezérléshez..."
Nem akarok ra komoly op. rendszert. Csak felmerult bennem az otlet, hogy ezt a regi gepet hasznalom fel ilyesmire. Igazabol igy tenyleg agyuval lovok a verebre.
Ugyhogy egyre valoszinubb, hogy PIC-el lesz a problema megoldva. Van nehany ismerosom akik mar eleg sokat foglalkoztak vele, toluk biztosan tudok majd segitseget is kerni.
A halokartyas otlet nagyon tetszik, ezt mindenkeppen ki kell probalnom! Van is a gepben egy regi darab. :)
Én régebben csináltam ilyesmit csak én reléket kapcsolgattam szintén a printer portot izgattam. Az még 2.4-es kernelel volt, és C-ben írtam egy nagyon primitív kis "programot" SuSE 9.0 alatt. Ha segít el tudom küldeni a forrást.
Ha nem nagy gond akkor tedd publikussa
CF kartyat ra lehet rakni IDE portra, mint winyot, arrol siman tudsz bootolni. Kell egy atalakito, ilyet keress. Semmi aktiv cucc nincs benne, akar csinalni is lehet viszonylag egyszeruen szerintem.