Forum: Mikrocontroller und Digitale Elektronik Cortex-A5 Ohne OS


von leo (Gast)


Lesenswert?

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

von Max (Gast)


Lesenswert?

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 ?

von Compiler-Man (Gast)


Lesenswert?

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

von Kaj (Gast)


Lesenswert?

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

von leo (Gast)


Lesenswert?

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.

von Cortex (Gast)


Lesenswert?

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

von Kaj (Gast)


Lesenswert?

Cortex schrieb:
> Den A5 ohne OS zu nutzen, ist wie Harley mit nem Mofamotor fahren. Geht,
> ist aber sch...
sch... wie: schön? :P

von Andirom (Gast)


Lesenswert?

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.

von peter (Gast)


Lesenswert?

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

von Cortex (Gast)


Lesenswert?

Kaj schrieb:
> sch... wie: schön? :P

Neee, endet auf "e". ;-)

von Sascha (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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.

von leo (Gast)


Lesenswert?

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 .

von leo (Gast)


Lesenswert?

handelt es sich bei der Sam4/SAM-A4 nicht umm dem Cortex A4?

von Lattice User (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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

von leo (Gast)


Lesenswert?

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?

von Lattice User (Gast)


Lesenswert?

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.

von Sascha (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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.

von leo (Gast)


Lesenswert?

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“?

von Sascha (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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.

von leo (Gast)


Lesenswert?

Die sache ist das zu allen 4 Sama5 die Eval-boards alle gleich kosten ^^
der sama5 hat zwar kein TFT, aber ein LCD-Controller

von Sascha (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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.

von leo (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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.

von Lattice User (Gast)


Lesenswert?

Korrektur:

yagarto

von Lattice User (Gast)


Lesenswert?


von leo (Gast)


Lesenswert?

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?

von Sascha (Gast)


Lesenswert?

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

von Lattice User (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.