Dumping an old parallel rom using an atmega328p

19 posts / 0 new
Last post
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Or use an AVR with external memory access and talk to the ROM using an 8-bit bus structure with an address latch. I know the Mega8515 will do this, not sure if any newer AVR's still support external memory.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

dksmall wrote:
not sure if any newer AVR's still support external memory.

Any of you AVR part gurus feel like filling in the blanks on this?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I tried finding out using the parametric table on the Atmel site. It's useless!

But what is the definition of newer? ;)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The 8515, mega162, nega64, mega128 all have external memory interfaces to my certain knowledge. Not sure of others though a grep of the .h files for the right control registers should weedle them out.

Needless to say that most of the "large pinout" Xmega all have an EBI which I guess is the modern way to do it.

EDIT: A look at a few datasheets seems to suggest the XMEM devices are likely to have SRW01 (to do with wait state select) so...

E:\WinAVR-20100110\avr\include\avr>grep SRW01 *.h
iocanxx.h:#define    SRW01       1
iom128.h:#define    SRW01        3
iom161.h:#define SRW01  3
iom162.h:#define SRW01  3
iom32u6.h:#define SRW01 1
iom64.h:#define    SRW01        3
iom8515.h:#define    SRW01        3
iomxx0_1.h:#define SRW01   1
iousbxx6_7.h:#define SRW01   1

That would seem to confirm I listed most of them above.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

jayjay1974 wrote:

But what is the definition of newer? ;)

Newer then a Mega8515. 8)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The 64's 6510 used banked switching, as it had 64k of RAM and just 16 address lines. The ROM was found in the second bank.

For you reference the reset vector for the 64 is $FFFC-$FFFD, that should point you to the start of the 64's Kernal (kernel) at $E000 if you are interested in investigating it.

I would use a 7400 series parallel latch for addressing but remember the prom's would be very slow, even by the standards of todays slowest EEPROM's. Make sure this timing issue is taken into account.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Forgot about a bug I had reported about devices that have external ram, the keyword was XRAM. Thanks to Cliff's example above I came up with this list of devices with XRAM that are listed in the Studio 6.0/devices folder. Seems to be missing a couple of the devices that were indicated in Cliff's list above.

C:\Program Files (x86)\Atmel\Atmel Studio 6.0\devices>grep XRAM *.xml
AT90CAN128.xml:   
AT90CAN32.xml:    
AT90CAN64.xml:    
AT90USB1286.xml:  
AT90USB1287.xml:  
AT90USB646.xml:   
AT90USB647.xml:   
ATmega128.xml:    
ATmega1280.xml:   
ATmega1281.xml:   
ATmega128A.xml:   
ATmega162.xml:    
ATmega2560.xml:   
ATmega2561.xml:   
ATmega64.xml:     
ATmega640.xml:    
ATmega64A.xml:    
ATmega8515.xml:   
=====================================================================================================

OT: I liked it better when I was in the UTC+1 time zone.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi guys,

I did it :) In case anyone cares, the chip I am dumping contains the 901227-2 kernel - the program just spits out the hex values of each memory location. Maybe I'll write something in Python to save a .bin file for me now :)

Here's a screen shot of the terminal:

I didn't have an avr with enough pins to spare so I cheated and used a PIC18F4520 that I had on the bench. Fun stuff - thanks for your help!

Pages