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

📄 mbx.s

📁 eCos1.31版
💻 S
📖 第 1 页 / 共 2 页
字号:
	 *  TBS   (6)     = 1	 *  RTDIV (7)     = 0	 *  RTSEL (8)     = 0	 *  CRQEN (9)     = 0	 *  PRQEN (10)    = 0	 *  EBDF  (13:14) = 0	 *  DFSYNC(17:18) = 0	 *  DFBRG (19:20) = 0	 *  DFNL  (21:23) = 0	 *  DFNH  (24:26) = 0	 */	lwi	r3,0x02000000	stw	r3,SCCR(r4)		/*	 *  The following sets up a 40MHz CPU clock.	 *  I've seen 2 variations of MBX boards. One	 *  uses a direct feed (1:1) 40MHz clock on	 *  EXTCLK inputs. The other uses a 32KHz	 *  oscillator on the OSCM inputs.	 */	lwz	r3,PLPRCR(r4)	rlwinm	r3,r3,12,20,31	cmpwi	r3,0	beq     1f		/*	 *  PLL, LOW POWER, AND RESET CONTROL REGISTER	 *	 *  MF    (0:11)  = depends on source clock	 *  SPLSS (16)    = 1	 *  TEXPS (17)    = 1	 *  TMIST (19)    = 1	 *  CSRC  (21)    = 0	 *  LPM   (22:23) = 0	 *  CSR   (24)    = 0	 *  LOLRE (25)    = 0	 *  FIOPD (26)    = 0	 */	/*  MF    (0:11)  = 0x4c4 = 1220 = (40MHz/32.768KHz) */#ifdef __50MHZ	lwi	r3,0x5f50d000#else	lwi	r3,0x4c40d000#endif	b	2f    1:	/*  MF    (0:11)  = 0x000 = 1 = (1:1) */	lwi	r3,0x0000d000    2:	stw	r3,PLPRCR(r4)	# mask interrupt sources in the SIU	lis	r2,0	lwi	r3,CYGARC_REG_IMM_SIMASK	stw	r2,0(r3)	# set the decrementer to maxint	lwi	r2,0	not	r2,r2	mtdec	r2		# and enable the timebase and decrementer to make sure	li	r2,1				# TBEnable and not TBFreeze	lwi	r3,CYGARC_REG_IMM_TBSCR	sth	r2,0(r3)	LED( 8 ) # turn red led off#ifdef CYG_HAL_STARTUP_ROM	# move return address to where the ROM is	mflr	r3	andi.	r3,r3,0xffff	oris	r3,r3,0xfe00	mtlr	r3#endif	blrFUNC_END( hal_hardware_init )#ifdef CYGPRI_DO_PROGRAM_UPMS# -------------------------------------------------------------------------# this table initializes the User Programmable Machine (UPM) nastiness# in the QUICC to control DRAM timing.__upmtbl_start:#ifdef __25MHZ	/* UPM contents for 25MHz clk. DRAM: EDO,4K,60ns */		/* Single read. (offset 0 in upm RAM) */        .long	0xcfffe004, 0x0fffe404, 0x08af2c04, 0x03af2c08        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst read. (offset 8 in upm RAM) */        .long	0xcfffe004, 0x0fffe404, 0x08af2c04, 0x03af2c08        .long	0x08af2c04, 0x03af2c08, 0x08af2c04, 0x03af2c08        .long	0x08af2c04, 0x03af2c08, 0xffffec07, 0xffffec07        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Single write. (offset 18 in upm RAM) */        .long	0xcfffe004, 0x0fffa404, 0x08ff2c00, 0x33ff6c0f        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst write. (offset 20 in upm RAM) */        .long	0xcfffe004, 0x0fffa404, 0x08ff2c00, 0x03ff2c0c        .long	0x08ff2c00, 0x03ff2c0c, 0x08ff2c00, 0x03ff2c0c        .long	0x08ff2c00, 0x33ff6c0f, 0xffffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Refresh (offset 30 in upm RAM) */        .long	0xc0ffec04, 0x07ffec04, 0x3fffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07		/* Exception. (offset 3c in upm RAM) */	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07#endif#ifdef __33MHZ	/* UPM contents for 33MHz clk. DRAM: EDO,4K,60ns */		/* Single read. (offset 0 in upm RAM) */        .long	0xcfffe004, 0x0fffe404, 0x08af2c04, 0x03af2c08        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst read. (offset 8 in upm RAM) */        .long	0xcfffe004, 0x0fffe404, 0x08af2c04, 0x03af2c08        .long	0x08af2c04, 0x03af2c08, 0x08af2c04, 0x03af2c08        .long	0x08af2c04, 0x03af2c08, 0xffffec07, 0xffffec07        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Single write. (offset 18 in upm RAM) */        .long	0xcfffe004, 0x0fff2404, 0x08ff2c00, 0x33ff6c07        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst write. (offset 20 in upm RAM) */        .long	0xcfffe004, 0x0fff2404, 0x08ff2c00, 0x03ff2c0c        .long	0x08ff2c00, 0x03ff2c0c, 0x08ff2c00, 0x03ff2c0c        .long	0x08ff2c00, 0x33ff6c07, 0xffffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Refresh (offset 30 in upm RAM) */        .long	0xc0ffec04, 0x03ffec04, 0x1fffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07		/* Exception. (offset 3c in upm RAM) */	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07#endif#ifdef CYGPRI_USE_OLD_UPM_TABLES	// BUT new tables received from motorola are further down	// And I just discovered a good reason for using the NEW TABLES:	// with the old tables, the cache zero-a-line command does not	// work.  It only zeros the first 12 bytes of the line, not all 16.	// This may be related to having the cache set up write-through, as	// seems necessary to have it work on this platform.#ifdef __40MHZ	/* UPM contents for 40MHz clk. DRAM: EDO,4K,60ns */		/* Single read. (offset 0 in upm RAM) */        .long	0xefffe004, 0x0fffe004, 0x0eefac04, 0x00af2c04        .long	0x03af2c08, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst read. (offset 8 in upm RAM) */        .long	0xefffe004, 0x0fffe004, 0x0eefac04, 0x00af2c04        .long	0x03af2c08, 0x0caf2c04, 0x00af2c04, 0x03af2c08        .long	0x0caf2c04, 0x00af2c04, 0x03af2c08, 0x0caf2c04        .long	0x00af2c04, 0x03af2c08, 0xffffec07, 0xffffec07	/* Single write. (offset 18 in upm RAM) */        .long	0xefffe004, 0x0fffa004, 0x0eff2c04, 0x00ff2c00        .long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst write. (offset 20 in upm RAM) */        .long	0xefffe004, 0x0fffa004, 0x0eff2c04, 0x00ff2c00        .long	0x0fff2c0c, 0x0cff2c00, 0x03ff2c0c, 0x0cff2c00        .long	0x03ff2c0c, 0x0cff2c00, 0x33ff6c07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	/* Refresh (offset 30 in upm RAM) */        .long	0xf0ffec04, 0x00ffec04, 0x0fffec04, 0x0fffec04	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07		/* Exception. (offset 3c in upm RAM) */	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07#endif#ifdef __50MHZ	/* UPM contents for 50MHZ clk. DRAM: EDO,4K,60ns */		/* Single read. (offset 0 in upm RAM) */	.long	0xffffe004, 0x0fffe004, 0x0fffe404, 0x0cafac04	.long	0x00af2c04, 0x0faf2c08, 0xffffec07, 0xffffec07	/* Burst read. (offset 8 in upm RAM) */	.long	0xffffe004, 0x0fffe004, 0x0fffe404, 0x0cafac04	.long	0x00af2c04, 0x0faf2c08, 0x0caf2c04, 0x00af2c04	.long	0x0faf2c08, 0x0caf2c04, 0x00af2c04, 0x0faf2c08	.long	0x0caf2c04, 0x00af2c04, 0x0faf2c08, 0xffffec07	/* Single write. (offset 18 in upm RAM) */	.long	0xffffe004, 0x0fffe004, 0x0fffa404, 0x0cff2c04	.long	0x00ff2c00, 0xffffec07, 0xffffec07, 0xffffec07	/* Burst write. (offset 20 in upm RAM) */	.long	0xffffe004, 0x0fffe004, 0x0fffa404, 0x0cff2c04	.long	0x00ff2c00, 0x0fff2c08, 0x0cff2c04, 0x00ff2c00	.long	0x0fff2c00, 0x0cff2c04, 0x00ff2c00, 0x0fff2c08	.long	0x0cff2c04, 0x00ff2c00, 0xffffec07, 0xffffec07	/* Refresh (offset 30 in upm RAM) */	.long	0xf0ffec04, 0xc0ffec04, 0x00ffec04, 0x0fffec04	.long	0x1fffec07, 0xffffec07, 0xffffec07, 0xffffec07	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07			/* Exception. (offset 3c in upm RAM) */	.long	0xffffec07, 0xffffec07, 0xffffec07, 0xffffec07#endif#else // !CYGPRI_USE_OLD_UPM_TABLES: use the NEW TABLES	// for RAM startup or ROM application when NOT making a stub rom,	// ie. CYGSEM_HAL_ROM_MONITOR not defined.#ifdef __40MHZ	/* UPM contents for 40MHz clk. DRAM: EDO,4K,60ns */	.long	0xcfafc004, 0x0fafc404, 0x0caf0c04, 0x30af0c00	.long	0xf1bf4805, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xcfafc004, 0x0fafc404, 0x0caf0c04, 0x03af0c08	.long	0x0caf0c04, 0x03af0c08, 0x0caf0c04, 0x03af0c08	.long	0x0caf0c04, 0x30af0c00, 0xf3bf4805, 0xffffc005	.long	0xffffc005, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xcfff0004, 0x0fff0404, 0x0cff0c00, 0x33ff4804	.long	0xffffc005, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xcfff0004, 0x0fff0404, 0x0cff0c00, 0x03ff0c0c	.long	0x0cff0c00, 0x03ff0c0c, 0x0cff0c00, 0x03ff0c0c	.long	0x0cff0c00, 0x33ff4804, 0xffffc005, 0xffffc005	.long	0xffffc005, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xfcffc004, 0xc0ffc004, 0x01ffc004, 0x0fffc004	.long	0x3fffc004, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xffffc005, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xffffc007, 0xffffc007, 0xffffc007, 0xffffc007#endif	#ifdef __50MHZ	/* UPM contents for 50MHZ clk. DRAM: EDO,4K,60ns */		.long	0xcfafc004, 0x0fafc404, 0x0caf8c04, 0x10af0c04	.long	0xf0af0c00, 0xf3bf4805, 0xffffc005, 0xffffc005	.long	0xcfafc004, 0x0fafc404, 0x0caf8c04, 0x00af0c04	.long	0x07af0c08, 0x0caf0c04, 0x01af0c04, 0x0faf0c08	.long	0x0caf0c04, 0x01af0c04, 0x0faf0c08, 0x0caf0c04	.long	0x10af0c04, 0xf0afc000, 0xf3bf4805, 0xffffc005	.long	0xcfff0004, 0x0fff0404, 0x0cff0c00, 0x13ff4804	.long	0xffffc004, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xcfff0004, 0x0fff0404, 0x0cff0c00, 0x03ff0c0c	.long	0x0cff0c00, 0x03ff0c0c, 0x0cff0c00, 0x03ff0c0c	.long	0x0cff0c00, 0x13ff4804, 0xffffc004, 0xffffc005	.long	0xffffc005, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xfcffc004, 0xc0ffc004, 0x01ffc004, 0x0fffc004	.long	0x1fffc004, 0xffffc004, 0xffffc005, 0xffffc005	.long	0xffffc005, 0xffffc005, 0xffffc005, 0xffffc005	.long	0xffffc007, 0xffffc007, 0xffffc007, 0xffffc007#endif#endif	// OLD/NEW TABLES == CYGPRI_USE_OLD_UPM_TABLES or not.	// depending on CYGSEM_HAL_ROM_MONITOR and whether RAM	// start re-initializes.	__upmtbl_end:#endif // CYGPRI_DO_PROGRAM_UPMS	FUNC_START(hal_mbx_set_led)	andi.	r3,r3,0x0e	lwi	r4,0xfa100001	stb	r3,0(r4)	blrFUNC_END(hal_mbx_set_led)	FUNC_START(hal_mbx_flash_led)	lwi	r4,0xfa100001    1:		li	r5,10	stb	r5,0(r4)		lis	r5,10	mtctr   r5    2:		bdnz	2b	li	r5,12	stb	r5,0(r4)		lis	r5,10	mtctr   r5    3:		bdnz	3b		subi	r3,r3,1	cmpwi	r3,0	bge	1b	li	r5,6	stb	r5,0(r4)	lis	r5,20	mtctr   r5    4:		bdnz	4b	blrFUNC_END(hal_mbx_flash_led)#------------------------------------------------------------------------------# end of mbx.S

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -