Forum: Mikrocontroller und Digitale Elektronik Touchscreen Treiber für Embedded Linux


von Scouty (Gast)


Lesenswert?

Guten Tag zusammen!

Ich bin gerade in der Planung für meine Diplomarbeit. Momentan muss ich 
abchecken was machbar ist und was nicht. Und was ggf. für eine 
Diplomarbeit an der FH überhaupt in Frage kommt. Vorab sollte vielleicht 
noch gesagt sein, dass meine Linuxkenntnisse nicht die besten sind! ;-)

Zur Auswahl steht bei einem embedded Linux (warscheinlich auf Basis des 
AVR32 oder TMPA 910):

a) Touchscreen Treiber
Soll eine Art Maustreiber werden, so das ich die Events wie eine Maus 
verwalten kann. Alternative Vorschläge sind immer gern gesehen. ;-)
Bei der Recherche im Internet habe ich lesen können, dass es zwar einen 
TS Treiber gibt aber so wie es scheint nicht richtig funktioniert.

b) Ethernet - Wlan
Diese beiden Komponenten, die möglichst günstig sein sollen. An das 
eLinux anbinden und nutzen

---

Was ich allerdings zu erst entscheiden muss, wann lohnt sich ein 
Embedded Linux und wann ein uC Lösung. Bedenkt, dass ich nur 6 Monate 
Zeit habe! ;-) Wovon sicherlich mindestens 2-3 Monate an Einarbeitung 
und 1-2 Monate an Dokumentation wegfällt. Sprich am reiner Schreibzeit 
habe ich vielleicht 1-2 Monate. :)

LG Max

von Matthias (Gast)


Lesenswert?

Einarbeitung sollte max. 1-2 Monate sein. Also Datenblätter lesen, 
Toolchains zum Laufen bringen. Grundlegende Dinge (Blockschaltbilder, 
etc.)
und natürlich genau zu spezifizieren, was man eigentlich erreichen will.
Dann kann man in ca. 2-3 Tagen die ersten Kapitel verfassen.

Bei embedded Linux und auch anderen Systemen ist das aufwändigste (in 
der Regel) das Einrichten der Toolchain und mal das erste "Hello World" 
laufen lassen und zu debuggen.
Für (embedded) Linux Dinge hab ich mir mal ein paar Bücher organisiert, 
die einen ganz guten Eindruck machen (Kernel Treiber, Kernel Internals, 
etc).

Die Entscheidung ob man ein uC System oder einen kleinen "PC" benutzt 
ist
an mehrere Vorraussetzungen geknüpft:
- Preis
- Rechenleistung
- Speicherverwaltung (MMU kann manchmal hilfreich sein)
- Sicherheit (statt MMU geht auch ne MPU)
- Benutzerinterface bzw. eigentlich Aufgabe
- Wiederverwendbarkeit (für weitere Projekte an der Hochschule)
- Flexibilität (wieviele Applikationen sind mit dem System möglich)
- etc.

Linux gibt es einmal für Systeme mit MMU ([embedded] Linux) und als 
Version für Systeme ohne MMU (uC Linux). Die MMU ist für die virtuelle 
Speicherverwaltung und für den Speicherschutz. Systeme mit MPU sind nur 
in der Lage eine "Schutzverletzung" zu erkennen. Virtuellen Speicher 
benötigt man nicht zwingend.

Wenn Du NUR einen Treiber schreiben willst, dann würde ich Dir ein Borad 
empfehlen, dass einen Controller (mit oder ohne MMU) drauf hat, an den 
Du über IO-Ports, SPI, UART, etc. was anschließen kannst. Das Board 
sollte
eine sehr gute Linuxunterstützung haben. Also nicht das "allerneueste" 
sein. In deinem späteren Berufsleben wirst Du dich noch oft genug mit 
"Kinderkrankheiten" diverser Hardware rumschlagen müssen. Bei einer 
Diplomarbeit kostet dich das zuviel Zeit und Nerven! Also lieber etwas 
sorgfältiger wählen.

Eine besonderes Augenmerk solltest Du auf die Frage legen, wie man
das System debuggen kann. Also kann man mit JTAG im Signle Step durch 
das
Programm gehen oder braucht man schon einen gdb-server oder was 
aufwändigeres. Der GDB im Kommandozeilen-Modus ist sehr umständlich.
Evtl. hilft Dir der DDD oder was ähnliches. Für Kernel Treiber gibt es 
auch ein paar Besonderheiten, die man beachten sollte. Wenn Du willst, 
kann ich Dir mal meine Literaturliste zukommen lassen. Die Bücher 
sollten dafür brauchbar sein.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Embedded Linux bietet den Vorteil, dass es schon ungemein viele 
Anwendungen im Netz existieren, die man ggf noch anpassen kann. Auch ist 
es wesendlich leichter, ein Programm in Perl zu schreiben und auch 
direkt auf der Kiste zu editieren. Das beschleunigt die Entwicklungszeit 
ungemein.

Wenn es zeitkritisch ist, aber nicht auf Echtzeit ankommt, kann man 
schnell auf C/C++ wechseln, da man ein auf dem PC erstelltes Programm 
recht einfach und schnell auf das andere System umstellen kann.

Wenn es auf Echtzeitfähigkeit ankommt, gibt es zwar Echtzeitsysteme für 
Linux, je nach Aufwand der Applikation würde ich dabei aber eher auf 
eine µC-Lösung gehen.

von Max (Gast)


Lesenswert?

Danke euch! :)

@Matthias
Also scheint ein reinen Treiber zu schreiben also nicht ausreichende 
genug? Oder nicht so aufwendig. Also Demonstration wollte ich dann auch 
ein kleines QT Programm schreiben. Also Board wollte ich eventuell das 
NGW100 nehmen. Oder halt eines von Toshiba für den TMPA910. Allerdings 
beim Toshiba weiß ich nicht wie das mit der Toolchain aussieht. Es soll 
diesen Monat eine GNU Toolchain kommen.

Jo bitte gib mir die Buchtitel. Das wäre sehr hilfreich. Kennst du 
vielleicht auch folgendes?

http://www.amazon.de/Linux-Treiber-entwickeln-systematische-Einf%C3%BChrung-Ger%C3%A4tetreiber/dp/3898643921/ref=pd_sim_b_4

LG Max

von volltroll.de (Gast)


Lesenswert?

@Max: Das Buch was Du angegeben hast habe ich mir vor über 2Jahren mal 
gekauft, und da war es schon nicht mehr so aktuell. Das einzig positive 
ist, daß es in Deutsch ist.
Was mich auch stört an dem Buch, daß bei einigen Sachen nur kurz von 
neuerungen gesprochen , aber nicht wirklich darauf eingegangen wird 
(z.B. devfs und die Gerätenummern AFAIR).

LDD3 ist zwar auch nicht so das Aktuellste, aber meiner Meinung nach 
wesentlich besser (man muss blos Englisch können :D )

Beide Bücher beziehen sich aber direkt auf den Kernel, 
Embeddedspezialitäten gibts da eigentlich nicht.
Wichtig sind bei nem Embeddedboard und I/O, wann was Konfiguriert 
wird.Bei manchen IO soll es so sein, daß der Bootloader schon einige 
Sachen umkonfiguriert (vor allem bei mehrfachbelegung der I/O) die dann 
nicht ohne weiteres Rückgängig gemacht werden können.

Und ob ein Treiber ausreichend ist für eine Dipl.Arbeit, hängt vom 
Treiber ab. Wenn Du es schaffst btrfs innerhalb deine Diplarbeit stabil 
für den Einsatz zu machen, sollte das schon reichen ;)

so far, und viel Erfolg dabei

von Max (Gast)


Lesenswert?

Hm... ok... Ein bissel Zeit habe ich ja noch. Gott sei Dank. Könnte 
natürlich auch den Touchscreen"treiber" dann mit dem GPIO Treiber von 
Atmel realisieren.

von Thomas (Gast)


Lesenswert?

Hallo,

kurz zu den verlinkten Buch; wenn Du keine Ahnung von Treibern im 
LinuxKernel 2.6(!) hast, dann hilft Dir das Buch gut weiter (so 
zumindest mir). Wenn es mehr ins detail gehen soll, dann helfen die 
Tutorials von "Greg Kroah-Hartman" (einfach mal google anwerfen).

von Peter D. (peda)


Lesenswert?

Scouty schrieb:
> Ich bin gerade in der Planung für meine Diplomarbeit.

Was ist denn überhaupt das Thema der Diplomarbeit?


> Vorab sollte vielleicht
> noch gesagt sein, dass meine Linuxkenntnisse nicht die besten sind! ;-)

Dann wäre mir persönlich das Schreiben von Linux-Treibern zu sportlich.


> a) Touchscreen Treiber

Hast Du denn schon einen Touchscreen ausgesucht und dessen Datenblatt 
gelesen?
Wird ja auch noch entsprechende Interface-Hardware zu erstellen sein.


> b) Ethernet - Wlan

Dito, d.h. Hardware ausgesucht, Datenblatt gelesen, Anbindung überlegt?


> Was ich allerdings zu erst entscheiden muss, wann lohnt sich ein
> Embedded Linux und wann ein uC Lösung.

Da wir nicht Deine Anforderungen kennen, ist das schwer zu sagen.


Es gibt auch speziell Touchscreens für MCs, z.B.:
http://www.lcd-module.de/produkte/ediptft.html

Da kann man sehr schnell was zusammenprogrammieren und erste Erfolge 
haben.
Aber ehe ne Anwendung dann richtig fertig ist, kanns auch dauern.


Es gibt auch fertige Ethernet- oder Wlan-Module mit integrierten 
Treibern und SPI-Anbindung, z.B.:
http://www.avisaro.com/tl/index.php/avisaro-wlan-modul-20.html


Peter

von rotuA (Gast)


Lesenswert?

Das Buch gibt es auch auf https://ezs.kr.hsnr.de//TreiberBuch/html// , 
allerdings nur in der ersten Auflage. Als veraltet würde ich es nicht 
bezeichnen. Für den Einstieg müsste es reichen... also auch die 
Online-Version.

von Max (Gast)


Lesenswert?

@Peter
Hardware ist noch nicht ausgesucht worden. Privat habe ich mir das 
Grasshoppers + TFT + Touch von embedded projects gekauft. Leider hatte 
ich noch keine Zeit etwas rumzuspielen. Muss noch eine Adapterplatine 
bauen mit dem Boost Converter etc.

Themenmässig ist noch nichts in trockenen Tüchern. Es soll 
wahrschreinlich eine embedded Linux System werden mit Touchscreen und 
ich sage mal Netzwerkanbindung. Genaueres weiß ich leider nur noch 
nicht. Aber eines der beiden Sachen wird warscheinlich gemacht, Touch 
oder Wlan. Möchte halt wissen, ob das machbar ist in 6 Monaten eines der 
beiden oder sogar beides zu bearbeiten. Wobei beides für mich glaube ich 
was viel ist.

Wlan mässig hab ich mir erstmal das rausgesucht.
http://gumstix.com/store/catalog/product_info.php?cPath=31&products_id=191

Nur ist das eventuell zu teuer. Muss ja alles heut zu tage billig sein. 
Und billig ist leider nicht ganz einfach dann. Das Gumstix soll aber zu 
mindest schon mal "problemloser" an ein AVR32 System anbindbar sein, da 
es scheinbar Treiber dafür gibt.

Also Alternative gäbe es dann noch den XG-182M von Zcomax (hab ich 
leider keinen Preis bisher) oder von wi2wi das W2sw0001. Letzteres ist 
mit 16 Euro (Wlan) bzw. 21 Euro (inkl. Wlan und Bluetooth) recht 
günstig. Es heißt das es Linuxtreiber geben soll. Aber na ja...

Im schlimmsten Fall könnte ich doch auch per Uart Treiber von Atmel auf 
solche Module zugreifen. Nur stellt sich dann die Frage wie ich den 
optimal ins Linux anbinde. Denn soweit ich gelesen habe muss man die 
Module öfters triggern, damit sie am "Leben" bleiben...

von Hans W. (hans_wurst)


Lesenswert?

Max schrieb:
> ...Also Board wollte ich eventuell das
> NGW100 nehmen. Oder halt eines von Toshiba für den TMPA910. Allerdings
> beim Toshiba weiß ich nicht wie das mit der Toolchain aussieht. Es soll
> diesen Monat eine GNU Toolchain kommen.

Ich würde dir empfehlen auf ein Board zurück zu greifen, welches bereits 
einige Zeit auf dem Markt ist. Wenn die Toolchain jetzt noch nicht 
einmal auf dem Markt ist heißt das, dass du dich eventuell mit dessen 
Kinderkrankheiten herumschlagen musst und in Foren weniger Hilfe finden 
würdest. Zum NGW100 (oder auch Grasshopper) kann man sagen, dass es hier 
doch schon des öfteren verwendet wurde.

Du solltest dir auch nicht zu viel vornehmen. Falls du mit Qt noch 
nichts oder wenig bisher getan hast, wäre dies wieder ein riesen Bereich 
der sich da auf tut.

von Gast (Gast)


Lesenswert?

> Privat habe ich mir das Grasshoppers + TFT + Touch von embedded
> projects gekauft. Leider hatte ich noch keine Zeit etwas rumzuspielen. > Muss 
noch eine Adapterplatine bauen mit dem Boost Converter etc.

schaust du hier: Beitrag "AVR32 Grasshopper: Wie Sound?"

letzter Beitrag.

von Matthias (Gast)


Lesenswert?

Also mal ein kurzer Kommentar zu den vorgeschlagenen Atmel AVR32 Board:
-----------------------------------------------------------------------
Atmel wird die AP Serie (so zumindest die Aussage auf der letzten Messe)
nicht weiter entwickeln. Und mit viel Pech langfristig einstampfen 
(meine Interpretation - zwischen den Zeilen, also nicht offiziell von 
Atmel!!!). Also würde ich keine Zeit mehr an diese Teile verschwenden.

Atmel baut jetzt auch auf neue ARM Kerne. Für kleine Systeme Cortex-M3
und in Planung Cortex-A8 (wird dann glaub Nachfolger von ARM9).

Für eine Diplomarbeit kann ich nur ein sehr gut unterstütztes Board 
empfehlen. Eine Recherche im Internet allein wird wahrscheinlich nicht 
unbedingt zum Ziel führen, da g**gle schon sehr viele Suchergebnisse 
liefert.
Aber vielleicht hilft es auch mal in deiner Hochschule ein paar Leute zu 
interviewen. Evtl. hat schon jemand ein ARM Board organisiert, dass Du 
verwenden kannst.

Was die Bücher betrifft:
------------------------
Ich persönlich hab, wenn ich mich recht erinnere, das Buch mal 
angeschaut, aber wegen dem Datum 2006 nicht gekauft. Dafür hab ich jetzt 
3 Bücher mit neuerem Datum gefunden (Ich hab leider die Liste gerade 
nicht zur Hand).
Eines mit einer guten Übersciht über die verschiedenen Geräteklassen und 
Treiberstrukturen (Also ein Überflug über die verschiedenen Mechanismen 
im Kernel), eines in dem die Kernel-Internen Dinge wie Filesystem etc. 
abgehandelt werden und eines, wie man ein Embedded Linux von der Pieke 
an baut. Zum Lesen der letzten beiden, bin ich leider mangels Zeit noch 
nicht gekommen. Aber ich werde die Liste mal hier reinschreiben, sobald 
ich die hab.

von Gast (Gast)


Lesenswert?

> Atmel wird die AP Serie (so zumindest die Aussage auf der letzten Messe)
> nicht weiter entwickeln. Und mit viel Pech langfristig einstampfen
> (meine Interpretation - zwischen den Zeilen, also nicht offiziell von
> Atmel!!!). Also würde ich keine Zeit mehr an diese Teile verschwenden.

