📄 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*10
1: 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
nop
getPC:
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_1MS
1: 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_1MS
1: add t1, -1
bne t1, zero, 1b
nop
initSDRAMdone:
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 + -