Now I want to realize software restart function() in my system.
According to the user manual:
"Software may request a hard reset by setting a bit in a
global utilities register; see Reset control register (GUTS_RSTCR)."
So I did this:
#define GUTS_RSTCR 0xE00B0
#define HRESET_REQ 1/* Hardware reset request */
*(volatile unsigned int *)(CCSRBAR + GUTS_RSTCR) = (1 << HRESET_REQ);
As described above,My system did not reboot.What steps did I omit?
if anyone konws,please tell me!
Thanks!
Here the example from www.denx.de.git.u-boot.git./master/git/cpu/mpc85xx/cpu.c int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) { uint pvr; uint ver; pvr = get_pvr(); ver = PVR_VER(pvr); if (ver & 1) { /* e500 v2 core has reset control register */ volatile unsigned int * rstcr; rstcr = (volatile unsigned int *)(CFG_IMMR + 0xE00B0); *rstcr = 0x2; /* HRESET_REQ */ } else {... I.e. it just writes 0x2 to the rstcr (set HRESET_REQ bit) like we suppose your code does too. Notice that it just assigns the HRESET_REQ_B pin. There should be external cuircuit on your system which tests HRESET_REQ_B pin state and assigns HRESET input of the processor.
thank you very much!