亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rominit.s

?? VxWorks BSP for AT91RM92
?? S
?? 第 1 頁 / 共 2 頁
字號:
/* romInit.s - ARM AT91RM9200 ROM initialization module */

/* Copyright 2002-2004 Wind River Systems, Inc. */

/*
modification history
--------------------
01a,09sep04,pdr  based on templateARM.
*/

/*
DESCRIPTION
This module contains the entry code for VxWorks images that start
running from ROM, such as 'bootrom' and 'vxWorks_rom'.
The entry point, romInit(), is the first code executed on power-up.
It performs the minimal setup needed to call
the generic C routine romStart() with parameter BOOT_COLD.

RomInit() typically masks interrupts in the processor, sets the initial
stack pointer (to STACK_ADRS which is defined in configAll.h), and
readies system memory by configuring the DRAM controller if necessary.
Other hardware and device initialization is performed later in the
BSP's sysHwInit() routine.

A second entry point in romInit.s is called romInitWarm(). It is called
by sysToMonitor() in sysLib.c to perform a warm boot.
The warm-start entry point must be written to allow a parameter on
the stack to be passed to romStart().

WARNING:
This code must be Position Independent Code (PIC).  This means that it
should not contain any absolute address references.  If an absolute address
must be used, it must be relocated by the macro ROM_ADRS(x).  This macro
will convert the absolute reference to the appropriate address within
ROM space no matter how the boot code was linked. (For PPC, ROM_ADRS does
not work.  You must subtract _romInit and add ROM_TEXT_ADRS to each
absolute address). (NOTE: ROM_ADRS(x) macro does not work for current
PPC compiler).

This code should not call out to subroutines declared in other modules,
specifically sysLib.o, and sysALib.o.  If an outside module is absolutely
necessary, it can be linked into the system by adding the module
to the makefile variable BOOT_EXTRA.  If the same module is referenced by
other BSP code, then that module must be added to MACH_EXTRA as well.
Note that some C compilers can generate code with absolute addresses.
Such code should not be called from this module.  If absolute addresses
cannot be avoided, then only ROM resident code can be generated from this
module.  Compressed and uncompressed bootroms or VxWorks images will not
work if absolute addresses are not processed by the macro ROM_ADRS.

WARNING:
The most common mistake in BSP development is to attempt to do too much
in romInit.s.  This is not the main hardware initialization routine.
Only do enough device initialization to get memory functioning.  All other
device setup should be done in sysLib.c, as part of sysHwInit().

Unlike other RTOS systems, VxWorks does not use a single linear device
initialization phase.  It is common for inexperienced BSP writers to take
a BSP from another RTOS, extract the assembly language hardware setup
code and try to paste it into this file.  Because VxWorks provides 3
different memory configurations, compressed, uncompressed, and rom-resident,
this strategy will usually not work successfully.

WARNING:
The second most common mistake made by BSP writers is to assume that
hardware or CPU setup functions done by romInit.o do not need to be
repeated in sysALib.s or sysLib.c.  A vxWorks image needs only the following
from a boot program: The startType code, and the boot parameters string
in memory.  Each VxWorks image will completely reset the CPU and all
hardware upon startup.  The image should not rely on the boot program to
initialize any part of the system (it may assume that the memory controller
is initialized).

This means that all initialization done by romInit.s must be repeated in
either sysALib.s or sysLib.c.  The only exception here could be the
memory controller.  However, in most cases even that can be
reinitialized without harm.

Failure to follow this rule may require users to rebuild bootrom's for
minor changes in configuration.  It is WRS policy that bootroms and vxWorks
images should not be linked in this manner.

This module contains the entry code for VxWorks images that start
running from ROM, such as 'bootrom' and 'vxWorks_rom'.  The entry
point, romInit(), is the first code executed on power-up.  It performs
the minimal setup needed to call the generic C routine romStart() with
parameter BOOT_COLD.

romInit() masks interrupts in the processor and the interrupt
controller and sets the initial stack pointer (to STACK_ADRS which is
defined in configAll.h).  Other hardware and device initialisation is
performed later in the sysHwInit routine in sysLib.c.

The routine sysToMonitor() jumps to a location after the beginning of
romInit, (defined by ROM_WARM_ADRS) to perform a "warm boot".  This
entry point allows a parameter to be passed to romStart().

The routines in this module don't use the "C" frame pointer %r11@ ! or
establish a stack frame.

SEE ALSO:
.I "ARM Architecture Reference Manual,"
.I "ARM 9TDMI Data Sheet,"
.I "ARM 920T Data Sheet,"
.I "ARM 920T Technical Reference Manual",
.I "ARM Reference Peripherals Specification,"
*/

