📄 reset_hyd1100.s
字号:
sw t1, mem_sttime1(t0) li t1, MEM_STADDR1 sw t1, mem_staddr1(t0) /* RCE2 */ li t1, MEM_STCFG2 sw t1, mem_stcfg2(t0) li t1, MEM_STTIME2 sw t1, mem_sttime2(t0) li t1, MEM_STADDR2 sw t1, mem_staddr2(t0) /* RCE3 */ li t1, MEM_STCFG3 sw t1, mem_stcfg3(t0) li t1, MEM_STTIME3 sw t1, mem_sttime3(t0) li t1, MEM_STADDR3 sw t1, mem_staddr3(t0) sync /* * Step 15) Set peripherals to a known state */ li t0, AU1000_IC0_ADDR li t1, 0xFFFFFFFF sw t1, ic_cfg0clr(t0) sw t1, ic_cfg1clr(t0) sw t1, ic_cfg2clr(t0) sw t1, ic_srcset(t0) sw t1, ic_assignset(t0) sw t1, ic_wakeclr(t0) sw t1, ic_maskclr(t0) sw t1, ic_risingclr(t0) sw t1, ic_fallingclr(t0) sw zero, ic_testbit(t0) sync li t0, AU1000_IC1_ADDR li t1, 0xFFFFFFFF sw t1, ic_cfg0clr(t0) sw t1, ic_cfg1clr(t0) sw t1, ic_cfg2clr(t0) sw t1, ic_srcset(t0) sw t1, ic_assignset(t0) sw t1, ic_wakeclr(t0) sw t1, ic_maskclr(t0) sw t1, ic_risingclr(t0) sw t1, ic_fallingclr(t0) sw zero, ic_testbit(t0) sync li t0, AU1000_SYS_ADDR sw zero, sys_freqctrl0(t0) sw zero, sys_freqctrl1(t0) sw zero, sys_clksrc(t0) sw zero, sys_pininputen(t0) sync li t0, AU1000_AC97_ADDR li t1, 0x2 sw t1, ac97_enable(t0) sync li t0, AU1000_USBH_ADDR li t1, usbh_enable addu t0, t1, t0 sw zero, 0(t0) sync li t0, AU1000_USBD_ADDR sw zero, usbd_enable(t0) sync li t0, AU1000_IRDA_ADDR sw zero, irda_enable(t0) sync li t0, AU1000_MACEN_ADDR sw zero, macen_mac0(t0) sw zero, macen_mac1(t0) sync li t0, AU1000_I2S_ADDR li t1, 0x02 sw t1, i2s_enable(t0) li t0, AU1000_UART0_ADDR sw zero, uart_enable(t0) sync li t0, AU1000_UART1_ADDR sw zero, uart_enable(t0) sync li t0, AU1000_UART2_ADDR sw zero, uart_enable(t0) sync li t0, AU1000_UART3_ADDR sw zero, uart_enable(t0) sync li t0, AU1000_SSI0_ADDR li t1, 0x02 sw t1, ssi_enable(t0) sync li t0, AU1000_SSI1_ADDR li t1, 0x02 sw t1, ssi_enable(t0) sync /* * Step 16) Determine cause of reset */ /* wait 10mS to debounce external signals */ li t1, MEM_1MS*101: add t1, -1 bne t1, zero, 1b nop li t0, AU1000_SYS_ADDR lw t1, sys_wakesrc(t0) /* Clear sys_wakemsk to prevent false events */ sw zero, sys_wakemsk(t0) sync /* Clear sys_wakesrc */ //sw zero, sys_wakesrc(t0) sync /* Check for Hardware Reset */ andi t2, t1, 0x01 bne zero, t2, hardwarereset /* Check for Sleep Wakeup */ andi t2, t1, 0x02 bne zero, t2, sleepwakeup nop /* Assume run-time reset */ beq zero, zero, runtimereset nop/********************************************************************/hardwarereset: /* * Step 1) Initialize SDRAM */ bal initSDRAM nop /* * Step 2) Invoke application */ beq zero, zero, alldone nop/********************************************************************/runtimereset: /* * Step 1) Initialize SDRAM */ bal initSDRAM nop /* * Step 2) Invoke application */ beq zero, zero, alldone nop/********************************************************************/sleepwakeup:#if 0 /* * Step 1) Initialize SDRAM. The SDRAM must be in self-refresh mode. */ bal wakeupSDRAM nop /* * Step 2) Invoke application */ la t0, AU1000_SYS_ADDR lw sp, sys_scratch0(t0) lw ra, sys_scratch1(t0) jr ra nop#else /* * Step 1) Initialize SDRAM */ bal initSDRAM nop /* * Step 2) Invoke application */ beq zero, zero, alldone nop#endif/********************************************************************/ /* * This routine initializes the SDRAM controller from Initial * Power-up Reset or Running Reset. */initSDRAM: /* Only perform SDRAM init if running from ROM/Flash */ addu t2, ra, zero /* preserve ra */ bal getPC nopgetPC: lui t0, 0x1F00 /* ROM/flash address? */ and t1, t0, ra addu ra, t2, zero /* restore ra */ bne t0, t1, initSDRAMdone nop /* wait 1mS before setup */ li t1, MEM_1MS1: add t1, -1 bne t1, zero, 1b nop li t0, AU1000_MEM_ADDR li t1, MEM_SDMODE0 sw t1, mem_sdmode0(t0) li t1, MEM_SDMODE1 sw t1, mem_sdmode1(t0) li t1, MEM_SDMODE2 sw t1, mem_sdmode2(t0) li t1, MEM_SDADDR0 sw t1, mem_sdaddr0(t0) li t1, MEM_SDADDR1 sw t1, mem_sdaddr1(t0) li t1, MEM_SDADDR2 sw t1, mem_sdaddr2(t0) sync li t1, MEM_SDREFCFG_D sw t1, mem_sdrefcfg(t0) sync sw zero, mem_sdprecmd(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync sw zero, mem_sdautoref(t0) sync li t1, MEM_SDREFCFG_E sw t1, mem_sdrefcfg(t0) sync li t1, MEM_SDWRMD0 sw t1, mem_sdwrmd0(t0) sync /* wait 1mS after setup */ li t1, MEM_1MS1: add t1, -1 bne t1, zero, 1b nopinitSDRAMdone: jr ra nop/********************************************************************/wakeupSDRAM: /* * With SDRAM in self refresh mode, update the * ADDR, MODE and refresh registers */ li t0, AU1000_MEM_ADDR li t1, MEM_SDMODE0 sw t1, mem_sdmode0(t0) li t1, MEM_SDMODE1 sw t1, mem_sdmode1(t0) li t1, MEM_SDMODE2 sw t1, mem_sdmode2(t0) li t1, MEM_SDADDR0 sw t1, mem_sdaddr0(t0) li t1, MEM_SDADDR1 sw t1, mem_sdaddr1(t0) li t1, MEM_SDADDR2 sw t1, mem_sdaddr2(t0) sw zero, mem_sdautoref(t0) li t1, MEM_SDREFCFG_E sw t1, mem_sdrefcfg(t0) sync jr ra nop/********************************************************************/alldone: /* * External and/or board-specific peripheral initialization */ /* Configure all GPIOs in sys_pinfunc register */ li t0, 0xb1900000 li t1, 0x2b0a0 sw t1, 0x2c(t0) // Enable inputs sw zero, 0x110(t0) // Enable outputs in primary block and set to low li t1, 0x2f0040 sw t1, 0x10c(t0) /* Backlight shiutdown is active high, Drive */ li t1, 0x00808000 sw t1, 0x108(t0) // make GPIO 22 & 21 inputs li t1, (1<<22)|(1<<21) sw t1, 0x100(t0) /* Configure Secondary GPIOs */ /* Enable GPIO[203:200] as outputs */ li t0, 0xb1700000 /* Turn on GPIO2 block */ li t1, 1 sw t1, 0x10(t0) /* Configure outputs */ li t1, 0xf sw t1, 0(t0) // SET LED2,1 to low, MODEMRESET low and CFRESET high li t1, 0x000f0001 sw t1, 0x08(t0) sync /* * Establish CLOCKing * * FREQ5: unused * FREQ4: unused * FREQ3: unused * FREQ2: USBH, USBD, IrDA * FREQ1: LCD (not setup here) * FREQ0: unused */ li t0, AU1000_SYS_ADDR li t1, (0<<22)|(1<<21)|(1<<20) sw t1, sys_freqctrl0(t0) li t1, (4<<2)|(0<<1)|(0<<0) sw t1, sys_clksrc(t0) sync /* * Prepare to invoke application main() *//********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -