⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reset_hyd1100.s

📁 RMI的处理器au1200系列所用的BOOTLOAD,包括SD卡启动USB启动硬盘启动网络启动,并初始化硬件的所有参数,支持内核调试.
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -