Hallo, ich Programmiere nun eine geraume Zeit auf der avr32-bit Serie. Möchte nun aber auf ARM umsteigen. Hierzu habe ich mir zuerst die Cortex-M4 Serie angeschaut(Atmel SAM4). Hier würde ein Evaluation Board an die 100€ kosten. Dann habe ich mir die Cortex-A Serie angeschaut(SAM5). Hierzu gäbe es Evaluation board die weitaus billiger wären und die gleichen leistungsmerkmahle (I/O-Ports Crystal, JTAG-Header…)hätten, zusätzlich natürlich die Vorteile der Cortex A Serie^^. Jedoch gibt es die Die Cortex-A Serie nur mit einem Betriebssystem. Dies möchte ich aber nicht verwenden, da ich wie bisher programmieren möchte. Ist es also bei der Cortex-A Serie möglich, wie gewohnt seinen C-Code direkt in Flash zu programmieren, oder muss man den weg über die OS nehmen? Grüße
Zumindest in der Theorie kannst du auf dem A5 auch einfach ein C-Proggi laufen lassen (die CPU ist nicht irgendwie verhext, dass sie ein nicht-OS Proggi zurückweist). Wie es in der Praxis mit Unterstützung von dritten aussieht (I/O-Libs, Startup-Codes und dgl.) weiß ich nicht. Was stört dich eigtl. daran ein OS haben zu müssen ?
> ist es also bei der Cortex-A Serie möglich, wie gewohnt seinen C-Code > direkt in Flash zu programmieren In den Flash wird nicht der C-Code programmiert, sondern der Maschinencode. Dieser wird per Compiler erzeugt.
leo schrieb: > Hierzu habe ich mir zuerst die Cortex-M4 Serie angeschaut(Atmel SAM4). > Hier würde ein Evaluation Board an die 100€ kosten. Dann schau mal nach STM32F4-Discovery-Board. Cortex-M4, 168MHz, usw. Kostet zwischen 11 und 30 Euro und der Debugger ist auch noch onboard + noch ein paar sensoren. USB-Kabel ran und abfahrt. https://hbe-shop.de/Art-2009276-STMICROELECTRONICS-STM32F4DISCOVERY-EVALUATIONSBORDSTM32F4-DISCOVERY https://hbe-shop.de/Art-2355377-STMICROELECTRONICS-STM32F429I-DISCO-STM32F4-DISCOVERY-EVALBOARD
Vielen dank für die schnelle Antwort Mir gets es in erster Linie um die hardware-nahe Programmierung. deshalb möchte ich wenns geht auf eine OS verzichten. Mir ist durchaus bewust, dass daduch die Programme komplizierter werden. Aber der lerneffekt ist so größer.
Genau, wirf einen Blick auf die STM32 oder die TI Tiva. Da gibt es die EVAL Boards für 10...20euros. Den A5 ohne OS zu nutzen, ist wie Harley mit nem Mofamotor fahren. Geht, ist aber sch...
Cortex schrieb: > Den A5 ohne OS zu nutzen, ist wie Harley mit nem Mofamotor fahren. Geht, > ist aber sch... sch... wie: schön? :P
Grundsätzlich sollte das möglich sein, ist aber ein haufen Arbeit. Ohne OS hat man denn Vorteil Echtzeitfähiger zu sein, und etwas mehr aus der Hardware rausholen zu können.
Für den a5 kannst du dir doch das partpack mit sämtlichen Peripherie beispielen herunterladen die ohne betriebssystem laufen. Aber bei den evalkits musst du genau schauen. Es gibt das sam4 xplain kit incl debugger fuer 29$ dann wenn du mehr machen willst dann die sam4 xplain pro fuer 39$ und die grossen kits mit tft usw fuer ueber 100e. Schau doch genauer hin z.b im atmel store und dann bei farnell&co vergleichen
Hallo, ich programmiere sogar in Assembler auf dem ARM9 und habe auch vor auf den A5 umzusteigen. Das gute ist der A5 unterstützt den Thumb2 Befehlsatz wie beim Cortex M4. Der ARM Befehlssatz ist gleich wie beim ARM7,ARM9 usw. Ist ein tolles teil.... Du brauchst kein Betriebssystem, musst aber alles selber auf dem Chip initialisieren. Wenn deine Entwicklung nicht Grafik schwerlastig ist würde ich dir aber einen Cortex M4 empfehlen. Der A5 hat kein Flash im Bauch, somit muss er immer von extern Booten. Zur Softwareerstellungszeit spielt man seinen Code über den Debugger direkt ins SDRAM ein und go... Dafür gibt es eigens scriptfiles. Software Framework für C müsste es auch geben. Gruß Sascha
leo schrieb: > Dann habe ich mir die Cortex-A Serie angeschaut(SAM5). Hierzu gäbe es > Evaluation board die weitaus billiger wären und die gleichen > leistungsmerkmahle (I/O-Ports Crystal, JTAG-Header…)hätten, zusätzlich > natürlich die Vorteile der Cortex A Serie^^. > Bist du sicher dass du dich nicht verguckt hast? SAM5 findet man nicht auf der Atmel Webseite, sondern nur SAMA5. Und da auch nur eine Serie SAMA5D3x, ziemlich dicke Teile im 324 Ball FPGA Gehäuse. Diese haben insbesondere keinen Onchip Flash, und auch "nur" 128 kByte SRAM.
wie kann ich mir das dann vorstellen, dass Programm auf den SDRAM zu kopieren. Und wie werden dann den die Befehle ausgelesen? muss ich dann das selber schreiben, oder macht die Hardware das automatisch? Mit ist bei den Eval board vor allem der Quarz wichtig, derzeit habe ich ein Eval vom AVR32 und der kann nur mit 32kHz getacket werden. Wenn ich so ein Projekt aufbauen möchte komme ich da schnell an die Grenzen der des Boardes. Die Idee ist mit dem 12mHz Quarz und einer PLL dann mit dem Eval-board den Prozessor besser auslasten zu können. RC-Oszillator wäre natürlich eine Alternative aber hier ist die Gebäulichkeit nicht groß genug .
leo schrieb: > wie kann ich mir das dann vorstellen, dass Programm auf den SDRAM zu > kopieren. Und wie werden dann den die Befehle ausgelesen? > muss ich dann das selber schreiben, oder macht die Hardware das > automatisch? > ROM Bootloader der von verschiedenen Quellen booten kann, u.A. SPI Flash, NAND Flash, SD Card, .... Es ist auch möglich mit SAM-BA über USB vom PC zu booten. Kannst du mal das Evalboard verlinken? Disclaimer: Ich kenne den G45, und habe mir den SAMA5D3x bisher nur oberflächlich angeschaut. Sieht auf den ersten Blick wie eine modernere Version des G45, z.B. Cortex A5 statt ARM926, Ethernet 1GBit statt 100 MBit, Hardware BCH für NAND, ...
>Mit ist bei den Eval board vor allem der Quarz wichtig, derzeit habe ich >ein Eval vom AVR32 und der kann nur mit 32kHz getacket werden. Wenn ich >so ein Projekt aufbauen möchte komme ich da schnell an die Grenzen der >des Boardes. Du brauchst keinen ARM sondern Brain2.0.
leo schrieb: > handelt es sich bei der Sam4/SAM-A4 nicht umm dem Cortex A4? Ich finde hier keinen SAM-A4 http://www.atmel.com/products/microcontrollers/arm/default.aspx
ich denke beim SAMA4 stellt sich der Name aus Sam und das A5 vom Cortex http://store.atmel.com/PartDetail.aspx?q=p:10500374#tc:description das heist das das Programm nicht wie bisher auf den Flash sondern in einen Externen Speicher geschreiben wird?
leo schrieb: > ich denke beim SAMA4 stellt sich der Name aus Sam und das A5 vom Cortex > http://store.atmel.com/PartDetail.aspx?q=p:10500374#tc:description > > das heist das das Programm nicht wie bisher auf den Flash sondern in > einen Externen Speicher geschreiben wird? Ok. das ist ziemlich gut für den Preis. Das Board hat einen NAND Flash von dem gebootet werden kann, alternativ SD Card oder MMC Card. Falls der Bootloader genauso funktioniert wie beim G45, werden die möglichen Bootmedien abgeklappert, und wenn nichts gefunden wird ein USB Device für SAM-BA aktiviert. Auf dem Board ist hoffentlich ein Jumper sein um den NAND zu dekativieren. SAM-BA steht für SAM Boot Assistent.
Hallo, also Cortex A4 ist es nicht, es ist ein Cortex M4, sozusagen der Nachfolger des Cortex M3. Ob es überhaupt einen A4 gibt weis ich nicht. Der A5 ist der SAMA5D3x, ja klar es ist ein dickes Teil, so mit selberlöten wirds schwierig. Aber für den Anfang tuts auch mal ein Explain Board für knappe 100€. Zum Umgang mit den CPUs beim Softwareerstellen: Man sollte eine IDE haben, z.B. Keil,IAR,emIDE,CooCox usw. es gibt noch so viele andere Tools. Dann einen JTAG Debugger wie JLink,JJet usw. Dann braucht man ein Scriptfile für den Debugger um den Chip über die JTAG Schnittstelle zu initialisieren. Es wird dann im prinzip nichts anderes gemacht, als die CPU und Hardwaremodulregister über den JTAG beschrieben damit Takt,PLL,IO,SDRAM(DDR2-RAM) schon mal gehen. Dann wird der erstellte Code deines Programmes direkt in das SDRAM(DDR2-RAM) eingespielt und die CPU gestartet, jetzt leuft wunderbar der Debugger bzw. dein Code. Soll nun dein Code direkt nach anlegen des Stroms ohne JTAG Debugger laufen, so brauchst du nur einen Bootloader auf dem Speichermedium verwenden, oder selber schreiben, der die gleiche Voraussetzung des Systems schaft wie der Scriptfile des Debuggers. Und natürlich deinen Code noch nachlädt ins SDRAM oder DDR2-RAM. Beim Cortex M4 ist es sehr einfach. Einfach Code ins Flash mit dem Debugger und einen Flashdownloader übertragen und los geht es. Ohne Debugger leuft der Code bereits nach Spannungsanlegen los, denn der Code steht ja immer noch im Flash. Gruß Sascha
Sascha schrieb: > Hallo, > also Cortex A4 ist es nicht, es ist ein Cortex M4, sozusagen der > Nachfolger des Cortex M3. Ob es überhaupt einen A4 gibt weis ich nicht. > Der A5 ist der SAMA5D3x, ja klar es ist ein dickes Teil, so mit > selberlöten wirds schwierig. Aber für den Anfang tuts auch mal ein > Explain Board für knappe 100€. > Das verlinkte Board hat einen ATSAMA5D36, also tasächlich einen A5.
die Erklärung vom Sascha ist mir einleuchtend. Dh. Ich sehe beim Prog. Die Möglichkeit den NAND oder den SRAM zu beschreiben. Woher weiß sie jetzt aber, wo das Programm steht? schaut sie einfach im NAND an 0x00 nach und führt dann diese Befehle aus. Sollte der Code dann größer als 128kbit werden muss dann einfach der Code nachgeladen werden. Dh. Wiederum das eig der Prozessor ganz normal (wie zb ein ATmega8 etc..)programmiert werden. Bisauf das der Code nicht im Flash landet sondern Extern also ein „externer Flash“?
Hallo, ja aber der ATSAMA5D36 hat glaub ich keinen TFT Controller drauf oder? Ein ATSAMA5D31 reicht übrigens auch. Also vor man noch mit einem G10 oder G45 rumacht, gleich auf A5. Wie gesagt, der Chip kann 4 Modies: 1. ARM-Mode mit vollen 32Bit Befehlen wie beim ARM7 oder ARM9. 2. Thumb2 wie beim Cortex M3 oder Cortex M4 mit Floating Point Coprozessor, sehr einfach übrigens zu benutzen. 3. ThumbEE ist in etwa wie der Thumb2 Mode für virtuelle geschichten. 4. Java Mode. Wenn man mit dem A5 zurecht kommt gehts auch auf dem A8 und A9. Nachteil eines so großen Prozessors ist die MMU und Cache muss man aber nicht unbedingt gleich zu Anfangs benutzen. Gruß Sascha
Hallo, sorry jetzt ist was dazwischen gerutscht. Also das Programm bekommst du mittels SAMBA Bootloader Tool von Atmel relativ einfach drauf. Also der Bootloader im Chip lädt aus jedem Flashspeicher, den er nach einer gewissen Reihenfolge findet immer einen Sector. Dann schaut er auf die Interruptvektortabelle und wenn die gültig ist steht anstatt eines Interruptvektors die Länge in Bytes die ins SRAM geladen wird. Dann wird der Code gestartet. Gruß Sascha
leo schrieb: > die Erklärung vom Sascha ist mir einleuchtend. > Dh. Ich sehe beim Prog. Die Möglichkeit den NAND oder den SRAM zu > beschreiben. > Woher weiß sie jetzt aber, wo das Programm steht? > schaut sie einfach im NAND an 0x00 nach und führt dann diese Befehle > aus. Sollte der Code dann größer als 128kbit werden muss dann einfach > der Code nachgeladen werden. > Dh. Wiederum das eig der Prozessor ganz normal (wie zb ein ATmega8 > etc..)programmiert werden. Bisauf das der Code nicht im Flash landet > sondern Extern also ein „externer Flash“? Nein, NAND ist ein Blockdevice, d.h. der Code muss vom ROM Bootloader ins RAM kopiert werden bevor er ausgeführt werden kann. Der Booot beim G45 und ich wette dass es beim A5D36 genaus so ist, läuft folgendermassen ab: 1.) ROM Bootloader (ist on CHIP) Dieser initialsiert die Main Clock (PLL) und lädt einen 2nd Level Bootloader vom NAND oder MMC Card in den Onchip SRAM. 2) 2nd Level Bootloader Dieser initialsiert den DDR Controller, und lädt einen 3rd Level Bootloader vom NAND oder MMC Card in den DDR RAM. 3) 3rd Level Bootloader (typischerweise U-Boot) Initialsiert weitere Hardware (z.B. Ethernet) und lädt das OS (typischerweise Linux) von NAND, MMC, USB, Ethernet ... Deinen eigenen standalone Code kannst du statt 2nd Level oder statt U-Boot laden. Im ersteren Falle musst du natürlich den DDR Controller sleber initialisieren. Sourcecode für alles ausser ROM Code ist vorhanden.
Hi Kurz zusammengefasst: Das ganze ist durchaus komplex. NAND Boot funktioniert typischerweise so das ein ROM im Prozessor dafür sorgt das die ersten xkByte (typischerweise 2-4) vom NAND gelesen werden, im internen SRAM abgelegt werden und dann die Kontrolle an dieses Stück Code übergeben wird. Dieser Code muss jetzt weitere Programmteile nachladen um das System zu booten. Manch ein Controller benötigt noch einen speziellen Header vor derm eigentlich Startcode der den Code als gültig markiert usw. So einen Ax zu booten ist schon ne Ecke komplexer als bei einem Mx. Gute Quelle zu dem Thema sind die Quellen von u-boot http://www.denx.de/wiki/U-Boot/WebHome Stichwort SPL Matthias
Sascha schrieb: > Hallo, > ja aber der ATSAMA5D36 hat glaub ich keinen TFT Controller drauf oder? > Ein ATSAMA5D31 reicht übrigens auch. > Also vor man noch mit einem G10 oder G45 rumacht, gleich auf A5. Zustimmung. Vor allem weil der G45 nicht zuverlässigig von aktuellen NAND Flashes booten kann, das diese auch auf Block 0 keine Fehlerfreiheit mehr garantieren, sondern nur noch dass man sie bis 1000 mal beschreiben kann ohne dass sie ganz kaput gehen.
Die sache ist das zu allen 4 Sama5 die Eval-boards alle gleich kosten ^^ der sama5 hat zwar kein TFT, aber ein LCD-Controller
Hallo, ach haben die das Problem selbst beim G45 noch nicht gelöst? Ich habe bei neimem G10 das Booten über den Seriellen Flash gemacht. Das funktioniert immer und steht in der Bootkette ganz vorne. Das Problem war irgend ein Takt, der mit dem SDRAM zusammenhing und zwar nach einem Systemreset. Das gute ist, der interne Bootloader steht in einem Mask-ROM bei den 9Gxx Typen, so wurde mir das von Atmel mitgeteilt. Was für mich die optimale Ausgangsbasis ist, da mein System auch in Strahlenbelastetem Umfeld lange funktionieren soll. Und bei den OTP Flash varianten durchaus schon nach 6 Jahren Ausfälle vorhanden sind. Dann kann man so ein Board nur noch wegwerfen. Aber ein externes serielles Flash mit 8 Pins ist sehr schnell ausgetauscht. Die SAMA5D3x Typen haben einen OTP Bereich und einen User konfigurablen Bereich, somit kann auch die Bootfolge konfiguriert werden. Vermutlich ist dann auch der Bootloader in einem Flash drin. Wird das interne Flash aus irgendwelchen gründen zerschossen ist für immer schluss. Das wäre mal sehr schön zu wissen, ob man den internen Bootloader der SAMA5D3x Typen ersetzen kann. Gruß Sascha
Sascha schrieb: > Hallo, > ach haben die das Problem selbst beim G45 noch nicht gelöst? > Ich habe bei neimem G10 das Booten über den Seriellen Flash gemacht. Das > funktioniert immer und steht in der Bootkette ganz vorne. > Das Problem war irgend ein Takt, der mit dem SDRAM zusammenhing und zwar > nach einem Systemreset. Das ist nicht das Problem beim G45. Sondern schlicht, dass SLV NAND Flashes eine aussterbende Species sind. Dazu kommt dass der G45 ROM Bootloader beim Lesen des Sektors 0 gar keine Fehlerkorrektur macht. Für MLV NAND Flashes ist das riskant. Selbst wenn der eingebaute Hardware ECC funktionieren würde, reicht es nicht für aktuelle NAND Flashes. Davon ist nicht nur Atmel kalt erwischt worden, im TI e2e Forum wurde mal der Ratschlag erteilt sich alte SLV Flashes auf Lager zu legen. > > Das wäre mal sehr schön zu wissen, ob man den internen Bootloader der > SAMA5D3x Typen ersetzen kann. > Laut Datasheet ist es nach wie vor ein ROM. Onchip Flash bei kleinen Strukturgrössen ist problematisch. Allerdings beziehen sich auch viele Errata auf den ROM Code.
hallo, ich habe das Board bestellt und wollte es natürlich gleich heute ausprobieren. Leider sank mein Enthusiasmus steh schnell, als ich festgestellt habe, das das Atmel Studio nur die SAM1-4 unterstützt.(also cortex m1-4 und nicht cortex A) Also habe ich im Internet nach Entwicklungsumgebungen gesucht und mir mal das Keil und Eclipse mit ARM plugin angeschaut: Leider musste ich auch hier feststellen, das auch hier nur cortex m1-4 unterstütze werden. -_- kennt einer von euch einen Guten Compiler der die Cortex A5 Sereie unterstützt? Sollte Freeware sein, weil mein Budget(Student) sehr begrenzt ist. vielen Dank
leo schrieb: > Sollte Freeware sein, weil mein Budget(Student) sehr begrenzt ist. > Kannst du mit jedem GCC ARM Crosscompiler machen. Für Windows gibt es z.B. Yartago, ist kompletter GCC für ARM als Windows EXE. Leichter zu verwenden, als z.B. cygwin. Unter Linux, einfach. Einfach GCC ARM Crosscompiler einrichten.
ich habe das yagarto ausprobiert finde aber keine Möglichkeit die in eclipse einzubinden, oder das yagarto an sich auszuführen. Handelt es sich hierbei um ein Eclipse plugin oder habe ich das falsch verstanden?
Hallo, nimm emIDE, da gibts es sogar ein Beispielprojekt für den SAMA5 zum Herunterladen. Oder IAR, die Kikstartversion, wenns die noch gibt. Aber einen J-Link sollte man haben, da gibt es aber auch preiswerte Derivaten. Gruß Sascha
leo schrieb: > ich habe das yagarto ausprobiert finde aber keine Möglichkeit die in > eclipse einzubinden, oder das yagarto an sich auszuführen. > Handelt es sich hierbei um ein Eclipse plugin oder habe ich das falsch > verstanden? Bei Yagarto handelt es sich um die GCC compiler toolchain. Befehlzeile ist dein Freund :-). Mehr habe ich selbst nie gebraucht, da ich es in erster Linie nur für kleine Tools zum Boardtest verwende. Aber suche mal nach Yagarto+Eclipse, da findet sich einiges zu dem Thema, auch in diesem Forum.
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.