现在能正常引导了,查处了是软件问题,在demo板的emif初始化程序中有一段这样的代码:
EMIF_Config MyEMIFcfg0=[
0x30 |
EMIF_FMKS(GBLCTL,NOHOLD,DISABLE) |
EMIF_FMKS(GBLCTL,EKEN,ENABLE) |
EMIF_FMKS(GBLCTL,CLK1EN,DISABLE) |
EMIF_FMKS(GBLCTL,CLK2EN,ENABLE),
EMIF_FMKS(CECTL,WRSETUP,DEFAULT) |
EMIF_FMKS(CECTL,WRSTRB,DEFAULT) |
EMIF_FMKS(CECTL,WRHLD,DEFAULT) |
EMIF_FMKS(CECTL,RDSETUP,DEFAULT) |
EMIF_FMKS(CECTL,TA,OF(2)) |
EMIF_FMKS(CECTL,RDSTRB,DEFAULT) |
EMIF_FMKS(CECTL,MTYPE,SDRAM16) |
EMIF_FMKS(CECTL,RDHLD,DEFAULT),
EMIF_FMKS(CECTL,WRSETUP,DEFAULT) |
EMIF_FMKS(CECTL,WRSTRB,DEFAULT) |
EMIF_FMKS(CECTL,WRHLD,DEFAULT) |
EMIF_FMKS(CECTL,RDSETUP,DEFAULT) |
EMIF_FMKS(CECTL,TA,OF(2)) |
EMIF_FMKS(CECTL,RDSTRB,DEFAULT) |
EMIF_FMKS(CECTL,MTYPE,ASYNC16) |
EMIF_FMKS(CECTL,RDHLD,DEFAULT),
EMIF_FMKS(CECTL,WRSETUP,DEFAULT) |
EMIF_FMKS(CECTL,WRSTRB,DEFAULT) |
EMIF_FMKS(CECTL,WRHLD,DEFAULT) |
EMIF_FMKS(CECTL,RDSETUP,DEFAULT) |
EMIF_FMKS(CECTL,TA,OF(2)) |
EMIF_FMKS(CECTL,RDSTRB,DEFAULT) |
EMIF_FMKS(CECTL,MTYPE,ASYNC16) |
EMIF_FMKS(CECTL,RDHLD,DEFAULT),
EMIF_FMKS(CECTL, WRSETUP, OF(2)) |
EMIF_FMKS(CECTL, WRSTRB, OF(10)) |
EMIF_FMKS(CECTL, WRHLD, OF(2)) |
EMIF_FMKS(CECTL, RDSETUP, OF(2)) |
EMIF_FMKS(CECTL, TA, OF(2)) |
EMIF_FMKS(CECTL, RDSTRB, OF(10)) |
EMIF_FMKS(CECTL, MTYPE, ASYNC16) |
EMIF_FMKS(CECTL, RDHLD, OF(2)),
EMIF_FMKS(SDCTL,SDBSZ,4BANKS) |
EMIF_FMKS(SDCTL,SDRSZ,13ROW) |
EMIF_FMKS(SDCTL,SDCSZ,9COL) |
EMIF_FMKS(SDCTL,RFEN,ENABLE) |
EMIF_FMKS(SDCTL,INIT,YES) |
EMIF_FMKS(SDCTL,TRCD,OF(2)) |
EMIF_FMKS(SDCTL,TRP,OF(2)) |
EMIF_FMKS(SDCTL,TRC,OF(7)),
//EMIF_FMKS(SDTIM,XRFR,OF(1)) |
EMIF_FMKS(SDTIM, CNTR, OF(0)) |
EMIF_FMKS(SDTIM, PERIOD, OF(1400)),
EMIF_FMKS(SDEXT, WR2RD, OF(0)) |
EMIF_FMKS(SDEXT, WR2DEAC, OF(2)) |
EMIF_FMKS(SDEXT, WR2WR, OF(0)) |
EMIF_FMKS(SDEXT, R2WDQM, OF(1)) |
EMIF_FMKS(SDEXT, RD2WR, OF(0)) |
EMIF_FMKS(SDEXT, RD2DEAC, OF(1)) |
EMIF_FMKS(SDEXT, RD2RD, OF(0)) |
EMIF_FMKS(SDEXT, THZP, OF(2)) |
EMIF_FMKS(SDEXT, TWR, OF(2)) |
EMIF_FMKS(SDEXT, TRRD, OF(0)) |
EMIF_FMKS(SDEXT, TRAS, OF(5)) |
EMIF_FMKS(SDEXT, TCL, OF(1))
];
该段代码用于初始配置EMIF接口相关控制寄存器,在使用仿真器在线调试的情况下可正确配置寄存器,但是在烧写到FLASH引导启动后就会将emif寄存器配置错位,现象是找到了,但是真是原因还不是很清楚,为什么这一段代码在在线仿真和烧写引导两种情况下会有如此差别?请清楚的高人指点。
另外,使用仿真器对引导程序的debug真是好用。谢谢楼上的相关回答。