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



Pin
Bezeichnung
Bedeutung
5
TSRST
auf +3,3V halten
6
TRST
Test Logik Reset
7
TMS
Test Mode Select
8
TDI
Test Data In
9
TCK
Test Clock
10
TDO
Test Data Out
23 & 24
GND
Masse
Einen +3,3V Testpin findet man auf dem Board


Pinbelegung am Olimex-ARM-OCD



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


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

BIOS Dateien



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