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.
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...
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:> 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.
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.