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

📄 lowlevel_init.s

📁 u-boot 源代码
💻 S
字号:
/* * (C) Copyright 2006 Embedded Artists AB <www.embeddedartists.com> * * Slight modifications made to support the SMN42 board from Siemens. * 2007 Gary Jennejohn garyj@denx.de * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <config.h>#include <version.h>#include <asm/arch/hardware.h>/* some parameters for the board *//* setting up the CPU-internal memory */#define 	SRAM_START 	0x40000000#define 	SRAM_SIZE	0x00004000#define   BCFG0_VALUE 0x1000ffef#define   BCFG1_VALUE 0x10005D2F#define   BCFG2_VALUE 0x10005D2F/* * For P0.18 to set ZZ to the SRAMs to 1. Also set P0.2 (SCL) and P0.3 (SDA) * for the bit-banger I2C driver correctly. */#define   IO0_VALUE   0x4000C_TEXT_BASE:	.word	TEXT_BASEMEMMAP_ADR:	.word	MEMMAPBCFG0_ADR:	.word BCFG0_BCFG0_VALUE:	.word BCFG0_VALUEBCFG1_ADR:	.word	BCFG1_BCFG1_VALUE:	.word	BCFG1_VALUEBCFG2_ADR:	.word	BCFG2_BCFG2_VALUE:	.word	BCFG2_VALUEIO0DIR_ADR:	.word	IO0DIR_IO0DIR_VALUE:	.word	IO0_VALUEIO0SET_ADR:	.word	IO0SET_IO0SET_VALUE:	.word	IO0_VALUEPINSEL2_ADR:	.word	PINSEL2PINSEL2_MASK:	.word	0x00000000PINSEL2_VALUE:	.word	0x0F804914.extern _start.globl lowlevel_initlowlevel_init:	/* set up memory control register for bank 0 */	ldr r0, _BCFG0_VALUE	ldr r1, BCFG0_ADR	str r0, [r1]	/* set up memory control register for bank 1 */	ldr	r0, _BCFG1_VALUE	ldr	r1, BCFG1_ADR	str	r0, [r1]	/* set up memory control register for bank 2 */	ldr	r0, _BCFG2_VALUE	ldr	r1, BCFG2_ADR	str	r0, [r1]	/* set IO0DIR to make P0.2, P0.3  and P0.18 outputs */	ldr	r0, _IO0DIR_VALUE	ldr	r1, IO0DIR_ADR	str	r0, [r1]	/* set P0.18 to 1 */	ldr	r0, _IO0SET_VALUE	ldr	r1, IO0SET_ADR	str	r0, [r1]	/* set up PINSEL2 for bus-pins */	ldr	r0, PINSEL2_ADR	ldr	r1, [r0]	ldr	r2, PINSEL2_MASK	ldr	r3, PINSEL2_VALUE	and	r1, r1, r2	orr	r1, r1, r3	str	r1, [r0]	/* move vectors to beginning of SRAM */	mov	r2, #SRAM_START	mov	r0, #0 /*_start*/	ldmneia r0!, {r3-r10}	stmneia r2!, {r3-r10}	ldmneia r0, {r3-r9}	stmneia r2, {r3-r9}	/* Set-up MEMMAP register, so vectors are taken from SRAM */	ldr	r0, MEMMAP_ADR	mov	r1, #0x02	/* vectors re-mapped to static RAM */	str	r1, [r0]	/* everything is fine now */	mov	pc, lr

⌨️ 快捷键说明

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