# Benötige Hilfe beim Kompilieren eines Treibers ("geloest")

## andi_s

hallo,

ich möchte einen alten Treiber für einen neueren Kernel (2.6.35) kompilieren bekomme dabei aber immer eine Fehlermeldung, die ich selbst nicht beheben kann:

code.h

```

#define UHCRHDA      _REG(0x0048)

#define UHCRHDA_NOCP   (1 << 12)

```

code.c

```

UHCRHDA &= ~UHCRHDA_NOCP;

```

Fehlermeldung beim Kompilieren:

```

error: lvalue required as left operand of assignment

```

Ich hoffe mir kann Jemand sagen wie ich die Zeile in code.c anpassen muss, damit der Kompiler keinen Fehler mehr meldet.

DankeLast edited by andi_s on Fri Nov 05, 2010 2:37 pm; edited 1 time in total

----------

## Christian99

hm, tja. das lässt sich so einfach nicht sagen. was ist denn "_REG(0x0048)" vermutlich ein Makro?

----------

## andi_s

So wie es aussieht ist es ein Register bzw eine Speicheradresse.

Ich habe nach X-Versuchen nun bemerkt, dass es __REG (mit 2 Unterstichen) heissen muss - Kompilieren läuft nun zwar durch, aber leider funktioniert der Treiber nicht mehr (lief noch unter 2.6.29)

Ich geb's also erstmal auf - dennoch Danke!

----------

## 69719

Um was für einen Treiber handelt es sich denn, eventuell gibt es eine alternative dafür.

----------

## andi_s

Nope, denke ich nicht ... es ist ein altes ARM-Device mit Windows Mobile drauf, wo ich Linux von MMC booten muss... Es gab experimentelle Treiber fuer Kernel 2.6.27. Mir ist es (nach mehreren Tagen) gelungen die Treiber so anzupassen das Sie auch mit .29 laufen und ich das System booten kann, aber beim Sprung auf .32 oder .35 funktioniert MMC nicht mehr, d.h. der Kernel bootet zwar, kann aber das System (debian) nicht mehr von MMC nachladen - sprich Kernel Panic weil kein FS vorhanden ist...  :Sad: 

Ich glaub da hilft es nur sich mit Treiberentwicklung richtig zu beschäftigen - was ich bisher gemacht habe (und was auch schon hart genug ist, wenn man nicht wirklich weiss was man macht) war die Fehler, die beim Kompilieren entstanden sind zu fixen. Ich kann zwar einigermassen gut in C programmieren, aber ich verstehe die Zusammenhänge in den Treibersourcen nicht wirklich.

Vielleicht helfen 'must have' Literatur-Tipps bzgl. Treiberentwicklung unter Linux? (sollte wirklich Step by Step anhand von nachvollziehbaren Beispielen sein - sonst steig ich da wohl nicht durch...)

----------

## marc

Kostenlos ist es! Ob es gut ist?

http://lwn.net/Kernel/LDD3/

----------

