Hello E2E-Experts,
according to SPRACU8B / 2.1.1 System Configuration / 11., enabling "Enable DRAM Temperature Polling" in SPRACU8B_Jacinto7_DDRSS_RegConfigTool.xlsb leads to this:
Enabling this parameter ONLY allows the controller to periodically read MR4 of the LPDDR4. It does NOT change the refresh rate. A software interrupt service routine is required to service the changes in temperature.
According to Micron LPDDR4 data sheet, Mode register MR4 contains:
- Refresh Rate in OP[2:0]
- The refresh rate for each MR4 OP[2:0] setting applies to tREFI, tREFIpb, and tREFW. MR4 OP[2:0] = 011b corresponds to a device temperature of 85°C. Other values require either a longer (2x, 4x) refresh interval at lower temperatures or a shorter (0.5x, 0.25x) refresh interval at higher temperatures. If MR4 OP[2] = 1b, the device temperature is greater than 85°C.
- Thermal offset-controller offset to TCSR in OP[6:5]
- Configure expected temp gradient
I'm not sure, if I got this right. My understanding is the following:
- The DDR4 module reads its internal temperature sensor in an interval t(TSI) derived. The length of this interval is affected by the gradient given in TCSR.
- The DDR4 module derives one scaling factor (0.25, 0.5, 1, 2, 4) for all the refresh parameters (->t(REFI)) and sets MR OP[2:0] accordingly.
- The DDRSS reads MR4 cyclically and generates an interrupt (on read or on change?)
- SW gets these values by setting up an ISR to adapt DDRSS refresh configuration according to the value in MR4 OP[2:0]
My questions:
- Did I get i right (at least basically)?
- Is there some additional information about DDRSS behaviour regarding this topic? I could't find anything about it in SPRUI1C (MAR 22)
- Is there more information for the registers DDRSS_CTL_124 - 127? All I found was permutations of these two details:
- MRR temp check number of long counts until the [normal / high] priority request is asserted for frequency copy [0 / 1 / 2]
- MRR temp check number of long counts until the timeout is asserted for frequency copy [0 / 1].
- Does DDRSS generate the interrupt refered to in SPACU8B? If so:
- What triggers the interrupt (MR4 read done or MR4 changed)?
- Which interrupt is used? (nothing found in SPUIC1)
- Is there some kind of example / reference implementation available? (e.g. SDK)
- Is it mandatory to use this mechanism (speaking -40 / +85°C) or is it just necessary for temperatures above 85°C or an opportunity to gain performance by enlarging refresh below 85°C?
Maybe someone can shed some light on this.
Best regards
Wolfram