#define	_ASMLANGUAGE
#include "vxWorks.h"
#include "sysLib.h"
#include "asm.h"
#include "regs.h"	
#include "config.h"
#include "arch/arm/mmuArmLib.h"

        .data
        .globl   VAR(copyright_wind_river)
        .long    VAR(copyright_wind_river)

/* internals */

	.globl	FUNC(romInit)		/* start of system code */
	.globl	VAR(sdata)		/* start of data */
        .globl  _sdata


/* externals */

	.extern	FUNC(romStart)	/* system initialization routine */

_sdata:
VAR_LABEL(sdata)
	.asciz	"start of data"
	.balign	4

/* variables */

	.data

	.text
	.balign 4

/*******************************************************************************
*
* romInit - entry point for VxWorks in ROM
*

* romInit
*     (
*     int startType	/@ only used by 2nd entry point @/
*     )

* INTERNAL
* sysToMonitor examines the ROM for the first instruction and the string
* "Copy" in the third word so if this changes, sysToMonitor must be updated.
*/

_ARM_FUNCTION(romInit)
_romInit:
cold:
	MOV	r0, #BOOT_COLD	/* fall through to warm boot entry */
warm:
	B	start

	/* copyright notice appears at beginning of ROM (in TEXT segment) */

	.ascii   "\nCopyright 1999-2004 Wind River Systems, Inc."
	.balign 4

start:
	/*
	 * There have been reports of problems with certain boards and
	 * certain power supplies not coming up after a power-on reset,
	 * and adding a delay at the start of romInit appears to help
	 * with this.
	 */

	TEQS	r0, #BOOT_COLD
	MOVEQ	r1, #CSB337_DELAY_VALUE
	MOVNE	r1, #1

