Datum: 16.05.2008 19:48
Hallo, ich arbeite gerade mit dem AT91RM9200 Controller von Atmel. An diesen möchte ich gern ein Dataflash anschließen über SPI. Des Weiteren arbeite ich mit Keil - hier ist es so, dass man stets einen Speicherbereich definieren muss, wohin der Code, welcher über JTAG downgeloaded werden soll, gespeichert wird. In der Auflistung des Adress-Bereichs im Datenblatt vom Controller taucht der SPI Controller natürlich nicht auf. Muss ich für den Download-Vorgang den Adressbereich des internen ROMs dann verwenden? So dass, der Controller selbst nach einer geeigneten Möglichkeit sucht, wo der Code gespeichert werden kann? ähnlich wie beim Bootvorgang: Beim Bootvorgang sucht der Controller zuerst ob ein Dataflash über SPI, oder ein EERPOM über TWI connected ist und bootet entsprechend dann von der ersten Quelle. gruß Bernd
Datum: 16.05.2008 20:54
Ich denke das wird nur etwas, wenn das Flash direkt am Datenbuss des uC angeschlossen ist. Alles andere wirst du selbst programmieren müssen. Ich lasse mich aber auch gerne eines Besseren belehren. Den Schluss habe ich nicht mehr verstanden. So einen Bootloader wirst du selbst programmieren müssen.
Datum: 16.05.2008 21:00
eigneltich möchte ich lediglich mein Programm im SPI Dataflash speichern
- allerdings arbeite ich ohne Bootloader etc.
Hab grad die Speicheraddresse vom SPI in einem anderen Dokument von
Atmel gefunden... keine Ahnung warum diese nicht im Memory Mapping
(Datenblatt Controller) auftaucht / erwähnt wird.
>Alles andere wirst du selbst programmieren müssen
d.h. ich muss ein programm schreiben, welches den SPI Controller
aktiviert (und dieses Programm muss zuvor im internen RAM vom Controller
ausgeführt werden)
Bernd
Datum: 16.05.2008 21:32
Hinzu wird kommen, dass der Code nicht direkt im SPI-Flash ausgeführt werden kann. Trivial wird das nicht.
Datum: 16.05.2008 21:39
>>Trivial wird das nicht
d.h. am einfachsten zu verwenden ist ein flash-IC der über Daten- und
Adressbus angeschlossen wird?
Und alles was über SPI, I2C oder Burst Controller angeschlossen wird,
muss zum einen bevor man etwas hineinschreibt initialisiert werden... -
d.h. ein Bootloader führt hier schon einige aufgaben aus, wenn der Code
aus dem Dataflash in den RAM kopiert werden soll, die ich zu fuß
durchführen müsste?
welche Schwierigkeiten erwarten mich denn beim ausführen des Codes (z.B.
aus dem SPI Dataflash)?
Bernd
Datum: 16.05.2008 22:46
Ohne das jemals selbst ausprobiert zu haben...: In der Evaluierungsversion von uVision (keine Ahnung welche Version) sehe ich im Verz. Keil\ARM\Flash\AT91SAM9_DF einen auf der Keil Flash-Library aufbauenden Code, um DF zu schreiben. Da man eine "FLX-Datei" wohl selbst kompilieren kann (uVision Workspace liegt bei), bietet es sich an, diesen Code als Vorlage zur Anpassung an den vorhandenen AT91 zu nehmen. Die Übertragung in das externe Device erfolgt also mit "eigenem" Code. Ich sehe keinen Grund dafür, dass beim Flash-Speicher etwas "memory-mapped" sein sollte bzw. an einem Data-Bus hängen muss. Um die spätere "Ausführung des Codes" aus dem Dataflash indem dessen Inhalt ins RAM kopiert und von dort gestartet wird, kümmert sich soweit ich das aus dem Manual entnehmen kann ohnehin das controllerinterne Boot-Programm. Damit dürfte das wohl so ablaufen (nicht viel mehr als Spekulation...): - per JTAG werden ein paar Routinen ins RAM kopiert, in denen u.a. eine die DF-Schreibfunktion enthalten ist (eine Art temporärer Bootloader) - per JTAG (mglw. DDC) wird ein Teile der in den DF-Baustein zu übertragenden Daten in einen Pufferbereich im Controller geladen - die vorher geladene Schreibroutine wird aufgerufen (über JTAG) und diese übertragt dann den Inhalt des Puffers in den DF. - Vorgang wird solange wiederholt bis gesamter DF-Inhalt übertragen ist. Langer Rede: das Ganze ist recht werkzeug- und targetspezifisch, scheint mir aber von Keil/ARM gut vorgekaut. Direkte Anfrage beim Keil-Support(-Forum) dürfe dennoch erfolgversprechender sein.
Datum: 17.05.2008 11:05
Die Rumkopiererei kostet halt Zeit. Ich denke, der Code wird relativ groß sein und dann wird oft kopiert werden müssen. Wenn das Flash direkt am Bus hängt, muss nichts kopiert werden, da dieser direkt adressiert werden kann. So fern im Flash nur Daten und kein Code liegt, sieht die Sache natürlich anders aus.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel