4 Replies Latest reply on Sep 4, 2017 7:58 PM by sukisaki

    Apollo Lake: How can I set values in memory-referenced registers?




      I'm a beginner of intel's core and I'm developing a software which is run on Apollo Lake.


      Now, I want to change setting associated with DRAM (timing, refleshing, etc.)

      so I want to set value to memory-referenced register but I cannot.

      For example, DRAM Timing Register0A (Offset 1000h), by below method.

      ・method 1. Got address from memory control hub base address register.

      ・method 2. Accessed to read (base address + 1000h), then i could read register value.

      ・method 3. Accessed to write (base address + 1000h) by 32bit variable because access size of DRAM Timing Register0A is 32bit.

      ・method 4. Again method 2, then, read value was not new value(wrote at method 3), but old value.

      But other register(e.g. B-Unit Miscellaneous Configuration (Offset 6800h)) can be set by same method.

      Some memory space is protected?

      How can I set registers? and I'm glad to tell me where I can get document(s) for detail.

      Thank you.