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

📄 platform.s

📁 eCos操作系统源码
💻 S
📖 第 1 页 / 共 2 页
字号:
	nop	b	8f	li	v1, 00:	ori	s5, HAL_GALILEO_SDRAM_BANK0_PARITY	li	v1, 18:	#	# Setup number of device banks	# Only support 2 or 4 banks	#	li	t0, 2	beq	s2, t0, 8f	nop	li	t0, 4	beq	s2, t0, 0f	nop	b	error	nop0:	ori	s5, HAL_GALILEO_SDRAM_NUM_BANKS_48:	#	# Now actually store the bank config register	#	sw	s5, HAL_GALILEO_SDRAM_BANK0_OFFSET(s7)	sw	s5, HAL_GALILEO_SDRAM_BANK2_OFFSET(s7)	#	# Setup the SDRAM configuration register	# All other fields are zero, and the proper value is masked	# in when they are known	#	li	s5, HAL_GALILEO_SDRAM_DUPLICATE_BANK_ADDR | HAL_GALILEO_SDRAM_BANK_INTERLEAVE_DIS	#	# Setup the Refresh Rate	#	READ_SPD_VALUE HAL_SPD_GET_REFRESH_RATE, 0x7f, v0, NO_ERROR_CHECK	li	t0, HAL_SPD_REFRESH_RATE_125	beq	t0, v0, 8f	li	t0, HAL_SPD_REFRESH_COUNTER_125	li	t0, HAL_SPD_REFRESH_RATE_62_5	beq	t0, v0, 8f	li	t0, HAL_SPD_REFRESH_COUNTER_62_5	li	t0, HAL_SPD_REFRESH_RATE_31_3	beq	t0, v0, 8f	li	t0, HAL_SPD_REFRESH_COUNTER_31_3	li	t0, HAL_SPD_REFRESH_RATE_15_625	beq	t0, v0, 8f	li	t0, HAL_SPD_REFRESH_COUNTER_15_625	li	t0, HAL_SPD_REFRESH_RATE_7_8	beq	t0, v0, 8f	li	t0, HAL_SPD_REFRESH_COUNTER_7_8	# Unknown: assume 3.9 microseconds	li	t0, HAL_SPD_REFRESH_COUNTER_3_98:	or	s5, t0	#	# Setup RAM_WIDTH	#	beqz	v1, 8f	nop	READ_SPD_VALUE HAL_SPD_GET_ERROR_CHECK_WIDTH, 0x7f, v0, NO_ERROR_CHECK	beq	v0, zero, 8f	nop	ori	s5, HAL_GALILEO_SDRAM_CFG_RAM_WIDTH8:	#	# Store the SDRAM configuration register	#	sw	s5, HAL_GALILEO_SDRAM_CONFIG_OFFSET(s7)	#	# Reset SAA9730 now that we are done with the I2C unit.	# This allows the generic PCI library to start with a clean	# slate of devices on the PCI bus.	#	li	a0, CYGARC_UNCACHED_ADDRESS(HAL_GALILEO_PCI0_MEM0_BASE)	li	t0, HAL_SAA9730_SYSRESET_ALL	sw	t0, HAL_SAA9730_SYSRESET_OFFSET(a0)		#	# Change the Galileo Base address to HAL_ATLAS_CONTROLLER_BASE	#	li	t0, HAL_ATLAS_CONTROLLER_BASE_ISD_CONFIG	sw	t0, HAL_GALILEO_INT_SPACE_DECODE_OFFSET(s7)	li	s7, CYGARC_UNCACHED_ADDRESS(HAL_ATLAS_CONTROLLER_BASE)	#	# Setup SDRAM Bank 0 Address Decoding	#	li	a0, CYGARC_PHYSICAL_ADDRESS(HAL_ATLAS_RAM_BASE)		 # Physical bottom of Bank 0	add	a1, s0, a0	subu	a1, 1							 # Physical top of Bank 0	srl	t0, a0, HAL_GALILEO_CPU_DECODE_SHIFT			 # Setup SCS[1:0]	srl	t1, a1, HAL_GALILEO_CPU_DECODE_SHIFT			 #   First level decoding	sw	t0, HAL_GALILEO_SCS10_LD_OFFSET(s7)			 #   (ie Processor Decode Region)	sw	t1, HAL_GALILEO_SCS10_HD_OFFSET(s7)			 #	srl	t0, a0, HAL_GALILEO_DEV_DECODE_SHIFT			 # Setup SCS0	srl	t1, a1, HAL_GALILEO_DEV_DECODE_SHIFT			 #   Second level decoding	sw	t0, HAL_GALILEO_SCS0_LD_OFFSET(s7)			 #   (ie Device Sub-decode Region)	sw	t1, HAL_GALILEO_SCS0_HD_OFFSET(s7)			 #	#	# Setup SDRAM Bank 1 Address Decoding	#	add	a0, s0, CYGARC_PHYSICAL_ADDRESS(HAL_ATLAS_RAM_BASE)	 # Physical bottom of Bank 1	add	a1, a0, s1	subu	a1, 1							 # Physical top of Bank 1	srl	t0, a0, HAL_GALILEO_CPU_DECODE_SHIFT			 # Setup SCS[3:2]	srl	t1, a1, HAL_GALILEO_CPU_DECODE_SHIFT			 #   First level decoding	sw	t0, HAL_GALILEO_SCS32_LD_OFFSET(s7)			 #   (ie Processor Decode Region)	sw	t1, HAL_GALILEO_SCS32_HD_OFFSET(s7)			 #	srl	t0, a0, HAL_GALILEO_DEV_DECODE_SHIFT			 # Setup SCS2	srl	t1, a1, HAL_GALILEO_DEV_DECODE_SHIFT			 #   Second level decoding	sw	t0, HAL_GALILEO_SCS2_LD_OFFSET(s7)			 #   (ie Device Sub-decode Region)	sw	t1, HAL_GALILEO_SCS2_HD_OFFSET(s7)			 #	#	# Setup PCI windows	#	li	a0, CYGARC_PHYSICAL_ADDRESS(HAL_ATLAS_PCI_MEM0_BASE)	add	a1, a0, HAL_ATLAS_PCI_MEM0_SIZE	subu	a1, 1							 # Physical top of Bank 1	srl	t0, a0, HAL_GALILEO_CPU_DECODE_SHIFT	srl	t1, a1, HAL_GALILEO_CPU_DECODE_SHIFT	sw	t0, HAL_GALILEO_PCIMEM0_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_PCIMEM0_HD_OFFSET(s7)		li	a0, CYGARC_PHYSICAL_ADDRESS(HAL_ATLAS_PCI_MEM1_BASE)	add	a1, a0, HAL_ATLAS_PCI_MEM1_SIZE	subu	a1, 1							 # Physical top of Bank 1	srl	t0, a0, HAL_GALILEO_CPU_DECODE_SHIFT	srl	t1, a1, HAL_GALILEO_CPU_DECODE_SHIFT	sw	t0, HAL_GALILEO_PCIMEM1_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_PCIMEM1_HD_OFFSET(s7)	li	a0, CYGARC_PHYSICAL_ADDRESS(HAL_ATLAS_PCI_IO_BASE)	add	a1, a0, HAL_ATLAS_PCI_IO_SIZE	subu	a1, 1							 # Physical top of Bank 1	srl	t0, a0, HAL_GALILEO_CPU_DECODE_SHIFT	srl	t1, a1, HAL_GALILEO_CPU_DECODE_SHIFT	sw	t0, HAL_GALILEO_PCIIO_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_PCIIO_HD_OFFSET(s7)	#	# Setup FLASH Address Decoding	#	li	a0, CYGARC_PHYSICAL_ADDRESS(HAL_ATLAS_FLASH_BASE)	 # Physical bottom of Flash Bank	add	a1, a0, HAL_ATLAS_FLASH_SIZE	subu	a1, 1							 # Physical top of Flash Bank	srl	t0, a0, HAL_GALILEO_CPU_DECODE_SHIFT			 # Setup CS[2:0]	srl	t1, a1, HAL_GALILEO_CPU_DECODE_SHIFT			 #   First level decoding	sw	t0, HAL_GALILEO_CS20_LD_OFFSET(s7)			 #   (ie Processor Decode Region)	sw	t1, HAL_GALILEO_CS20_HD_OFFSET(s7)			 #	srl	t0, a0, HAL_GALILEO_DEV_DECODE_SHIFT			 # Setup CS0	srl	t1, a1, HAL_GALILEO_DEV_DECODE_SHIFT			 #   Second level decoding	sw	t0, HAL_GALILEO_CS0_LD_OFFSET(s7)			 #   (ie Device Sub-decode Region)	sw	t1, HAL_GALILEO_CS0_HD_OFFSET(s7)			 #	#	#  Now disable all unused decodes	#  (SCS1, SCS3, PCI1xx, CS1, CS2)	#	li	t0, 0xffff	move	t1, zero	sw	t0, HAL_GALILEO_SCS1_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_SCS1_HD_OFFSET(s7)	sw	t0, HAL_GALILEO_SCS3_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_SCS3_HD_OFFSET(s7)	sw	t0, HAL_GALILEO_PCI1IO_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_PCI1IO_HD_OFFSET(s7)	sw	t0, HAL_GALILEO_PCI1MEM0_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_PCI1MEM0_HD_OFFSET(s7)	sw	t0, HAL_GALILEO_PCI1MEM1_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_PCI1MEM1_HD_OFFSET(s7)	sw	t0, HAL_GALILEO_CS1_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_CS1_HD_OFFSET(s7)	sw	t0, HAL_GALILEO_CS2_LD_OFFSET(s7)	sw	t1, HAL_GALILEO_CS2_HD_OFFSET(s7)noerror:	move	v0, zero	add	v1, s0, s1	move	ra, s8	jr	ra	noperror:	li	v0, HAL_ATLAS_MEMERROR	move	ra, s8	jr	ra	nopFUNC_END(hal_atlas_init_sdram)#### Read a value from the SDRAM SPD device.#### Parameters:	 a0 = subaddress## Returns:	 v0 = SPD value read##FUNC_START(read_spd_value)	#	# Setup a base address register	#	li	a1, CYGARC_UNCACHED_ADDRESS(HAL_GALILEO_PCI0_MEM0_BASE)	#	# Write the I2C command	#	sll	a0, 16	li	t0, (HAL_SAA9730_I2CTFR_ATTR1_CONT | \		     ((0xa0 << 24) | HAL_SAA9730_I2CTFR_ATTR2_START) | \		     ((0xa1 << 8) | HAL_SAA9730_I2CTFR_ATTR0_START))	or	a0, t0	sw	a0, HAL_SAA9730_I2CTFR_OFFSET(a1)1:	lw	t0, HAL_SAA9730_I2CTFR_OFFSET(a1)	and	t0, 0x1	bnez	t0, 1b	nop	#	# Read the SPD value	#	li	a0, HAL_SAA9730_I2CTFR_ATTR2_STOP	sw	a0, HAL_SAA9730_I2CTFR_OFFSET(a1)1:	lw	t0, HAL_SAA9730_I2CTFR_OFFSET(a1)	and	t0, 0x1	bnez	t0, 1b	nop	#	# Setup the return value.	#	lw	v0, HAL_SAA9730_I2CTFR_OFFSET(a1)	srl	v0, 24	jr	ra	nopFUNC_END(read_spd_value)#endif /* defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM) */##-----------------------------------------------------------------------------# Interrupt vector tables.# These tables contain the isr, data and object pointers used to deliver# interrupts to user code.	.extern hal_default_isr		.data	.globl	hal_interrupt_handlershal_interrupt_handlers:	.rept	25	.long	hal_default_isr	.endr	.globl	hal_interrupt_datahal_interrupt_data:	.rept	25	.long	0	.endr	.globl	hal_interrupt_objectshal_interrupt_objects:	.rept	25	.long	0	.endr	##-----------------------------------------------------------------------------## end of platform.S

⌨️ 快捷键说明

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