On Tue, 26 Apr 2016, Robert Jarratt wrote: > I examined the bank 8 configuration register contents using the console. It > contained 0x0136, which suggests the cache is not valid. The base address > register contained 0x4000.
Both correct: * 0x4000 << (23 - 5) => 0x100000000 * 0x0136: s8_Check => 0b0 -- ECC/parity disabled s8_ColSel => 0b100 -- row/column bits: 9/9 s8_SubEna => 0b1 -- subbanks enabled s8_Size => 0b1011 -- bankset size: 2MB s8_Valid => 0b0 -- access disabled Clearly the index and the data register are wired as individual subbanks each. > I then went back to the console to check the bank 0 configuration register > which gave me 0x0069, which indicates it is valid. So there is a good chance > I am reading the right things. Indeed; memory controller register addresses are hardwired IIUC, so they're always there. As to the bankset configuration register: * 0x0069: s0_ColSel => 0b001 -- row/column bits: 12/10 or 11/11 s0_SubEna => 0b1 -- subbanks enabled s0_Size => 0b0100 -- bankset size: 64MB s0_Valid => 0b1 -- access enabled I take it it corresponds to your memory module installed. > This I think explains why I get the machine check. While in the console I > changed the bank 8 config register to 0x0137, and then I was able to read > and write to the address of the flashbus index register, but it didn't > change the LEDs when I wrote to the data register, and reading back the data > register gave me a value I didn't write. So there is still something not You won't read LEDs back as it's a write-only location, a plain octal D flip-flop presumably. Is it not a 74F273 that I can see right below the unfortunate NVRAM chip on your photo? That would be it then. Its outputs are rated 20mA each, plenty to drive LEDs without additional circuitry. Have you tried using your C program instead to poke at these LEDs? SRM might be interfering, e.g. accessing NVRAM or maybe LEDs even between your commands, and consequently your data register writes issued with `deposit' may go elsewhere as the index register has been since changed under your feet. While experimenting with C code make sure you synchronise accesses -- insert `asm("mb")' or suchlike (whatever OpenVMS C compiler supports) just after each flashbus index or data register access and read back the index register before accessing the data register to avoid weak ordering effects in the chipsed, just as noted in the system manual. > right, perhaps the other values in the bank 8 config register, because I > don't know what they mean. However the base address seems correct as it's > value is 0x4000 (the raw value in the register), and this equates to > 0x1.000.0000 based on it being bits 19 upwards in the physical address > space. Timings are documented in the chipset datasheet, though this is all cryptic of course as we don't know what the requirements are for flashbus. We could assume though that they're the same for the index and data side and then try to match them to the NVRAM being 70ns. Perhaps you could post them too? > I wonder if the SROM failing to read the DROM means that it does not set up > bank 8? Well, but didn't it poke at LEDs? It also tried to load DROM before loading SRM and PALcode from flash, both of which are on flashbus, so it must have got bank 8 right. If anything it's SRM or PALcode interfering here probably. Maciej