Forum: Mikrocontroller und Digitale Elektronik Kernel-Kompilierung mit sc16is7x2 Treiber für Gnublin


von Mario (Gast)


Lesenswert?

Ich versuche für den Gnublin den 3.3er Kernel mit samt dem sc16is7x2 
Treiber zu kompilieren (möglichst als Modul und nicht statisch).

Unter 2.6.33 hatte ich keine Probleme, den Treiber für die Serielle mit
zu kompilieren, seit ich auf den 3.3er Kernel gewechselt bin, bricht mir 
der Kompilier-Vorgang immer ab, Log-Ausschnitt hänge ich unten an.

Ich arbeite mit einem Clone von github, genauer gesagt scheint diese 
Datei das Problem zu sein:

https://github.com/embeddedprojects/gnublin-lpc3131-3.3.0/blob/master/linux-3.3.0-lpc313x/drivers/tty/serial/sc16is7x2.c

Ist irgendeinem von euch ersichtlich, was hier mein Problem bzw. Fehler 
sein kann? :-( Ich steige langsam nicht mehr durch, welche Abhängigkeit 
möglicherweise fehlt oder was es sonst noch sein kann...

Viele Grüße und lieben Dank!



########################
1
  CC      drivers/tty/serial/sc16is7x2.o
2
drivers/tty/serial/sc16is7x2.c: In function 'sc16is7x2_handle_rx':
3
drivers/tty/serial/sc16is7x2.c:201:2: error: implicit declaration of function 'tty_insert_flip_string' [-Werror=implicit-function-declaration]
4
drivers/tty/serial/sc16is7x2.c: In function 'sc16is7x2_startup':
5
drivers/tty/serial/sc16is7x2.c:496:2: error: implicit declaration of function 'create_freezeable_workqueue' [-Werror=implicit-function-declaration]
6
drivers/tty/serial/sc16is7x2.c:496:18: warning: assignment makes pointer from integer without a cast [enabled by default]
7
drivers/tty/serial/sc16is7x2.c: In function 'sc16is7x2_register_gpio':
8
drivers/tty/serial/sc16is7x2.c:894:19: error: 'THIS_MODULE' undeclared (first use in this function)
9
drivers/tty/serial/sc16is7x2.c:894:19: note: each undeclared identifier is reported only once for each function it appears in
10
drivers/tty/serial/sc16is7x2.c: At top level:
11
drivers/tty/serial/sc16is7x2.c:1020:20: error: 'THIS_MODULE' undeclared here (not in a function)
12
drivers/tty/serial/sc16is7x2.c:1060:15: error: expected declaration specifiers or '...' before string constant
13
drivers/tty/serial/sc16is7x2.c:1061:16: error: expected declaration specifiers or '...' before string constant
14
drivers/tty/serial/sc16is7x2.c:1062:20: error: expected declaration specifiers or '...' before string constant
15
drivers/tty/serial/sc16is7x2.c:1063:14: error: expected declaration specifiers or '...' before string constant
16
cc1: some warnings being treated as errors
17
make[3]: *** [drivers/tty/serial/sc16is7x2.o] Error 1
18
make[2]: *** [drivers/tty/serial] Error 2
19
make[1]: *** [drivers/tty] Error 2
20
make: *** [drivers] Error 2

von Jim M. (turboj)


Lesenswert?

Nunja, nach 5 Jahren Entwicklung können sich Funktionsnamen schon mal 
ändern,
und sie landen mitunter in anderen Headern.

Die Funktion 'tty_insert_flip_string' findet sich in:
1
#include <linux/tty_flip.h>

Neuere Kernel kennen einen sc16is7xx Treiber, aber der kam wohl erst mit 
4.0 in die Mainline rein. Das dürfte für Dich zu neu sein.

von Cervisia (Gast)


Lesenswert?

Die internen Kernel-APIs ändern sich ständig. Irgendjemand müsste sich 
die Arbeit machen, diesen Treiber an den neuen Kernel anzupassen.

Und ein drei Jahre alter Kernel ist auch nicht mehr das Gelbe vom Ei.
Könnte ich dich dazu überreden, 3.16 oder später zu probieren, wo 
sc16is7xx schon eingebaut ist?

von Mario (Gast)


Lesenswert?

@Cervisia:
Ich habe bisher nur Kernels benutzt, welche direkt für den Gnublin 
gebaut waren. Sind die Kernels bzw. enthaltene Treiber nicht spezifisch 
an den Chip bzw. den Aufbau des Boards gebunden? Für den Gnublin werden 
bisher nur die beiden o.g. Versionen des Kernels angeboten, weswegen ich 
auch nie auf die Idee kam, einen anderen zu verwenden. Bin noch nicht 
sehr lange in der Welt rund um die Kernels unterwegs drum bin ich für 
jeden Rat sehr dankbar! :-)

@turboj:
Es bringt mir aber nichts, einfach noch
1
#include <linux/tty_flip.h>
 in den Treiber einzubauen, oder?

von Cervisia (Gast)


Lesenswert?

Mario schrieb:
> Sind die Kernels bzw. enthaltene Treiber nicht spezifisch an den Chip
> bzw. den Aufbau des Boards gebunden?

So etwas wird normalerweise über die Kernel-Konfiguration erledigt,
d.h., du kannst die .config-Datei einfach übernehmen.

Allerdings ist es gerade bei Embedded-Kerneln üblich, dass die
Hersteller irgendwelche Treiber beilegen, die in den 'offiziellen'
Kerneln nicht enthalten sind. Ob das bei Gnublin der Fall ist, weiß
ich nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.