??? 02/14/09 16:49 Read: times |
#162417 - What do you mean by "OK"? Responding to: ???'s previous message |
The old PC's used ot write 0xAA and then 0x55 to all locations in accessible memory, the purpose of that was, mainly, to establish how much read/write memory there was in the system. That test did little else, and often failed in cases where the DRAM addressing scheme was defective, and other failure modes.
For the small size of memories that are generally used in 805x systems, it probably is desirable to perform a moderately thorough "test" of memory, location by location, and not in blocks as the old PC's did it. You can read a memory location, save its content in B do whatever you think will make you believe that location is both valid and unique as read/write memory, and then restore its content, so you really don't need to "flush" it. I'm presently using a pair of 6C4008's (512k x 8 in each) in a new project, and do want to verify that they're more or less functional as part of the POST code. Common modes of detectable failures are "stuck bit" (it's obvious what that is), address-data interaction (where the address affects the data, normally due to decoding logic, internal or external, failure, e.g. you write to one place, but the data appears elsewhere, sometimes in addition to where it should, and sometimes instead), and refresh logic failure, with which you don't have to concern yourself since you're using SRAM, as I am. Other issues such as timing changes due to heating, etc, are more difficult to ferret out. Since you have only 128 kB available, I'd suggest you (1) write "00" to all locations, one at a time, as I mentioned before, and then verify that all bytes are zero, then invert each byte, and verify that each byte is "FF" then (2) go through the entire memory array and write "00000001b" (walking bit test) to each location and then rotate it into each bit position, verifying that each bit can be changed, (3) then write the page address (high 8 bits of memory address) to each location just to ensure that each one appears, more or less, where it ought to appear, and verify that by reading the entire memory, one byte at a time. When you're finished, you'll still have the entire memory just as it was before the test, yet be fairly well assured that (a) it really is read/write memory, and (b) that it behaves as it should, within reason. There's a memory test in Ultramon51, and, if you disassemble that, you'll easily find where it lives. I doubt that it's relocatable, so you'll have to study it yourself, if you want to use that as an example, but it takes less than a second to perform its entire test on 64KB of XRAM at 11.0592 MHz. It appears to have one bug in that it will check 0000-FFFE just fine, but if the last address is 0xFFFF, it will hang. The main problem with memory testing is deciding what's "good enough." RE |
Topic | Author | Date |
Memory Test | 01/01/70 00:00 | |
Michael Barr | 01/01/70 00:00 | |
What do you mean by "OK"?![]() | 01/01/70 00:00 |