logo资料库

龙芯 PMON 3A2000 内存参数调试方法.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
这次PMON 在263Mhz的频率下能较稳定跑过去,过400 就会直接hang在copy PMON to  memory。。 所以这次调试的主要目的就是将内存的频率调试到500Mhz 以上就可以 dli     s1, 0xc1a18400c1a18400 1,首先需要手动设置 S1的值; //!!!!important--s1 must be correctly set #ifdef  AUTO_DDR_CONFIG         dli     s1, 0x36170000  //set use MC1 or MC0 or MC1/0 and give All device id #else   #endif S1的格式详细请看 龙芯3a2000的用户手册! //set MC1 dimm infor     dli     a0, ( MC_SDRAM_TYPE_DDR3    /* sdram type: DDR3/DDR2 */ \                 | MC_DIMM_ECC_NO        /* dimm ECC: YES/NO */ \                 | MC_DIMM_BUF_REG_NO    /* dimm buffer register: YES/NO, for RDIMM  use YES, all else use NO*/ \                 | MC_DIMM_WIDTH_64      /* memory data width: 64/32 */ \                 | MC_SDRAM_ROW_14       /* sdram row address number: 15~11 */ \                 | MC_SDRAM_COL_10       /* sdram column address number: 12~9 */ \                 | MC_SDRAM_BANK_8       /* sdram bank number: 8/4 */ \                 | MC_ADDR_MIRROR_YES    /* for standard DDR3 UDIMM, use YES else  use NO */ \                 | MC_SDRAM_WIDTH_X8     /* SDRAM device data width: 8/16 */ \                 | MC_USE_CS_0_1         /* the CS pins the sdram connected on(split by '_',  from small to big) */ \                 | MC_MEMSIZE_(4)        /* MC memory size, unit: 512MB */ \                 )     dsll    s1, a0, 32     //set MC0 dimm infor     dli     a0, ( MC_SDRAM_TYPE_DDR3    /* sdram type: DDR3/DDR2 */ \                 | MC_DIMM_ECC_NO        /* dimm ECC: YES/NO */ \                 | MC_DIMM_BUF_REG_NO    /* dimm buffer register: YES/NO, for RDIMM  use YES, all else use NO*/ \                 | MC_DIMM_WIDTH_64      /* memory data width: 64/32 */ \                 | MC_SDRAM_ROW_14       /* sdram row address number: 15~11 */ \
                | MC_SDRAM_COL_10       /* sdram column address number: 12~9 */ \                 | MC_SDRAM_BANK_8       /* sdram bank number: 8/4 */ \                 | MC_ADDR_MIRROR_YES    /* for standard DDR3 UDIMM, use YES, else  use NO */ \                 | MC_SDRAM_WIDTH_X8     /* SDRAM device data width: 8/16 */ \                 | MC_USE_CS_0_1         /* the CS pins the sdram connected on(split by '_',  from small to big) */ \                 | MC_MEMSIZE_(4)        /* MC memory size, unit: 512MB */ \                 )     or      s1, s1, a0     //set used MC and NODE ID     or      s1, s1, USE_MC_0            /* used memory controller: _0/_1/_0_1 */     or      s1, s1, MC_NODE_ID_0        /* node ID: 0/1/2/3 */ 2,修改内存宏定义 以及打开调试内存的测试程序宏 和 参数调试宏 #define DDR_LOOPC  64 //264Mhz #define DEBUG_DDR //复杂内存压力测试 #define DEBUG_DDR_PARAM  // 调试内存参数宏 3, 开始调试参数 在start.S 的末尾可以看到是使用了哪一个 PARAM 参数表 比例 :         .rdata         .global ddr2_reg_data         .global ddr3_reg_data         .align  5 #include "loongson_mc2_param.S"  // 正在使用的参数表         .text         .global  nvram_offs         .align 12 nvram_offs:         .dword 0x0         .align 12 参数调试的一般步骤:
1 、首先调试 将简单内存测试调通 主要的参数有: 需要将参数 tPHY_RDDATA(0x1c0) 将 tPHY_WRLAT(0x1d4) 标准的uncached /cached data is:  MC0_DDR3_CTRL_0x1d0: .dword 0x0802090302000014 ----- MC0_DDR3_CTRL_0x1d0: MC0_DDR3_CTRL_0x1c0: tPHY_WRLAT(0x1d4)+1 5A往下移动:tPHY_RDDATA(0x1c0)+1 5A往上移动
通过适当的调整基本可以调成:5a3c 781e 的形式; 2 、接着往下跑 可能会出现 系统卡死的情况 主要是hang在 cached data 那块和  copyPMON
要想跳过这些hang住的地方可以通过 打开内存调试模式:MC0_DDR3_CTRL_0x160:  .dword 0x0000000000010101 将0x162 的01 改成 00 那就基本能顺利跑下去  如果hang在了 copy PMON 的地方,可以试着调试这几个参数  不应该是497Mhz嘛? 其他的 参数可能需要更多的实验证明。P12PCIH 也可以通过上面的几个参数微调 ,正常情 况不应该有太久的延时在这里。 这次主要的几个参数change list 如下:
4、hang在P12PCIH  处 _pci_businit (int init) ----》
----》 -----》》 -----》
分享到:
收藏