Forum: Mikrocontroller und Digitale Elektronik ARM aller Anfang ist schwer?


von Nico (prinzenrolle)


Lesenswert?

Hallo,
ich habe hier vor mir ein AT91SAM9G45-EK liegen.

Habe mir ein paar Tutorials angeschaut und auch schon den Sourcey Code++ 
Lite installiert und verschiedene kleine Testbeispiele ausprobiert.

Nur wie es nun weiter gehen soll bin ich mir sehr im unklaren.

Der AT91SAM9G45 soll ein Display ansteuern und:
Bilder, Rahmen, Texte darstellen und mit einem FPGA per SPI 
kommunizieren.

Die mitgelieferten Bibliotheken können aber nur Text und Rechtecke 
darstellen,
und wie ein Druck auf das Display ausgewertet wird weiß ich noch nicht.
Alles andere müsste ich dann wohl selbst schreiben.

Jetzt stellt sich bei mir die Frage wie ich die Aufgabenstellung lösen 
soll.
- Linux mit einem eigenen Treiber
- c Bibliotheken benutzen (eigenes prg.)

Was bedeutet genau das eabi non-eabi?
Gibt es Eclipse mit Sourcey oder was benutzt man sonst als IDE?
Funktioniert QTOUCH mit dem Prozessor oder gibt es ähnliche Bibliotheken 
habe nichts gefunden?


Vielen dank

von Imon (Gast)


Lesenswert?

Nico B. schrieb:
> Hallo,
> ich habe hier vor mir ein AT91SAM9G45-EK liegen.

ein schöner Prozessor.

>
> Habe mir ein paar Tutorials angeschaut und auch schon den Sourcey Code++
> Lite installiert und verschiedene kleine Testbeispiele ausprobiert.

darf ich darus schließen das du bare Metall Programmieren willst.

>
> Nur wie es nun weiter gehen soll bin ich mir sehr im unklaren.
>
> Der AT91SAM9G45 soll ein Display ansteuern und:
> Bilder, Rahmen, Texte darstellen und mit einem FPGA per SPI
> kommunizieren.

Bilder Rahmen Texte klingt als wäre es sinnvoll über ein Linux auf den 
Bord nachzudenken, denn FPGA kannst du dann über spidev oder einen 
Kerneltreiber ansprechen ( CS, Pin im Spidev beachten!!)

>
> Die mitgelieferten Bibliotheken können aber nur Text und Rechtecke
> darstellen,
nochmal bare metall Bibliotheken oder unter linux, dort fällt mir hierzu 
libpng,libjepeg, freetype2 und vieles mehr ein inklusive sowas wie QT, 
nano-X, SDL um die Grafik zu Abstrahieren, und vielleicht schon parallel 
am host system zu entwickeln.

> und wie ein Druck auf das Display ausgewertet wird weiß ich noch nicht.
> Alles andere müsste ich dann wohl selbst schreiben.
>
Normalerweise indem dort ein Touch installiert wurden ist ;-) , nee mal 
im ernst dein Touch wird an einen Touch Controller angeschlossen sein 
der Kommuniziert über irgend ein Protokoll mit dein Prozessor ( UART, 
SPI, I2C sind hier die üblichen verdächtigen) ist aber eigentlich egal, 
dein Bord Hersteller wird sicher ein Treiber dafür haben, solltest du 
Linux nehmen macht es hier Sinn die Tslib zu nutzen, die abstrahiert von 
der realen Hardware und dein Programm kann es dann egal sein wie das 
Touch on Detail aus programmiert wurden ist, Außerdem hat die Tslib 
gleich noch ein paar filter und kümmert sich auch um die Kalibrierung 
des Touch, so das man unter denn strich hierdurch weniger schmerzen hat.

> Jetzt stellt sich bei mir die Frage wie ich die Aufgabenstellung lösen
> soll.
> - Linux mit einem eigenen Treiber
Linux Ja, Treiber bin ich mir nicht sicher ob du denn brauchst wie 
gesagt denn SPI kann man auch im Userspace ansprechen nennt sich in der 
Kernel Config User mode SPI device driver support (unter
Device Drivers -> spi devices ), was denn touch und das Display angeht 
wenn du Glück hast gibt es dort auch schon was ( Hersteller des Bord 
fragen )

> - c Bibliotheken benutzen (eigenes prg.)
nach meiner Meinung eher nicht, scheint ziemlich großer Aufwand zu 
werden
und der Linux Support für den Chip ist definitv da, also warum das Rad 
neu Erfinden.

>
> Was bedeutet genau das eabi non-eabi?
google ist dein Freund ;-) , mal ehrlich eabi erster Treffer Wikipedia 
Englisch erklärt das ziemlich zut, eabi steht für embedded Application 
Binary Interface, Genaues sagt der Artikel:
In deinen Fall stark vereinfacht eabi , heißt mit Linux als 
Betriebsystem non-eabi heist ohne Betriebsystem.

