How to save the DDR SDRAM data upon reset
来源:互联网 发布:midas软件破解版下载 编辑:程序博客网 时间:2024/06/06 02:24
Recently, customer comes up a new requirement for saving the DDR SDRAM data upon reset. Such a requirement arises because customer needs to restore the system as quickly aspossible once there is a crash. This document is to provide a proposed sequence to save the DDR SDRAM data upon reset.
Here is updated proposed sequence for an implementation of Self-refresh over SW-managed reset sequence
1) Make sure DDR_SDRAM_CFG[SREN] =1 at initialization.
2) Set the DDR_SDRAM_CFG_2[FRC_SR] when needed to enter self-refresh
3) Wait a few us for self-refresh to take place before issuing /HRESET.
4) Re-initialize all DDR registers, setting the DDR_SDRAM_CFG[BI] to bypass the writing of mode register
5) Wait 200 us
6) Set DDR_SDRAM_CFG[MEM_EN] to bring the memory controller online.
Then at this point, the DDR SDRAM content can be again accessed.
Some comments are noted here:
- Following step 2), and as far asDDR_SDRAM_CFG_2[FRC_SR] bit is set, MCKE signals are kept low and no further DDR SDRAM accesses from either SW or peripherals will be served by the DDR SDRAM controller. Hence, the recommendation to execute such sequence after stopping other cores except the one running this and also peripherals activity. I reckon that I can't figure out precisely how a DDR SDRAM access attempt will really behave at this stage, I expect feedback on that.
- Step 3) is required to account the time for pending transactions and posted refreshes to complete before self-refresh command is sent to DDR devices. There is no direct way to check that Self-refresh command has been provided to the DDR.
- On step 4), as you can see the BI (Bypass Init) bit has to be set "after" Reset (instead of before as prev. stated). This will keep the memory controller from re-initializing the DRAMs. Then, CKE will simply be asserted when MEM_EN is set,
- On enabling Self-refresh from code running in DDR ... again this is not recommended ... as this would be the last instruction that can be executed (in self-refresh mode DDR is not accessible) ...
需要注意几点:
1. 在上述2)之后是不能对DDR再进行访问了,包括取指令,所以建议在之后加上while(1); 的指令;
2. 在4)的步骤时,设置其他DDR寄存器前,保证DDR_SDRAM_CFG [MEM_EN]为0;
3. 在第6步结束后,对DDR进行最少32bytes的写操作,就写0地址(默认地址)好了,这个在P4080RM的11.4.16 DDR training initialization address(DDRx_DDR_INIT_ADDR)章节有说明,如下:- How to save the DDR SDRAM data upon reset
- How to Reset the Root Password
- HOW TO RESET THE IMPORT QUEUE
- How to reset the Verity K2 password.
- How to Reset the Root Password 5.5
- How to use the System Restore API to save and to restore system data in Visual C++
- how to use Properties and File to Save Data
- How to known Android data connection reset? (socket side)
- QT14 how to save data in sqlite database with pushbutton
- How to build parport related driver upon parport module in the kernel
- DDR SDRAM
- DDR SDRAM
- How to:Save Layout
- How to run through the service reset procedure
- How to Reset the&…
- save the file in unicode format to prevent data loss.
- How to reset the ILOM root password back to the default 'changeme' using ipmitool
- svn: how to resolve “local edit, incoming delete upon update”
- UbuntuManual:Ubuntu 基础
- mac系统下使用xmlbeans
- oracle“记录被另一个用户锁住”
- ~/.bash_profile在某些情况下没有执行
- Android推荐学习路线图
- How to save the DDR SDRAM data upon reset
- JavaScript中的NaN、Infinity、null和undefined
- struts2开发环境的搭建与第一个项目的创建
- js for in 在各浏览器差异
- java jar运行读取配置文件config
- Visual Studio2010 配置C/C++项目属性
- Red Hat Linux创建普通用户&&普通用户与超级用户root切换
- 说说Android桌面(Launcher应用)背后的故事1
- 深入入门正则表达式(java) - 1 - 入门基础