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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? syslib.c

?? miceteck_MPC860_BSP源碼,基于VXWORK
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* sysLib.c - Motorola 860DAB board system-dependent library */

/* Copyright 1998 Teltec UCD-CS */
/* Copyright 1984-1996 Wind River Systems, Inc. */
#include "copyright_wrs.h"

/*
modification history
--------------------
01a,16sep98,rkh  started for DAB
01e,21feb97,mas  removed NOMANUAL, made sysHwInit2() visible to 'man' (SPR 7879)
01d,11nov96,tam  added power management mode initialization.
01c,06nov96,tpr  reworked sysHwInit().
01b,28may96,dzb  added Ethernet driver support routines.
		 added port initialization, and increased system to 24Mhz.
01a,19apr96,tpr  written.
*/

/*
DESCRIPTION
This library provides board-specific routines.  The chip drivers included are:

    ppcDecTimer.c	- PowerPC Decrementer Timer library

INCLUDE FILES: sysLib.h

SEE ALSO:
.pG "Configuration"
*/

/* includes */

#include "vxWorks.h"
#include "vme.h"
#include "memLib.h"
#include "cacheLib.h"
#include "sysLib.h"
#include "config.h"
#include "string.h"
#include "intLib.h"
#include "logLib.h"
#include "routeLib.h"
#include "stdio.h"
#include "taskLib.h"
#include "vxLib.h"
#include "tyLib.h"
#include "arch/ppc/vxPpcLib.h"
#include "private/vmLibP.h"

#include "drv/multi/ppc860Siu.h"
#include "860pc.h"

#ifdef INCLUDE_CPM
#include "drv/netif/if_cpm.h"
#endif

#define PLD_BASE 0x30000000  /* defined in ca6004.h */
#define PLD_SIZE 0x00008000  /* defined in ca6004.h */

PHYS_MEM_DESC sysPhysMemDesc [] =
    {
    {
    (void *) LOCAL_MEM_LOCAL_ADRS,
    (void *) LOCAL_MEM_LOCAL_ADRS,
    LOCAL_MEM_SIZE ,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE
    },

    {
    (void *) INTERNAL_MEM_MAP_ADDR,
    (void *) INTERNAL_MEM_MAP_ADDR,
    INTERNAL_MEM_MAP_SIZE,		/* 64 k - Internal Memory Map */	
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    },

    {
    (void *) ROM_BASE_ADRS,
    (void *) ROM_BASE_ADRS,
    ROM_SIZE,				/* Flach memory */	
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    },
    {
    (void *) FLASH_ADRS,
    (void *) FLASH_ADRS,
    FLASH_SIZE,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    },
/* CPLD memory (32k) */
    {
    (void *) PLD_BASE,
    (void *) PLD_BASE,
    PLD_SIZE,                 
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    }
    /* *** */
    /* ,
    {
    (void *) 0x02100000,
    (void *) 0x02100000,
    4096,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE  | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE       | VM_STATE_CACHEABLE_NOT
    } */
    };

int sysPhysMemDescNumEnt = NELEMENTS (sysPhysMemDesc);

int   sysBus      = BUS;                /* system bus type (VME_BUS, etc) */
int   sysCpu      = CPU;                /* system CPU type (PPC860) */
char *sysBootLine = BOOT_LINE_ADRS;	/* address of boot line */
char *sysExcMsg   = EXC_MSG_ADRS;	/* catastrophic message area */
int   sysProcNum;			/* processor number of this CPU */
int   sysFlags;				/* boot flags */
char  sysBootHost [BOOT_FIELD_LEN];	/* name of host from which we booted */
char  sysBootFile [BOOT_FIELD_LEN];	/* name of file from which we booted */
BOOL  sysVmeEnable = FALSE;		/* by default no VME */

#ifdef	INCLUDE_CPM
/* XXX set the following array to a unique Ethernet hardware address XXX */

/* last 5 nibbles are board specific, initialized in sysHwInit */

unsigned char sysCpmEnetAddr [6] = {0x08,0x00,0x3e,0x03,0x02,0x09};
/*unsigned char sysCpmEnetIp[16] = "192.168.0.42";*/

extern STATUS cpmattach();
#endif	/* INCLUDE_CPM */

/* locals */
void sysCpmEnetDisable (int unit);
void sysCpmEnetIntDisable (int unit);


#ifdef INCLUDE_MOT_FEC
unsigned char sysFecEnetAddr[6];

IMPORT STATUS sysFccEnetDisable(UINT32 motCpmaddr);

#endif/* INCLUDE_MOT_FEC */

#include "sysSerial.c"
#include "intrCtl/ppc860Intr.c"
#include "timer/ppcDecTimer.c"		/* PPC860 & 821 have on chip timers */
/* #include "mem/nullNvRam.c" */
#include "flashMem.c"
#include "bootLine.c"
#include "sysMotCpmEnd.c"
/* #include "motFecEnd.c" */

#include "ca6004.c"


/******************************************************************************
*
* sysModel - return the model name of the CPU board
*
* This routine returns the model name of the CPU board.
*
* RETURNS: A pointer to the string.
*/

char * sysModel (void)
    {
    return ("Motorola 860pc - PowerPC 860");
    }

/******************************************************************************
*
* sysBspRev - return the bsp version with the revision eg 1.0/<x>
*
* This function returns a pointer to a bsp version with the revision.
* for eg. 1.0/<x>. BSP_REV defined in config.h is concatanated to
* BSP_VERSION and returned.
*
* RETURNS: A pointer to the BSP version/revision string.
*/

char * sysBspRev (void)
    {
    return (BSP_VERSION BSP_REV);
    }

/******************************************************************************
*
* sysHwInit - initialize the system hardware
*
* This routine initializes various feature of the MPC860DAB boards. It sets up
* the control registers, initializes various devices if they are present.
*
* NOTE: This routine should not be called directly by the user.
*
* RETURNS: N/A
*/

void sysHwInit (void)
    {
    char  initValue[NV_INIT_SIZE+1];
    UINT8 macAdrs[6];
    int	immrVal = vxImmrGet();

    /* set the SPLL to the value requested */

    * PLPRCR(immrVal) = (*PLPRCR(immrVal) & ~PLPRCR_MF_MSK) | 
				(SPLL_MUL_FACTOR << PLPRCR_MF_SHIFT);

    /* set the BRGCLK division factor */

    * SCCR(immrVal) = (* SCCR(immrVal) & ~SCCR_DFBRG_MSK) |
				(BRGCLK_DIV_FACTOR << SCCR_DFBRG_SHIFT);
     
    /* reset the port A */

    *PAPAR(immrVal) = 0x0000;
    *PADIR(immrVal) = 0x0000; /* *PADIR(immrVal) = 0x0008;*/
    *PAODR(immrVal) = 0x0000;
    *PADAT(immrVal) = 0x0000; /* *PADIR(immrVal) = 0x0008; */

    /* reset the port B */

    *PBPAR(immrVal) = 0x00000000;
    *PBDIR(immrVal) = 0x00000000;
    *PBODR(immrVal) = 0x00000000;

    /* reset the port C */

    *PCPAR(immrVal) = 0x0000;
    *PCDIR(immrVal) = 0x0000;
    *PCSO(immrVal)  = 0x0000;

    /* reset the port D */

    *PDPAR(immrVal) = 0x0000;
    *PDDIR(immrVal) = 0x0000;
    
    /* config private I2C channel */
    /* added by TANG 2003.6.16 */
/*    
    *PBPAR(immrVal) &= 0xfffe13ff;
    *PCPAR(immrVal) &= 0xfff0;
    *PBDIR(immrVal) |= 0x0001ec00;
    *PCDIR(immrVal) |= 0x000f;
    *PCSO(immrVal)  &= 0xfff0;
    *CIMR(immrVal)  &= 0x7a7fffff;  
*/       

    *SICR(immrVal) = 0x0;		/* initialize SI/NMSI connections */

    /* Initialize interrupts */

    ppc860IntrInit(IV_LEVEL4);	/* default vector level */

    /* Reset serial channels */

    sysSerialHwInit();

    /* make sure Ethernet is disabled */

    sysCpmEnetDisable (0);
    sysCpmEnetIntDisable (0);
    
#ifdef INCLUDE_MOT_FEC
    sysFecEnetDisable(immrVal);
#endif /*INCLUDE_MOT_FEC*/

    /* ensure bootline exist in NVRAM */
    if ((sysNvRamGet(&initValue[0],NV_INIT_SIZE+1,-NV_BOOT_OFFSET)) != ERROR)
	{
	  
	  if ( strcmp( initValue, NVRAM_INITIALIZED) != 0 ) 
	  {
	  	
	    (void)sysNvRamSet(DEFAULT_BOOT_LINE, strlen(DEFAULT_BOOT_LINE)+1,0);
			
	  }
	}
    if ((sysFlashGet(&initValue[0],NV_INIT_SIZE+1,MAC_ADRS-FLASH_ADRS)) != ERROR)
	{
	  
	  if ( strcmp( initValue, NVRAM_INITIALIZED) != 0 ) 
	    {
	     bcopy((UINT8*)DEFAULT_10M_MAC_ADRS,(UINT8*)macAdrs,6);
	     
	     #ifdef INCLUDE_MOT_FEC
	       bcopy((UINT8*)DEFAULT_100M_MAC_ADRS,(UINT8*)(macAdrs+6),6);
	       bcopy((UINT8*)DEFAULT_10M_IP,(UINT8*)(macAdrs+12),16);
	     #endif /* INCLUDE_MOT_FEC */
	     
	     macAdrsSet((UINT8*)macAdrs);
	   }
          else
             macAdrsGet((UINT8*)macAdrs);
        }
     bcopy((UINT8*)macAdrs,sysCpmEnetAddr,6);

#ifdef INCLUDE_MOT_FEC
     bcopy((UINT8*)(macAdrs+6),sysFecEnetAddr,6);
     bcopy((UINT8*)(macAdrs+12),sysCpmEnetIp,16);		
#endif /* INCLUDE_MOT_FEC */
    
    /*
     * The power management mode is initialized here. Reduced power mode
     * is activated only when the kernel is iddle (cf vxPowerDown).
     * Power management mode is selected via vxPowerModeSet().
     * DEFAULT_POWER_MGT_MODE is defined in config.h.
     */

    vxPowerModeSet (DEFAULT_POWER_MGT_MODE);
    }

/*******************************************************************************
*
* sysPhysMemTop - get the address of the top of physical memory
*
* This routine returns the address of the first missing byte of memory,
* which indicates the top of memory.
*
* RETURNS: The address of the top of physical memory.
*
* SEE ALSO: sysMemTop()
*/

char * sysPhysMemTop (void)
    {
    static char * physTop = NULL;

    if (physTop == NULL)
	{
	physTop = (char *)(LOCAL_MEM_LOCAL_ADRS + LOCAL_MEM_SIZE);
	}

    return (physTop) ;
    }

/*******************************************************************************
*
* sysMemTop - get the address of the top of VxWorks memory
*
* This routine returns a pointer to the first byte of memory not
* controlled or used by VxWorks.
*
* The user can reserve memory space by defining the macro USER_RESERVED_MEM
* in config.h.  This routine returns the address of the reserved memory
* area.  The value of USER_RESERVED_MEM is in bytes.
*
* RETURNS: The address of the top of VxWorks memory.
*/

char * sysMemTop (void)
    {
    static char * memTop = NULL;

    if (memTop == NULL)
	{
	memTop = sysPhysMemTop () - USER_RESERVED_MEM;
	}

    return memTop;
    }


/******************************************************************************
*
* sysToMonitor - transfer control to the ROM monitor
*
* This routine transfers control to the ROM monitor.  Normally, it is called
* only by reboot()--which services ^X--and bus errors at interrupt level.
* However, in some circumstances, the user may wish to introduce a
* <startType> to enable special boot ROM facilities.
*
* RETURNS: Does not return.
*/

STATUS sysToMonitor
    (
     int startType	/* parameter passed to ROM to tell it how to boot */
    )
    {
    FUNCPTR pRom = (FUNCPTR) (ROM_TEXT_ADRS + 4);	/* Warm reboot */

    sysCpmEnetDisable (0);	/* disable the ethernet device */
 
    sysCpmEnetIntDisable (0);	/* disable the ethernet device interrupt */

#ifdef INCLUDE_MOT_FEC
	sysFecEnetDisable(vxImmrGet() );
#endif/*INCLUDE_MOT_FEC*/	

    sysSerialReset();		/* reset the serail device */

    (*pRom) (startType);	/* jump to bootrom entry point */

    return (OK);	/* in case we ever continue from ROM monitor */
    }

/******************************************************************************
*
* sysHwInit2 - additional system configuration and initialization
*
* This routine connects system interrupts and does any additional
* configuration necessary.
*
* RETURNS: N/A
*/

void sysHwInit2 (void)
    {
    static BOOL configured = FALSE;
    int		immrVal;

    if (!configured)
	{

	immrVal = vxImmrGet();

	/* initialize serial interrupts */

	sysSerialHwInit2();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产精品亚洲红杏 | 欧美国产精品专区| 国产精品理论片| 日韩国产精品大片| a级精品国产片在线观看| 欧美日韩在线综合| 亚洲欧美在线观看| 国产一区视频网站| 欧美日韩不卡在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品久久免费看| 日韩二区三区四区| 欧洲一区在线电影| 中文字幕五月欧美| 国产精品888| 日韩欧美电影在线| 午夜久久福利影院| 91久久精品一区二区三| 国产精品视频一二| 国产乱妇无码大片在线观看| 91精品久久久久久蜜臀| 亚洲图片欧美一区| 欧美丝袜丝nylons| 亚洲成人精品一区二区| 欧美在线观看视频在线| 亚洲一级在线观看| 欧美色图天堂网| 亚洲影院在线观看| 欧美系列一区二区| 亚洲国产综合在线| 欧美三区免费完整视频在线观看| 亚洲乱码国产乱码精品精小说| av一本久道久久综合久久鬼色| 日本一区二区综合亚洲| 福利视频网站一区二区三区| 久久蜜桃av一区二区天堂| 免费高清在线一区| 欧美变态tickle挠乳网站| 久久激情五月激情| 久久久一区二区三区捆绑**| 国产成人午夜片在线观看高清观看| 精品福利一区二区三区免费视频| 激情综合五月婷婷| 国产女主播一区| 91网站黄www| 午夜精品久久久| 日韩免费福利电影在线观看| 极品少妇一区二区| 中文字幕一区二区三区视频| 色呦呦国产精品| 亚洲成国产人片在线观看| 91精品国产综合久久精品app| 蜜臀国产一区二区三区在线播放| 欧美变态tickle挠乳网站| 成人午夜激情视频| 亚洲宅男天堂在线观看无病毒| 91精品久久久久久久91蜜桃| 国产在线一区二区| 亚洲欧美日韩久久| 日韩欧美国产综合在线一区二区三区| 精品伊人久久久久7777人| 国产精品国产自产拍在线| 欧美视频中文字幕| 国产成人精品亚洲日本在线桃色 | www.综合网.com| 亚洲国产成人高清精品| 日韩欧美成人一区| 91视频免费播放| 精油按摩中文字幕久久| 国产精品成人一区二区三区夜夜夜| 欧美在线三级电影| 国产麻豆精品一区二区| 一区二区三区四区在线播放 | 国产成人免费在线视频| 亚洲午夜精品一区二区三区他趣| 欧美精品一区男女天堂| 色综合中文字幕国产| 玖玖九九国产精品| 亚洲主播在线播放| 日本一二三不卡| 91精品免费在线| 色8久久人人97超碰香蕉987| 狠狠色综合播放一区二区| 一区二区三区在线高清| 国产欧美视频一区二区| 日韩无一区二区| 欧美性三三影院| jlzzjlzz国产精品久久| 久久疯狂做爰流白浆xx| 亚洲国产日韩在线一区模特 | 色综合天天狠狠| 国产精品一二三四区| 日韩影视精彩在线| 一区二区三区四区在线| 亚洲国产成人一区二区三区| 日韩女优毛片在线| 欧美三级日韩三级国产三级| 成人h版在线观看| 国精产品一区一区三区mba视频| 亚洲欧美日韩成人高清在线一区| 亚洲精品一区二区三区福利| 日韩一区二区影院| 欧美男生操女生| 欧美三级韩国三级日本三斤| 一本久道久久综合中文字幕| 成人av免费在线播放| 国产福利不卡视频| 国产乱码精品1区2区3区| 精品在线播放午夜| 国产一二三精品| 国产一区二区三区不卡在线观看 | 亚洲欧美激情一区二区| 国产精品免费网站在线观看| 精品av综合导航| 2020国产精品| 国产网站一区二区| 国产精品三级av| 亚洲欧洲综合另类| 一区二区三区在线视频观看58| 一区二区三区日韩| 亚洲一区二区三区在线播放| 亚洲综合清纯丝袜自拍| 一级日本不卡的影视| 亚洲午夜久久久久中文字幕久| 午夜精品久久一牛影视| 另类成人小视频在线| 国产高清在线精品| 99久久伊人网影院| 日本福利一区二区| 制服丝袜激情欧洲亚洲| 精品奇米国产一区二区三区| 久久久久久影视| 国产精品二三区| 亚洲国产日产av| 狂野欧美性猛交blacked| 国产jizzjizz一区二区| 色婷婷综合久久| 91精品国产综合久久香蕉的特点| 日韩一区二区三区在线视频| 国产午夜精品一区二区三区视频| 国产精品美女www爽爽爽| 一区二区三区 在线观看视频| 日日嗨av一区二区三区四区| 国产一区二区免费在线| 色香色香欲天天天影视综合网| 欧美日本在线播放| 久久蜜臀中文字幕| 亚洲午夜一区二区三区| 久久av资源网| 色噜噜狠狠成人中文综合| 日韩一区二区三区三四区视频在线观看| 精品国产乱码久久久久久闺蜜| 中文字幕成人av| 日本在线不卡一区| 99re66热这里只有精品3直播| 欧美日韩国产综合一区二区 | 国产精品中文字幕欧美| 日本精品视频一区二区| 精品国产百合女同互慰| 一区二区激情视频| 国产麻豆午夜三级精品| 91麻豆精品国产综合久久久久久| 亚洲国产成人一区二区三区| 日韩av在线发布| 日本福利一区二区| 中文字幕国产一区| 国产一区二区三区观看| 欧美日韩激情在线| 日韩伦理免费电影| 国内成+人亚洲+欧美+综合在线| 91国偷自产一区二区使用方法| 久久久久久久国产精品影院| 亚洲大片一区二区三区| 99久久精品久久久久久清纯| 日韩欧美专区在线| 亚洲18女电影在线观看| 91网站最新地址| 在线日韩一区二区| 精品国内片67194| 视频一区在线视频| 在线观看一区二区视频| 国产精品视频免费看| 国产激情视频一区二区三区欧美 | 国产日韩三级在线| 久久er精品视频| 欧美一区二区三区免费大片| 一区二区三区精品视频| 色综合久久久久| 中文字幕一区二区日韩精品绯色| 国产精品99久久久| 久久综合国产精品| 国产精品正在播放| 国产欧美综合在线观看第十页| 精品亚洲免费视频| 日韩精品一区二| 狠狠v欧美v日韩v亚洲ⅴ| 日韩精品一区二区三区中文精品| 青青草国产精品97视觉盛宴| 欧美久久久久中文字幕| 日韩综合在线视频|