Das verbreitest du  jetzt schon geraume Zeit hier.

Aber weder auf der Atmel-Seite noch auf AVR-freaks kann man bis heute 
etwas davon lesen. (Außer deinen Kommentar auf AVR-freaks).

Dagegen sieht man, dass immer mehr Firmen dafür Entwicklungsboards 
anbieten.

Kann es sein, dass du auf der Messe mit jemanden aus der Cortex-Truppe 
gesprochen hast der seinen Job sichern wollte?

von Max (Gast)


Lesenswert?

gibt es vielleicht so einen Treibertemplate was man sich mal anschauen 
kann? Um einfach mal einen Eindruck zu bekommen, wie das so ist! ;-)

von rotuA (Gast)


Lesenswert?

> gibt es vielleicht so einen Treibertemplate was man sich mal anschauen
> kann? Um einfach mal einen Eindruck zu bekommen, wie das so ist! ;-)
Einen ganzen Asch voll findest du im Kernel-Source... ;-)
Ansich gibt es im Linux-Kernel-Tree sogenannte Skeletons (oder so 
ähnlich), ich glaube das ist etwas in der Richtung. Das obige Buch hatte 
mir damals gereicht.
In einem der Linux-Zeitschriften gab es eine Serie über Treiber usw., 
die stammte aber auch von dem Autor des obigen Buchs, dürfte also nichts 
neues sein. Der verdient an dem Buch dreimal, als Buch, als 
Artikel-Serie und als sein Vorlesungsskript. ;-)
Wobei ich ihm das gönne, zumindest fand ich das Buch gut. Ist aber auch 
Geschmackssache...
google mal nach denen, vielleicht hilft das ein wenig
drivers/net/pci-skeleton.c
drivers/net/isa-skeleton.c
drivers/video/skeletonfb.c
drivers/pci/hotplug/pcihp_skeleton.c
drivers/usb/usb-skeleton.c

von Matthias (Gast)


Lesenswert?

>Das verbreitest du  jetzt schon geraume Zeit hier.
>Aber weder auf der Atmel-Seite noch auf AVR-freaks kann man bis heute
>etwas davon lesen. (Außer deinen Kommentar auf AVR-freaks).
>Dagegen sieht man, dass immer mehr Firmen dafür Entwicklungsboards
>anbieten.

Jeder kann sich von mir aus seine eigene Meinung dazu bilden. Bisher ist
keine Akündigung der 2 AP Varianten in Sicht. Allerdings hieß es beim 
letzten Atmel Workshop, dass die APs "mit Vorsicht zu genießen" sind, 
weil die weitere Entwicklung ungewiss ist. Auf der Messe hieß es nur, 
dass die ARM Controller im Bereich der Application Controller die Nase 
vorne haben, und sich für Atmel daher der Ausbau der APs nicht lohnt.

Allerdings, seien die AVR-32 UC Varianten wohl dem Cortex-M3 überlegen.
Atmel hat ja auch die Cortex-A8 aktuell in Plaung und will Ende 2010 
Controller anbieten.

Wie weit jetzt Atmel solchen "Ankündigungen" folgt, entscheidet die 
Marktlage. Und die iat ja bekanntlich sehr wechselhaft.
------------------------------------------------------------------------ 
---

Nochmal zu den Büchern:

Eine Übersicht über die Kernel Internas bietet: ISBN-13: 
978-0-470-34343-2.
Das Buch ISBN-13: 978-0-13-239655-4 bietet eine Übersicht über die 
verschiedenen Kernel Treiber und interne Standardfunktionen 
(Arbeitswarteschlangen, etc.). Letzteres zeigt einem nur was alles im
Kerneltreiber drin steckt, verweist aber hauptsächlich auf die Sourcen.
Mit ersterem Buch habe ich mich noch nicht ausführich beschäftigt.
(Evtl. die Texte und Bewertungen bei Amazon, etc. lesen).

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.