/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Kamuflere Linuxsystem som USB device?
Fra : Thorbjørn Ravn Ander~


Dato : 24-12-05 15:21


Jeg har en MIPS-baseret PDA (gp32) som jeg skal til at lege med. Den
kan programmeres til at opføre sig som en USB disk til det indbyggede
hukommelseskort, og der er en alfaport af Linux til dyret.

Jeg har funderet lidt over hvordan man kan få fuld netadgang på
gp32'eren via USB uden at ændre på at den forbindes som en USB-enhed,
og ikke vært, og har indtil videre udtænkt to muligheder.

1) Dimsen simulerer et USB modem og tilbyder PPP over dette. Dette
kræver opsætning af PPP i den anden ende.

2) Dimsen simulerer et USB netkort med et lille net bagved, hvor
dimsen selv tilbyder DHCP konfiguration.

Sidstnævnte tror jeg vil være enklest at få til at virke uanset
platform på PC'en.

Spørgsmålet er nu om det er den rette vej frem, og om det allerede
findes i Linuxverdenen, og i så fald hvor. Jeg har kigget lidt rundt
i den embeddede verden, og det jeg har fundet drejer sig hovedsageligt
om små PC'ere,

Alternativt kunne man vel tage noget kode fra Bochs (eller plex86) som
jo også leger netkort mod en klient.

Tanker og ideer til hvordan jeg griber dette an?


(Til eventuelle legebørn så er storebroderen gp2x just udkommet, og det
er en fuld Linuxmaskine i en PSP-lignende indpakning. Se gp32x.com
for detaljer).

--
Thorbjørn Ravn Andersen


 
 
Kasper Dupont (25-12-2005)
Kommentar
Fra : Kasper Dupont


Dato : 25-12-05 01:37

Thorbjørn Ravn Andersen wrote:
>
> Jeg har en MIPS-baseret PDA (gp32) som jeg skal til at lege med. Den
> kan programmeres til at opføre sig som en USB disk til det indbyggede
> hukommelseskort, og der er en alfaport af Linux til dyret.
>
> Jeg har funderet lidt over hvordan man kan få fuld netadgang på
> gp32'eren via USB uden at ændre på at den forbindes som en USB-enhed,
> og ikke vært, og har indtil videre udtænkt to muligheder.
>
> 1) Dimsen simulerer et USB modem og tilbyder PPP over dette. Dette
> kræver opsætning af PPP i den anden ende.
>
> 2) Dimsen simulerer et USB netkort med et lille net bagved, hvor
> dimsen selv tilbyder DHCP konfiguration.
>
> Sidstnævnte tror jeg vil være enklest at få til at virke uanset
> platform på PC'en.
>
> Spørgsmålet er nu om det er den rette vej frem,

Der vil jeg umiddelbart sige ja. Begge dine idéer lyder som
fornuftige løsninger. Om man helst vil have PPP eller noget
ethernetlignende er nok en smagssag. Men personligt hælder
jeg nok mest til ethernet løsningen.

Jeg vil mene at det bør laves på sådan en måde, at det fra
begge sider ses som et device. Altså enten ses det fra hver
OS som et serielt device hvor man f.eks. kan køre PPP.
Eller også ses det fra hver side som et ethernet device,
hvor man f.eks. kan køre IP.

Altså på PC'en bruger man en af de eksisterende drivere til
en USB/seriel-adapter eller en USB/ethernet-adapter. På
gp32eren laver du så en driver, der fungerer som USB enhed
for PC'en og samtidig som seriel eller ethernet driver for
Linux på gp32.

> og om det allerede
> findes i Linuxverdenen, og i så fald hvor.

Jeg tror nok jeg har hørt om sådan noget der skulle kunne
fungere som seriel. Så vidt jeg har forstået, så skulle det
på USB enheden være lavet som en hardware løsning, så Linux
derpå egentlig bare burde se en seriel port.

Hvis ellers jeg har forstået det rigtigt (hvilket ikke er
sikkert), så er der måske allerede drivere som ville tillade
ppp.

Hvis ikke jeg har forstået det helt rigtigt, så må jeg bare
sige, at du er inde på noget af det rigtige, men jeg ved
altså ikke helt præcist, hvad der allerede eksisterer.

>
> Alternativt kunne man vel tage noget kode fra Bochs (eller plex86) som
> jo også leger netkort mod en klient.

Det lyder som en dårlig løsning.

De emulerer jo et stykke hardware. Det du har er et stykke
hardware, som er lidt anderledes, men du skal bruge en
driver, som har det rette interface imod OS. På den måde er
det ret stor på den opgave koden i emulatoren løser og det
du har brug for.

Derudover har emulatorerne også noget kode til at fuske en
delvist fungerende netforbindelse uden at have adgang til at
oprette et netværksinterface på hostsystemet. Den slags
fusk har du ikke brug for til dit projekt.

Jeg kan ikke udelukke, at emulatorerne kan have noget kode,
du kan bruge. Men jeg vil mene det er usandsynligt.

>
> Tanker og ideer til hvordan jeg griber dette an?

Du skal lave noget, der fremstår som passende drivere for
OS på begge systemer. Altså enten fremstår det som seriel
på begge systemer, eller også fremstår det som ethernet på
begge systemer.

Til PC'en findes der allerede drivere, der kan bruges.
F.eks. ved jeg at CDCEther kan bruges til den USB/ethernet-
adapter, der er indbygget i Motorola SB4100 kabelmodems.
Du kunne satse på at lave noget kompatibelt med den driver
(men det kan tænkes, der findes andre og bedre drivere).

Held og lykke med projektet. Jeg håber det lykkes at lave
noget fornuftigt. Jeg ved desværre ikke helt nok om USB
til at give alle svarene. Men jeg håber jeg alligevel har
givet dig noget brugbart input.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste