debugging AT91RM9200 w/2.8" OLED, parallel interface

Hi there,

I’m in a little bit of uncharted territory (for myself), and so I thought I’d ask for a few suggestions. I have an AT91RM9200 board that I’ve constructed, with 32meg of SD, an 8meg SPI dataflash that it boots off of, and an SD card with a linux file system. The AT91 initially boots into Darrell’s loader, which loads up uBoot, and then linux. It runs well, and I can chat with it successfully over ethernet.

My problem is this: The board has a 2.8" OLED display (the same as from the dsPIC/OLED/SPI thread I posted here: viewtopic.php?t=10827 ), connected using a parallel interface rather than serial. The OLED uses a S6E63D6 display controller, which has a somewhat unique parallel interface: there are 16 data lines (actually up to 18, but you can run it in 16-bit mode), a read and write strobe, and a “register select” line. There aren’t any address lines per se – instead, one asserts the register select line, which lets you use the data lines to select which register you’re going to write to. (e.g. X position register, Y position register, pixel value register, etc).

While I’ve successfully used the display in SPI mode, I’d like to get the parallel mode working to have significanly faster writes. On my board, the OLED display is connected to the memory interface in the following way:

ID_MIB = 0 (Intel 80x CPU mode, where 1 would be Morotolla 68x)

OLED D0-D15 = AT91 D0-D15

OLED_ERDB(read strobe) = AT91 NRD

OLED_WRB(write strobe) = AT91 NWE

OLED_RS (register select) = AT91 A2 (Address line 2)

OLED_CS (chip select) = AT91 NCS2

The logic (I hope :slight_smile: ) is that writing to an address that asserts A2 (say, NCS2 base + 0x0004) will let you write to the register, while writing to an address that doesn’t assert A2 (say, NCS2 base + 0x0000) will let you write data to that register.

The problem that I’m having is that the interface is quite difficult to debug. The memory interface is very, very fast – far faster than any scope or logic analyzer I have access to. So far I haven’t picked up a JTAG debugger for the AT91, but I’m not adverse to that as long as the debugger is reasonably inexpensive and will work successfully.

My first debugging thought is that I’d like to be able to just setup the memory interface for NCS2, send send specific values to D0-D16 and the address lines, and see what happens – one program step at a time, and ideally very slowly so that I could watch it on a scope. Would anyone have a suggestion on a potential software solution to this – perhaps a way to run a small (linux?) debugging program in real-time, single-user, no multitasking, one step at a time – or, alternatively, an inexpensive JTAG debug system?

thanks for your thoughts!