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

📄 boot.s

📁 Hermit-at-1.1.3,一款bootloader
💻 S
字号:
/* * boot.S: assembly language bootstrap * * Copyright (c) 2006 Atmark Techno, Inc. */#include "memregions.h"#include <ns9750/ns9750.h>	.section .flash.boot	.global _start_flash_start_flash:	orr	pc, pc, #0x50000000	nop	mov	r0, #0x0		/* MMU mandatory */	mcr	p15, 0, r0, c1, c0, 0	/* MMU init */	mov	r0, #0	mcr	p15, 0, r0, c7, c7, 0	/* flush v3/v4 cache */	mcr	p15, 0, r0, c8, c7, 0	/* flush v4 TLB */	mov	r3, #0xa0000000	add	r0, r3, #0x700000	/* mem module */	mov	r2, #0x1	str	r2, [r0, #NS_MEM_CONTROL]	mov	r2, #0x6	str	r2, [r0, #NS_MEM_DYNAMIC_REFRESH]	mov	r2, #0x1	str	r2, [r0, #NS_MEM_DYNAMIC_READ_CONFIG]	str	r2, [r0, #NS_MEM_DYNAMIC_TRP]	mov	r2, #0x4	str	r2, [r0, #NS_MEM_DYNAMIC_TRAS]	mov	r2, #0x1	str	r2, [r0, #NS_MEM_DYNAMIC_TAPR]	mov	r2, #0x5	str	r2, [r0, #NS_MEM_DYNAMIC_TDAL]	mov	r2, #0x1	str	r2, [r0, #NS_MEM_DYNAMIC_TWR]	mov	r2, #0x6	str	r2, [r0, #NS_MEM_DYNAMIC_TRC]	str	r2, [r0, #NS_MEM_DYNAMIC_TRFC]	mov	r2, #0x1	str	r2, [r0, #NS_MEM_DYNAMIC_TRRD]	str	r2, [r0, #NS_MEM_DYNAMIC_TMRD]	mov	r1, #0x4000	orr	r2, r1, #0x680	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_0]	mov	r4, #0x200	orr	r4, r4, #0x03	str	r4, [r0, #NS_MEM_DYNAMIC_RAS_CAS_0]	orr	r2, r1, #0x280	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_1]	str	r4, [r0, #NS_MEM_DYNAMIC_RAS_CAS_1]	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_2]	str	r4, [r0, #NS_MEM_DYNAMIC_RAS_CAS_2]	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_3]	str	r4, [r0, #NS_MEM_DYNAMIC_RAS_CAS_3]	mov	r2, #0x100	add	r2, r2, #0x03	str	r2, [r0, #NS_MEM_DYNAMIC_CONTROL]	mov	r2, #0x1	str	r2, [r0, #NS_MEM_DYNAMIC_REFRESH]	mov	r2, #0xa	str	r2, [r0, #NS_MEM_STATIC_EXTENDED_WAIT]	mov	r1, #0x50_sdram_settle:	subs	r1, r1, #1	bne	_sdram_settle	mov	r2, #0x30	str	r2, [r0, #NS_MEM_DYNAMIC_REFRESH]	mov	r2, #0x83	str	r2, [r0, #NS_MEM_DYNAMIC_CONTROL]	mov	r2, #0x44000	ldr	r2, [r2]	mov	r2, #0x3	str	r2, [r0, #NS_MEM_DYNAMIC_CONTROL]	mov	r1, #0x84000	orr	r2, r1, #0x680	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_0]	orr	r2, r1, #0x280	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_1]	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_2]	str	r2, [r0, #NS_MEM_DYNAMIC_CONFIG_3]	mov	r2, #0x81	str	r2, [r0, #NS_MEM_STATIC_CONFIG_1]	orr	r2, r2, #0x100	str	r2, [r0, #NS_MEM_STATIC_CONFIG_2]	mov	r2, #0x80	str	r2, [r0, #NS_MEM_STATIC_CONFIG_3]	mov	r2, #0x0	str	r2, [r0, #NS_MEM_STATIC_WAIT_WEN_1]	str	r2, [r0, #NS_MEM_STATIC_WAIT_WEN_2]	str	r2, [r0, #NS_MEM_STATIC_WAIT_WEN_3]	str	r2, [r0, #NS_MEM_STATIC_WAIT_OEN_1]	str	r2, [r0, #NS_MEM_STATIC_WAIT_OEN_2]	str	r2, [r0, #NS_MEM_STATIC_WAIT_OEN_3]	mov	r2, #0x0a	str	r2, [r0, #NS_MEM_STATIC_WAIT_RD_1]	mov	r2, #0x02	str	r2, [r0, #NS_MEM_STATIC_WAIT_RD_2]	mov	r1, #0x1f	str	r1, [r0, #NS_MEM_STATIC_WAIT_RD_3]	str	r1, [r0, #NS_MEM_STATIC_WAIT_PAGE_1]	str	r1, [r0, #NS_MEM_STATIC_WAIT_PAGE_2]	str	r1, [r0, #NS_MEM_STATIC_WAIT_PAGE_3]	mov	r2, #0x0a	str	r2, [r0, #NS_MEM_STATIC_WAIT_WR_1]	mov	r2, #0x02	str	r2, [r0, #NS_MEM_STATIC_WAIT_WR_2]	str	r1, [r0, #NS_MEM_STATIC_WAIT_WR_3]	mov	r2, #0x0F	str	r2, [r0, #NS_MEM_STATIC_WAIT_TURN_1]	str	r2, [r0, #NS_MEM_STATIC_WAIT_TURN_2]	str	r1, [r0, #NS_MEM_STATIC_WAIT_TURN_3]	add	r0, r3, #0x900000	/* sys module */	mov	r2, #0xffffffff	str	r2, [r0, #NS_SCM_AHB_BUS_ARBMON_TIMEOUT]	mov	r2, #0x5	str	r2, [r0, #NS_SCM_AHB_ERR_MON_CONFIG]	mov	r2, #0x00000000	add	r1, r0, #NS_SCM_MEM_CS4_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x10000000	add	r1, r0, #NS_SCM_MEM_CS5_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x20000000	add	r1, r0, #NS_SCM_MEM_CS6_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x30000000	add	r1, r0, #NS_SCM_MEM_CS7_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x40000000	add	r1, r0, #NS_SCM_MEM_CS0_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x50000000	add	r1, r0, #NS_SCM_MEM_CS1_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x60000000	add	r1, r0, #NS_SCM_MEM_CS2_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0x70000000	add	r1, r0, #NS_SCM_MEM_CS3_DYNAMIC_BASE	str	r2, [r1]	mov	r2, #0xfc000000	add	r1, r0, #NS_SCM_MEM_CS4_DYNAMIC_MASK	str	r2, [r1]	mov	r2, #0xf0000000	add	r1, r0, #NS_SCM_MEM_CS5_DYNAMIC_MASK	str	r2, [r1]	add	r1, r0, #NS_SCM_MEM_CS6_DYNAMIC_MASK	str	r2, [r1]	add	r1, r0, #NS_SCM_MEM_CS7_DYNAMIC_MASK	str	r2, [r1]	add	r1, r0, #NS_SCM_MEM_CS0_DYNAMIC_MASK	str	r2, [r1]	mov	r2, #0xff000000	orr	r2, r2, #0xc00000	add	r1, r0, #NS_SCM_MEM_CS1_DYNAMIC_MASK	str	r2, [r1]	add	r1, r0, #NS_SCM_MEM_CS2_DYNAMIC_MASK	str	r2, [r1]	mov	r2, #0xf0000000	add	r1, r0, #NS_SCM_MEM_CS3_DYNAMIC_MASK	str	r2, [r1]	mov	r2, #0x2	str	r2, [r0, #NS_SCM_EXTINT0_CTRL]	mov	r1, #0x80000000	orr	r1, r1, #0x8000	orr	r2, r1, #0x810000	orr	r2, r2, #0x82	str	r2, [r0, #NS_SCM_BRC0]	orr	r2, r1, #0x840000	orr	r2, r2, #0x85	str	r2, [r0, #NS_SCM_BRC1]	orr	r2, r1, #0x860000	bic	r2, r2, #0xff00	str	r2, [r0, #NS_SCM_BRC2]	mov	r2, #0x00000000	str	r2, [r0, #NS_SCM_BRC3]	mov	r2, #0x1	str	r2, [r0, #NS_SCM_AHB_GEN_CONFIG]	mov	r3, #0x90000000	add	r0, r3, #0x600000	/* bbu module */	mov	r1, #0x0	str	r1, [r0, #NS_BBU_MASTER_RESET]	mov	r1, #0x080000	orr	r1, r1, #0x0800	orr	r1, r1, #0x08	str	r1, [r0, #NS_BBU_GPIO_CONFIG_1]	mov	r1, #0x33000000	orr	r1, r1, #0x1b0000	orr	r1, r1, #0x1b00	orr	r1, r1, #0x08	str	r1, [r0, #NS_BBU_GPIO_CONFIG_2]	mov	r1, #0x99000000	orr	r1, r1, #0x990000	orr	r1, r1, #0x9900	orr	r2, r1, #0x83	str	r2, [r0, #NS_BBU_GPIO_CONFIG_3]	orr	r1, r1, #0x99	str	r1, [r0, #NS_BBU_GPIO_CONFIG_4]	mov	r1, #0xaa000000	orr	r1, r1, #0xaa0000	orr	r1, r1, #0xaa00	orr	r1, r1, #0xaa	str	r1, [r0, #NS_BBU_GPIO_CONFIG_5]	mov	r1, #0x33000000	orr	r1, r1, #0x330000	orr	r1, r1, #0x3300	orr	r1, r1, #0xaa	str	r1, [r0, #NS_BBU_GPIO_CONFIG_6]	mov	r1, #0x33	str	r1, [r0, #NS_BBU_GPIO_CONFIG_7]	mov	r1, #0	str	r1, [r0, #NS_BBU_USB_CONFIG]	add	r0, r3, #0x200000	/* ser module */	mov	r1, #0x03000000	str	r1, [r0, #NS_SER_CHA_CTRL_A]	str	r1, [r0, #NS_SER_CHB_CTRL_A]	mov	r1, #0x08000000	str	r1, [r0, #NS_SER_CHA_CTRL_B]	str	r1, [r0, #NS_SER_CHB_CTRL_B]	mov	r2, #0xa0000000	add	r2, r2, #0x900000	/* sys module */	ldr	r1, [r2, #NS_SCM_PLL_CONFIG]	tst	r1, #0x02000000	moveq	r1, #0xc0000000	addeq	r1, r1, #0x140000	addeq	r1, r1, #0x07	movne	r1, #0x81000000	addne	r1, r1, #0x19	str	r1, [r0, #NS_SER_CHA_BITRATE]	str	r1, [r0, #NS_SER_CHB_BITRATE]	mov	r1, #0x80000000	str	r1, [r0, #NS_SER_CHA_RX_BUF_TMR]	str	r1, [r0, #NS_SER_CHB_RX_BUF_TMR]	mov	r1, #0x83000000	str	r1, [r0, #NS_SER_CHA_CTRL_A]	str	r1, [r0, #NS_SER_CHB_CTRL_A]	mov	sp, #STACK_START		/* init stack pointer */	bl	entry			/* see entry.c */1:	b	1b	.section .ram.boot	.global _start_ram_start_ram:	bl	hmain2:	b	2b

⌨️ 快捷键说明

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