Page 1 of 1

DRAM Tester

Posted: Sun Sep 02, 2018 6:56 am
by cfbsoftware
A 1983 Sage II 68000 computer I acquired last year was failing to boot with a RAM test error. Unfortunately the diagnostic only identified which of four 256K blocks was the first to fail. As there are 18 DRAM chips in each block it was not feasible to identify the bad chips(s) just by swapping them around. An internet search for a solution came up with a DRAM chip tester implemented on an Arduino. Using that as an example I implemented an equivalent DRAM tester in Oberon on an STM32 development board and within a few hours had identified nine bad chips and replaced them with good ones.

The attached example source code has been implemented on an STM32F767 Nucleo-144 board and uses the following connections:
DRAM4164.jpg (30.84 KiB) Viewed 14997 times
Using a 16-pin ZIF socket mounted on Veroboard / stripboard, all of the connections (with the exception of PF13, Vdd and GND) line up directly with the corresponding pins on the Arduino-compatible connectors on the Nucleo board so only 4 jumper leads are required:
Nucleo144.jpg (71.04 KiB) Viewed 14993 times
A slide switch is used to control the 5v connection to the chip. It only takes a few seconds to test each chip. Insert the chip in the socket, slide the switch to connect power to the chip and press the reset button. The green LED blinks a number of times corresponding to which of each of the four tests it is running. As soon as any test fails, the red led is lit continuously. If all tests pass the green LED is lit continuously.

Re: DRAM Tester

Posted: Sat Oct 27, 2018 11:13 am
by cfbsoftware
The Sage was still failing intermittently so I have now added a couple more tests (Walking Zero and Walking One) to detect if any of the address lines are faulty. This adds about 20 seconds to each test but it was worth it as it identified a further eight faulty DRAM chips. The latest version of the source code is now included as a standard example with all editions of v7.0 Astrobe for Cortex-M3, M4 and M7. It is designed to run on all the STM32 Nucleo-144 boards included in the list of supported development boards.