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
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.
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.
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,
>>> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.