delay_loop:
	SUBS	r1, r1, #1
	BNE	delay_loop

	/*
	 * Set processor and MMU to known state as follows (we may have not
	 * been entered from a reset). We must do this before setting the CPU
	 * mode as we must set PROG32/DATA32.
	 *
	 * MMU Control Register layout.
	 *
	 * bit
	 *  0 M 0 MMU disabled
	 *  1 A 0 Address alignment fault disabled, initially
	 *  2 C 0 Data cache disabled
	 *  3 W 0 Write Buffer disabled
	 *  4 P 1 PROG32
	 *  5 D 1 DATA32
	 *  6 L 1 Should Be One (Late abort on earlier CPUs)
	 *  7 B ? Endianness (1 => big)
	 *  8 S 0 System bit to zero } Modifies MMU protections, not really
	 *  9 R 1 ROM bit to one     } relevant until MMU switched on later.
	 * 10 F 0 Should Be Zero
	 * 11 Z 0 Should Be Zero (Branch prediction control on 810)
	 * 12 I 0 Instruction cache control
	 */

	/* Setup MMU Control Register */

	MOV	r1, #MMU_INIT_VALUE		/* Defined in mmuArmLib.h */
	MCR	CP_MMU, 0, r1, c1, c0, 0	/* Write to MMU CR */

	/*
	 * If MMU was on before this, then we'd better hope it was set
	 * up for flat translation or there will be problems. The next
	 * 2/3 instructions will be fetched "translated" (number depends
	 * on CPU).
	 *
	 * We would like to discard the contents of the Write-Buffer
	 * altogether, but there is no facility to do this. Failing that,
	 * we do not want any pending writes to happen at a later stage,
	 * so drain the Write-Buffer, i.e. force any pending writes to
	 * happen now.
	 */
         
	MOV	r1, #0				/* data SBZ */
	MCR	CP_MMU, 0, r1, c7, c10, 4	/* drain write-buffer */

	/* Flush (invalidate) both I and D caches */

	MCR	CP_MMU, 0, r1, c7, c7, 0	/* R1 = 0 from above, data SBZ*/


        /*
	 * Set Process ID Register to zero, this effectively disables
	 * the process ID remapping feature.
	 */

	MOV	r1, #0
	MCR	CP_MMU, 0, r1, c13, c0, 0

	/* disable interrupts in CPU and switch to SVC32 mode */

	MRS	r1, cpsr
	BIC	r1, r1, #MASK_MODE
	ORR	r1, r1, #MODE_SVC32 | I_BIT | F_BIT
	MSR	cpsr, r1

	/*
	 * CPU INTERRUPTS DISABLED
	 *
	 * disable individual interrupts in the interrupt controller
	 */

	LDR	r2, =AT91C_BASE_AIC		            /* R2->interrupt controller */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人丝袜高跟foot| 久久亚洲欧美国产精品乐播| a级精品国产片在线观看| 国产精品自在在线| 色偷偷成人一区二区三区91| 欧美群妇大交群中文字幕| 亚洲国产精品久久人人爱| 欧美三区在线视频| 久久99精品国产| 亚洲人被黑人高潮完整版| 欧美日韩一区二区在线观看| 激情五月婷婷综合| 亚洲另类色综合网站| 精品日本一线二线三线不卡| 成人av在线播放网址| 日韩精品一级中文字幕精品视频免费观看 | 中文字幕精品一区二区精品绿巨人 | 91美女片黄在线| 成人美女视频在线看| 国产成人综合在线| 91色porny| 日韩理论片网站| 国产香蕉久久精品综合网| 91黄色免费网站| 成人免费看的视频| 久久69国产一区二区蜜臀| 国产最新精品精品你懂的| 欧美日韩国产在线观看| 2020国产精品久久精品美国| 蜜桃视频第一区免费观看| 在线看国产一区| 五月婷婷另类国产| 日韩欧美一区二区不卡| 国产精品一二三四区| 久久丁香综合五月国产三级网站| 亚洲欧美日韩国产手机在线| 久久久久99精品一区| 亚洲精品一区二区三区四区高清| 欧美日本一区二区三区| 欧美一区二区三区免费在线看| 色哟哟在线观看一区二区三区| 91小视频在线免费看| 日本韩国精品一区二区在线观看| 色天使色偷偷av一区二区| 成人一区在线看| 在线观看www91| 欧美一卡二卡三卡| 久久蜜桃av一区二区天堂 | 麻豆国产精品777777在线| 日本成人超碰在线观看| 国产自产视频一区二区三区| 国产精品夜夜爽| 欧美三级日本三级少妇99| 欧美日韩在线电影| 国产女人18毛片水真多成人如厕 | 成人免费的视频| 欧美精品v日韩精品v韩国精品v| 精品国产一区二区三区久久久蜜月| 久久久亚洲国产美女国产盗摄| 亚洲另类在线制服丝袜| 国产美女视频91| 在线免费观看成人短视频| 久久久不卡影院| 国产美女一区二区| 91精品国产日韩91久久久久久| 一区在线观看视频| 国产自产v一区二区三区c| 制服丝袜中文字幕亚洲| 久久久蜜桃精品| 国内成+人亚洲+欧美+综合在线| 色网站国产精品| 国产精品久久777777| 成人一区二区三区视频在线观看 | 亚洲国产综合色| 色先锋久久av资源部| 一区二区三区在线播放| 99久久综合99久久综合网站| 国产视频在线观看一区二区三区| 精品视频全国免费看| www精品美女久久久tv| 国内精品免费在线观看| 2021国产精品久久精品| 大桥未久av一区二区三区中文| 精品999久久久| 豆国产96在线|亚洲| 专区另类欧美日韩| 欧美特级限制片免费在线观看| 一区二区三区日韩欧美精品| 在线日韩av片| 国产成人午夜片在线观看高清观看| 精品国产乱码久久久久久影片| 蜜臀精品一区二区三区在线观看 | 国产河南妇女毛片精品久久久| 国产女同互慰高潮91漫画| 91久久香蕉国产日韩欧美9色| 亚洲一区在线电影| 久久人人97超碰com| 在线看不卡av| 99久久久精品免费观看国产蜜| 亚洲一区二区av在线| 久久久高清一区二区三区| 99精品视频一区| 激情图片小说一区| 一区二区三区精密机械公司| wwwwww.欧美系列| 欧美性大战久久久久久久蜜臀| 另类小说图片综合网| 亚洲国产毛片aaaaa无费看| ㊣最新国产の精品bt伙计久久| 69堂亚洲精品首页| 欧美日韩国产首页| 欧美在线影院一区二区| 成人午夜免费视频| 韩国欧美国产一区| 免费成人av在线| 天天综合色天天| 日本在线不卡视频| 久久精品国内一区二区三区| 五月天一区二区三区| 午夜视黄欧洲亚洲| 亚洲1区2区3区4区| 亚洲国产成人精品视频| 午夜精品一区二区三区免费视频| 亚洲视频一区在线| 亚洲少妇30p| 亚洲v日本v欧美v久久精品| 亚洲第一电影网| 日韩精品一卡二卡三卡四卡无卡| 五月天视频一区| 久久精品国产一区二区三区免费看 | 国产精品18久久久久久vr| 国产风韵犹存在线视精品| 99精品黄色片免费大全| 欧美三级日韩三级| 欧美成人精精品一区二区频| 久久久午夜精品| 亚洲成在人线在线播放| 国产成人精品亚洲777人妖 | www.日韩大片| 欧美二区三区91| 国产精品电影一区二区| 日韩成人精品在线观看| 国产精品一区二区久激情瑜伽| 99国产精品国产精品久久| 欧美精品久久99| 亚洲色图另类专区| 国产激情偷乱视频一区二区三区| 91麻豆免费观看| 日本一区二区视频在线| 免费欧美在线视频| 欧美嫩在线观看| 一区二区三区在线观看视频| 成人在线综合网| 国产欧美日韩卡一| 麻豆精品在线看| 欧美不卡一二三| 麻豆精品在线看| 欧美mv和日韩mv国产网站| 亚洲超丰满肉感bbw| 欧美日本免费一区二区三区| 专区另类欧美日韩| 日本电影亚洲天堂一区| 成人欧美一区二区三区黑人麻豆| 大白屁股一区二区视频| 欧美男人的天堂一二区| 亚洲天堂免费看| 在线免费一区三区| 午夜成人免费视频| 日韩欧美专区在线| 国产精品99久久久| 国产拍揄自揄精品视频麻豆| 国产大陆a不卡| 亚洲精品综合在线| 日韩精品专区在线影院重磅| 免费高清在线一区| 中文字幕av一区二区三区免费看 | 日韩美女在线视频| 成人一级视频在线观看| 亚洲伊人色欲综合网| 日韩欧美一二三四区| 不卡影院免费观看| 日本视频免费一区| 国产精品成人在线观看| 91精品国产综合久久精品麻豆| 激情小说欧美图片| 日韩中文字幕亚洲一区二区va在线| 日韩精品一区二区三区在线播放| 国产成人福利片| 精品影视av免费| 视频一区二区三区在线| 亚洲视频一二三| 国产欧美精品一区二区三区四区 | 国产成人午夜高潮毛片| 日日夜夜一区二区| 亚洲另类中文字| 综合久久综合久久| 国产无一区二区| 国产目拍亚洲精品99久久精品| 日韩欧美一区二区不卡| 8v天堂国产在线一区二区|