> Gibt es Eclipse mit Sourcey oder was benutzt man sonst als IDE?
Linux und vim, tftp und NFS zum testen,vielleicht noch denn gdb, Kommt 
ein wenig drauf an was du machts. Generell ist meine Erfahrung jedoch 
das sich gerade bei der Linux Treiber Entwicklung Eclipse nicht 
durchgesetzt und auch keinen Mehrwert bringt, im Vergleich zu einen 
Editor deiner Wahl ( bei mir halt vim ) und denn üblichen 
Entwicklungstools.

von Nico (prinzenrolle)


Lesenswert?

Imon schrieb:
> darf ich darus schließen das du bare Metall Programmieren willst.
Sorry mit bare Metall kann ich nichts anfangen.

> Bilder Rahmen Texte klingt als wäre es sinnvoll über ein Linux auf den
> Bord nachzudenken, denn FPGA kannst du dann über spidev oder einen
> Kerneltreiber ansprechen ( CS, Pin im Spidev beachten!!)
ist ein "spezielles" SPI mit Ready-Ausgang (vom ARM), geht das trotzdem?

>> Die mitgelieferten Bibliotheken können aber nur Text und Rechtecke
>> darstellen,
> nochmal bare metall Bibliotheken oder unter linux, dort fällt mir hierzu
> libpng,libjepeg, freetype2 und vieles mehr ein inklusive sowas wie QT,
> nano-X, SDL um die Grafik zu Abstrahieren, und vielleicht schon parallel
> am host system zu entwickeln.
gute Idee
nur mit einem Linux habe ich ein paar bedenken.
- spezielles SPI möglich? s.o.
- die Bootzeit ist Mitsicherheit etwas länger?
- Update der Firmware:
Momentan kann die Firmware unserer uController über SPI aktuallisiert 
werden. Erst kommt der befehl Bootmodus über spi, der uController geht 
in den Bootmodus und dann kann das eigentliche Programm (Firmware) über 
SPI aktualisiert werden.
Wie würde das mit Linux gelöst werden?
Wird dann nur das eigentliche Programm aktualisiert?
Wie kann man dann den Kernel aktualisieren?

> Normalerweise indem dort ein Touch installiert wurden ist ;-) , nee mal
> im ernst dein Touch wird an einen Touch Controller angeschlossen sein
> der Kommuniziert über irgend ein Protokoll mit dein Prozessor ( UART,
> SPI, I2C sind hier die üblichen verdächtigen) ist aber eigentlich egal,
> dein Bord Hersteller wird sicher ein Treiber dafür haben, solltest du
> Linux nehmen macht es hier Sinn die Tslib zu nutzen, die abstrahiert von
> der realen Hardware und dein Programm kann es dann egal sein wie das
> Touch on Detail aus programmiert wurden ist, Außerdem hat die Tslib
> gleich noch ein paar filter und kümmert sich auch um die Kalibrierung
> des Touch, so das man unter denn strich hierdurch weniger schmerzen hat.
Habe es anhand eines Beispielprogramms rausgefunden ;)

>> Was bedeutet genau das eabi non-eabi?
> google ist dein Freund ;-) , mal ehrlich eabi erster Treffer Wikipedia
> Englisch erklärt das ziemlich zut, eabi steht für embedded Application
> Binary Interface, Genaues sagt der Artikel:
> In deinen Fall stark vereinfacht eabi , heißt mit Linux als
> Betriebsystem non-eabi heist ohne Betriebsystem.
Sorry ich habe google falsch bedient ich habe nur nach "eabi non-eabi 
unterschied" gesucht :(

>> Gibt es Eclipse mit Sourcey oder was benutzt man sonst als IDE?
> Linux und vim, tftp und NFS zum testen,vielleicht noch denn gdb, Kommt
> ein wenig drauf an was du machts. Generell ist meine Erfahrung jedoch
> das sich gerade bei der Linux Treiber Entwicklung Eclipse nicht
> durchgesetzt und auch keinen Mehrwert bringt, im Vergleich zu einen
> Editor deiner Wahl ( bei mir halt vim ) und denn üblichen
> Entwicklungstools.
k, danke nutze momentan notepad++


vielen dank für die Antwort.

von Imon (Gast)


Lesenswert?

Nico B. schrieb:
> Imon schrieb:
>> darf ich darus schließen das du bare Metall Programmieren willst.
> Sorry mit bare Metall kann ich nichts anfangen.

So Bezeichntet man die Entwicklung von Software für Mikrocontroller ohne 
Betriebssystem.

>
>> Bilder Rahmen Texte klingt als wäre es sinnvoll über ein Linux auf den
>> Bord nachzudenken, denn FPGA kannst du dann über spidev oder einen
>> Kerneltreiber ansprechen ( CS, Pin im Spidev beachten!!)
> ist ein "spezielles" SPI mit Ready-Ausgang (vom ARM), geht das trotzdem?

Die Ingenieurs antwort lautet wie immer, es kommt darauf an, wie schnell 
der G45 nach denn setzen des Ready Pin die Daten abholen muss, Im 
Prinzip könnte man denn Ready Pin auf einen der GPIOS von den G45 legen, 
diesen im Programm mit ein Read auswerten und bei Änderungen die Daten 
via SPi Lesen.

Wenn es schneller gehen soll, wirst du um denn Kerneltreiber nicht 
herumkommen.

>
>>> Die mitgelieferten Bibliotheken können aber nur Text und Rechtecke
>>> darstellen,
>> nochmal bare metall Bibliotheken oder unter linux, dort fällt mir hierzu
>> libpng,libjepeg, freetype2 und vieles mehr ein inklusive sowas wie QT,
>> nano-X, SDL um die Grafik zu Abstrahieren, und vielleicht schon parallel
>> am host system zu entwickeln.
> gute Idee
> nur mit einem Linux habe ich ein paar bedenken.
> - spezielles SPI möglich? s.o.
Im Prinzip, ja muss aber entwickelt werden, da gibt es leider kein plug 
'n' play bei der Anforderung.

> - die Bootzeit ist Mitsicherheit etwas länger?
 Erstmal ja, die Bootzeit, wird erstmal etwas länger werden, mann 
könnste zwar mit Erfahrung und viel Know How da was reißen ( ich habe 
auch schon Linux Devices gesehen die fast sofort bereit waren) aber das 
ist nicht trival. Generell musst du hier mit ein wneig längern Zeiten 
leben oder dir jemanden suchen der das Optimum heraus holt, bzw dich 
sehr tief in die Materie einarbeiten. Manches mal kann man aber acuh ein 
wenig mit Pyschologie tricksen, Sobald was auf denn Bildschirm steht 
läuft die Box für viele Menschen ( Splashscreens sind ein beliebtes 
mittel, sich Zeit zu erkaufen)

> - Update der Firmware:
> Momentan kann die Firmware unserer uController über SPI aktuallisiert
> werden. Erst kommt der befehl Bootmodus über spi, der uController geht
> in den Bootmodus und dann kann das eigentliche Programm (Firmware) über
> SPI aktualisiert werden.
> Wie würde das mit Linux gelöst werden?
Da kann man sich eine Menge einfallen lassen der Vorteil ist das man 
einen
ganzen Sack an Möglichkeiten hat und Linux nach dem es gestartet ist 
meisten Komplett im Ram liegt.Ich würde die Möglichkeiten davon abhänig 
machen was so an Schnittstellen zur Verfügung Steht (USB, Netzwerk,SD 
Card, notfalls SPI) generell wir es wohl darauf hinauslaufen das du 
deinen geänderte Software irgendwie auf das System bekommst und sie dann 
an die richtige stelle Kopierst, das musst du dir also eher vorstellen 
wie bei einen Computer als wie bei einen µC.
Nach meiner Erfahrung brauchst du auch mindesten 4 MB Flash um ein 
Embedded linux system aufsetzen zu können.Meistens wird noch deutlich 
mehr genommen NAND ist relativ billig.

für die At91 gibt es das sog sam-ba ( binde strich beachten ) das wird 
bei denn atmels gerne genommen, um dort linux zum fliegen zu bekommen. 
Netzwerk bevorzuge Ich geht meist schneller, vor allen wenn ich nur 
sequenziell einige teile Tauschen muss.


> Wird dann nur das eigentliche Programm aktualisiert?
nein das kannst du machen wie du willst.

> Wie kann man dann den Kernel aktualisieren?
 siehe Oben, allgemein Neuen Kernel auf das bord bringen unter /proc/mtd 
nachsehen wo der alte Kernel liegt, neuen Kernel dahin Kopieren,

von Nico (prinzenrolle)


Lesenswert?

>>> Bilder Rahmen Texte klingt als wäre es sinnvoll über ein Linux auf den
>>> Bord nachzudenken, denn FPGA kannst du dann über spidev oder einen
>>> Kerneltreiber ansprechen ( CS, Pin im Spidev beachten!!)
>> ist ein "spezielles" SPI mit Ready-Ausgang (vom ARM), geht das trotzdem?
>
> Die Ingenieurs antwort lautet wie immer, es kommt darauf an, wie schnell
> der G45 nach denn setzen des Ready Pin die Daten abholen muss, Im
> Prinzip könnte man denn Ready Pin auf einen der GPIOS von den G45 legen,
> diesen im Programm mit ein Read auswerten und bei Änderungen die Daten
> via SPi Lesen.
>
> Wenn es schneller gehen soll, wirst du um denn Kerneltreiber nicht
> herumkommen.
Das ist ja nur ein Ausgang vom ARM :)

Leider finde ich keine "wirklichen" bare metall Bibliotheken.
Alles was ich auf der Homepage oder der CD finde sind nur Funktionen mit
minimalen Möglichkeiten: Zeichne einen Punkt, wurde Touchscreen 
gedrückt,
zeichne einen Text.

Ich bräuchte aber Zeichne einen Text mit einem Rahmen und definiere 
einen Touchrückgabewert beim Drücken ;)

Aber vielen dank für die Antworten

Gruß

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.