CMOS 8580 SID PLAYER

Ziel des Projektes ist es, einen original SID-Chip des Commodore C64 mittels eines ARM7 Mikrocontrollers anzusprechen. Als Entwicklerboard habe ich mich für die AT91SAM7S256 ARM Entwicklungsplatine (SAM7-P256) entschieden. So sieht alles fertig im Gehäuse aus:


Softwarepakete installieren

1) KickStart Edition der IAR Embedded Workbench für ARM (frei)

http://supp.iar.com/Download/SW/?item=EWARM-KS32

2) AT91 In-system Programmer (SAM-BA) (frei)

http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3883

SAM-BA testen

Für unsere Installation wollen wir SAM-BA so konfigurieren, dass letztendlich das Programm, welches wir in der IAR Workbench schreiben nach dem Compilieren automatisch in das SRAM des ARM7 geladen wird und dort gleich ausgeführt wird, bis es "normal" oder durch einen Reset beendet wird.

Um hier schnell ein Ergebnis zu sehen (zwei Blinkende LEDs auf dem Board) wollen wir eine Datei LoadAndRunAt0x202000.bat mit folgendem Inhalt anlegen (bitte jeweils den PFAD nach den eigenen Begebenheiten anpassen):

"PFAD\sam-ba_cdc.exe" com4 AT91SAM7S256-EK LoadAndRunAt0x202000.tcl

# Startet SAM-BA mit der Verbindung über com4 (bei mir) zu meinem Board AT91SAM7S256 und führt dann die Befehle aus, die in der Datei LoadAndRunAt0x202000.tcl eingetragen sind. Diese legen wir nun gleich mit folgendem Inhalt an:

send_file {SRAM} "PFAD/blinky.bin" 0x202000 0
go 0x202000

# Es wird das Programm blinky.bin ab Speicher 0x202000 ins SRAM des ARM7 geladen. Nach dem Laden wird das Programm gleich über den go-Befehl gestartet. Die LEDs sollten danach abwechselnd so lange blinken, bis der Reset Taster gedrückt wird.

Die Datei blinky.bin gibt es hier.

Das erste Programm

Normalerweise ist das erste Programm, das man auf einem neuen System schreibt ein simples "Hello World". Dieses Programm gibt meist auf dem Bildschirm einen Text aus: Hello World.

Nachdem unser Mikrocontroller noch keinen "Monitor" hat, um diesen Text auszugeben wollen wir uns mit dem Blinken der beiden LEDs auf dem Board begnügen.

Was zu tun ist

1) IAR Workbench Projekt (Download) anlegen und konfigurieren
2) Projekt compilieren
3) Programm auf den Mikrocontroller übertragen und ausführen

Um nach dem Compilieren gleich das Ergebnis sehen zu können, habe ich im Projekt bei den Settings als Post-Build-Action die Batchdatei angegeben, die die Datei "blinky.bin" via SAM-BA an den Mikrocontroller schickt und auch gleich startet. Das erleichtert das Entwickeln sehr, nachdem wir ja kein Debugger-Modul verwenden.

Das Ergebnis

blinkende LEDs

Interessante Teile im Quelltext

// --------------------------------------------------------------
// Stackpointer setzen
LDR r13, =0x210000

// --------------------------------------------------------------
// Watchdog ausschalten & "fastmode" an
LDR r0, =0xFFFFFD44
LDR r1, =0x8000
STR r1, [r0]
LDR r0, =0xFFFFFC00
LDR r1, =0x04
STR r1, [r0, #0x10]

LDR r0, =PIO_BASE

// --------------------------------------------------------------
// PIO-control fuer Pin 17,18 setzen
LDR r1, =1100000000000000000b
STR r1, [r0, #PIO_PER]

// --------------------------------------------------------------
// Ausgabe fuer Pin 17,18 setzen
LDR r1, =1100000000000000000b
STR r1, [r0, #PIO_OER]

// --------------------------------------------------------------
// direktes schreiben auf Register (Pin 17,18) zulassen
LDR r1, =1100000000000000000b
STR r1, [r0, #PIO_OWER]

// --------------------------------------------------------------
// Pin 17,18 auf high
LDR r1, =1100000000000000000b
STR r1, [r0, #PIO_ODSR]



Bookmark and Share

All trade names, company names, product names and logos are trademarks
or registered trademarks of their respective owners.
© 2011 by Peter Pippinger. All rights reserved.