CNMBook mit EJTAG und Olimex-ARM-OCD reanimieren

Gesammelte Informationen und ein Windowsprogramm

PDF-Dokumentation zur CPU Ingenics JZ4730
PDF-Dokumentation zum NAND-Flash Samsung K9K8G08UOA
Quellcode des EJTAG-Emulator inklusive MIPS-Binärdateien und Quellcode

Pinbelegung der JTAG-Leiste auf dem Mainboard

PinBezeichnungBedeutung
5TSRSTauf +3,3V halten
6TRSTTest Logik Reset
7TMSTest Mode Select
8TDITest Data In
9TCKTest Clock
10TDOtest Data Out
23 & 24GNDMasse
Einen +3,3V Testpin findet man auf dem Board

Pinbelegung am Olimex-ARM-OCD

PinBezeichnung
1 & 2+3,3V
3TRST
5TDI
7TMS
9TCK
11GND
13TDO

Anmerkungen zum Windowsprogramm

Das Programm hat zwei Aufrufparameter

Parameter 1 - genannt TestDatei

Die Binärdatei, die der EJTAG-Simulator dem MIPS zum Ausführen serviert.

Parameter 2 - genannt BIOSDatei

Die Binärdatei, die über die Debug-Adressen 0xff200000 (Adressabfrage 32 Bit) und 0xff200004 (Datenrückgabe 32 Bit mit Autoinkrement) vom Ausgeführten Programm im EJTAG-Emulator abgerufen werden kann. Im Falle des NANDFlash-Programmes dient es zum übertragen der Binärdaten des SPL-Blocks und der beiden Uboot-Blöcke

Funktion

Der RUN-Knopf startet den Thread, der über EJTAG in der MIPS-CPU eine Debug-Exception verursacht.
Die CPU aktiviert den Debug-Mode und Springt Adresse 0xff200200 an.
Ab hier übernimmt der EJTAG-Emulator, da die CPU alle Befehle und Daten im Segment von 0xff200000 bis 0xff3fffff vom EJTAG-Emulator abfragt.
Um aktuelle Rückinformationen vom ausgeführten MIPS-Programm zu erhalten, ohne aufwendig den UART anzuschliessen und zu initialisieren, sind die Adressen 0xff20008 bis 0xff200014 durch das Programm beschreibbar und werden im Ausgabefenster angezeigt.

Inhalt der RAR-Datei

Der Quellcode und Release/Debug-Binärdateien liegen in jz\emulator.c\Emulator der RAR-Datei Im Ordner jz\emu sind sowohl der MARS-Simulator als auch Assembler-Quellcodes und Binärdateien.
Testdateien
burnspl.bin (Quellcode burnspl.s) - Binär-MIPS-Programm zum Programmieren des Block 0 mit splboot_block0.bin
burnuboot.bin (Quellcode burnuboot.s) - Binär-MIPS-Programm zum Programmieren der Blöcke 1 und 2 uboot_block12.bin
BIOSDateien
splboot_block0.bin - 4kByte spl-Datei für Block 0 im NAND-Flash
uboot_block12.bin - 128 kByte uboot-Datei für Block 1 und 2 im NAND-Flash

Das Programm ist sicherlich noch nicht vollends perfekt und hat auch einige Fehler, aber es funktioniert für den angedachten Zweck und hat auch gute Dienste gebracht beim Austesten der Hardware des Jz4730.
Mit 6 MHz JTAG-Takt hat das Programmieren rund eine Stunde in Anspruch genommen.
Die ECC-Codes im Spare-Bereich der NAND-Flash-Seiten werden nicht mitgeschrieben,das SPL-Programm lädt Uboot auch so.

Quellen

Quellcode der Basis des EJTAG-Emulators von Thomas Sailer
Der verwendete Compiler mit eingebauter IDE CODE::BLOCKS
Der verwendete Assembler für die MIPS-Binärdateien MARS
Hersteller des im Olimex-ARM-OCD verwendeten FTDI FT2232 und der Supportbibliothek FTDIJTAG
Hersteller des im Olimex-ARM-OCD
Hersteller des Ingenics JZ4730 MIPS-Prozessors
Hersteller des Samsung K9K8G08UOA Nandflash
Die Seite befindet sich im Ausbau.