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

📄 head.s

📁 ARM9 S3c2410的bootloader
💻 S
字号:
@ Start of executable code .global _start_start:@ Exception vector table (physical address = 0x00000000)	b	Reset	b	.	b	.	b	.	b	.	b	.	b	.	b	.@ Start VIVI headReset:	@ disable watch dog timer	mov	r1, #0x53000000	mov	r2, #0x0	str	r2, [r1]	@ disable all interrupts	mov	r1, #0x4A000000	mov	r2, #0xffffffff	str	r2, [r1, #0x08]	ldr	r2, =0x7ff	str	r2, [r1, #0x1C]		@ initialize system clocks	mov	r1, #0x4C000000	mvn	r2, #0xff000000	str	r2, [r1, #0x00]	mov	r1, #0x4C000000	mov	r2, #0x3	str	r2, [r1, #0x14]	mrc	p15, 0, r1, c1, c0, 0	@ read ctrl register 	orr	r1, r1, #0xc0000000		@ Asynchronous  	mcr	p15, 0, r1, c1, c0, 0	@ write ctrl register		@ now ,usb clock is 48Mhz	ldr     r0, =0x4C000000  @ Fin=12MHz, Fout=48MHz	ldr     r1, =0x78023 	str     r1, [r0,#0x08]  	nop 	nop 	nop 	nop 	ldr     r0, = 0x4C000000  @ Fin=12MHz, Fout=48MHz	ldr     r1, =0x78023 	str     r1, [r0,#0x08] 	@ now, CPU clock is 200 Mhz	mov	r1, #0x4C000000	ldr	r2, =0xa1031	str	r2, [r1, #0x04]	bl	memsetup	@ All LED on	mov	r1, #0x56000000	add	r1, r1, #0x50	ldr	r2,=0x55aa	str	r2, [r1, #0x0]	mov	r2, #0xff	str	r2, [r1, #0x8]	mov	r2, #0x00	str	r2, [r1, #0x4]	@ set GPIO for UART	mov	r1, #0x56000000	add	r1, r1, #0x70	ldr	r2, =0x16faaa		str	r2, [r1, #0x0]	ldr	r2, =0x7ff	str	r2, [r1, #0x8]		bl	InitUART	mov r0, #'B'	bl PrintChar	mov r0, #'O'	bl PrintChar	mov	r0, #'O'	bl PrintChar	mov	r0, #'T'	bl PrintChar	mov	r0, #' '	bl PrintChar	mov	r0, #'O'	bl PrintChar	mov	r0, #'K'	bl PrintChar	mov r0, #'!'	bl PrintChar	mov	r0, #'\r'	bl PrintChar	mov r0, #'\n'	bl PrintChar	die:	b diememsetup:	@ set memory control registers	mov	r1, #0x48000000	adrl	r2, mem_cfg_val	add	r3, r1, #521:		ldr	r4, [r2], #4	str	r4, [r1], #4	cmp	r1, r3	bne	1b	mov	pc, lr@ Initialize UART@ r0 = number of UART portInitUART:		mov	r1, #0x50000000	mov	r2, #0x0	str	r2, [r1, #0x08]	str	r2, [r1, #0x0C]	mov	r2, #0x3	str	r2, [r1, #0x00]	ldr	r2, =0x245	str	r2, [r1, #0x04]@ #define UART_BRD ((UART_PCLK  / (UART_BAUD_RATE * 16)) - 1)	mov	r2, #((50700000 / (115200 * 16)) - 1)	str	r2, [r1, #0x28]	mov	r3, #1001:		sub	r3, r3, #0x1	teq	r3, #0x0	bne	1b		mov pc, lr@ PrintChar : prints the character in R0@   r0 contains the character@   r1 contains base of serial port@   writes ro with XXX, modifies r0,r1,r2@   TODO : write ro with XXX reg to error handlingPrintChar:	mov	r1, #0x500000001:	ldr	r2, [r1, #0x10]	tst	r2, #(1 << 2)	beq	1b	str	r0, [r1, #0x20]	mov pc, lr	@@ Data Area@@ Memory configuration values.align 4mem_cfg_val:	.long	0x2211d110	.long	0x00000700	.long	0x00000700	.long	0x00000700	.long	0x00001f4c	.long	0x00000700	.long	0x00000700	.long	0x00018005	.long	0x00018005	.long	0x008e0459	.long	0xb2	.long	0x30	.long	0x30

⌨️ 快捷键说明

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