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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? syslib.c

?? 這是別人發(fā)的LPC2210的BSP
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#endif /* FORCE_DEFAULT_BOOT_LINE */

    sysSerialHwInit ();      /* initialize serial data structure */
}

/******************************************************************************
*
* sysHwInit2 - additional system configuration and initialization
*
* This routine connects system interrupts and does any additional
* configuration necessary.
*
* RETURNS: N/A
*
* NOMANUAL
*
* Note: this is called from sysClkConnect() in the timer driver.
*/

void sysHwInit2 (void)
{
    /* initialize the interrupt library and interrupt driver */
    intLibInit (LPC2210_INTNUMLEVELS, LPC2210_INTNUMLEVELS, INT_MODE);
    lpc2210IntDevInit();

    /* connect sys clock interrupt and auxiliary clock interrupt */
    (void)intConnect(INT_VEC_TIMER0, sysClkInt, 0);
    /*(void)intConnect(INT_VEC_TIMER1, sysAuxClkInt, 0);*/
    (void)intConnect(INT_VEC_EXTINT3, (VOIDFUNCPTR)IRQ_Eint3, 0);
    
    /* connect serial interrupt */
    sysSerialHwInit2();
}

/******************************************************************************
*
* 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.
*
* Normally, the user specifies the amount of physical memory with the
* macro LOCAL_MEM_SIZE in config.h.  BSPs that support run-time
* memory sizing do so only if the macro LOCAL_MEM_AUTOSIZE is defined.
* If not defined, then LOCAL_MEM_SIZE is assumed to be, and must be, the
* true size of physical memory.
*
* NOTE: Do no adjust LOCAL_MEM_SIZE to reserve memory for application
* use.  See sysMemTop() for more information on reserving memory.
*
* RETURNS: The address of the top of physical memory.
*
* SEE ALSO: sysMemTop()
*/

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

    if (physTop == NULL)
        {
#ifdef LOCAL_MEM_AUTOSIZE

        /* If auto-sizing is possible, this would be the spot.  */

#    error   "Dynamic memory sizing not supported"

#else
        /* Don't do autosizing, if size is given */

        physTop = (char *)(LOCAL_MEM_LOCAL_ADRS + LOCAL_MEM_SIZE);

#endif /* LOCAL_MEM_AUTOSIZE */
        }

    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.  It is usually called
* only by reboot() -- which services ^X -- and bus errors at interrupt
* level.  However, in some circumstances, the user may wish to introduce a
* new <startType> to enable special boot ROM facilities.
*
* RETURNS: Does not return.
*/

STATUS sysToMonitor
    (
    int startType    /* passed to ROM to tell it how to boot */
    )
    {
    FUNCPTR     pRom;
    UINT32 *    p = (UINT32 *)ROM_TEXT_ADRS;
#ifdef INCLUDE_SNGKS32C_END
    END_OBJ *   pEnd;
#endif

    /*
     * Examine ROM - if it's a VxWorks boot ROM, jump to the warm boot entry
     * point; otherwise jump to the start of the ROM.
     * A VxWorks boot ROM begins
     *    MOV    R0,#BOOT_COLD
     *    B    ...
     *    DCB    "Copyright"
     * We check the first and third words only. This could be tightened up
     * if required (see romInit.s).
     */

#if (_BYTE_ORDER == _LITTLE_ENDIAN)
    if (p[0] == 0xE3A00002 && p[2] == 0x79706F43)
        pRom = (FUNCPTR)(ROM_TEXT_ADRS + 4);    /* warm boot address */
    else
        pRom = (FUNCPTR)ROM_TEXT_ADRS;        /* start of ROM */
#else /* (_BYTE_ORDER == _LITTLE_ENDIAN) */
    if (p[0] == 0xE3A00002 && p[2] == 0x436F7079)
        pRom = (FUNCPTR)(ROM_TEXT_ADRS + 4);    /* warm boot address */
    else
        pRom = (FUNCPTR)ROM_TEXT_ADRS;        /* start of ROM */
#endif /* (_BYTE_ORDER == _LITTLE_ENDIAN) */

#ifdef INCLUDE_SNGKS32C_END
    /*
     * Reset Ethernet controller to prevent it doing anything
     * before jumping to the bootrom.
     */

    pEnd = endFindByName ("sng", 0);

    if (pEnd != NULL)
        pEnd->pFuncTable->stop(pEnd->devObject.pDevice);
#endif /* INCLUDE_SNGKS32C_END */

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

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

/****************************************************************************
*
* sysProcNumGet - get the processor number
*
* This routine returns the processor number for the CPU board, which is
* set with sysProcNumSet().
*
* RETURNS: The processor number for the CPU board.
*
* SEE ALSO: sysProcNumSet()
*/

int sysProcNumGet (void)
    {
    return 0;
    }

/****************************************************************************
*
* sysProcNumSet - set the processor number
*
* Set the processor number for the CPU board.  Processor numbers should be
* unique on a single backplane.
*
* NOTE
* By convention, only processor 0 should dual-port its memory.
*
* RETURNS: N/A
*
* SEE ALSO: sysProcNumGet()
*/

void sysProcNumSet
    (
    int procNum        /* processor number */
    )
    {
    sysProcNum = procNum;
    }

#ifdef INCLUDE_FLASH

/* default procedures assume static ram with no special r/w routines */
#ifndef NV_RAM_WR_ENBL
#   define NV_RAM_WR_ENBL    /* no write enable procedure */
#endif /*NV_RAM_WR_ENBL*/

#ifndef NV_RAM_WR_DSBL
#   define NV_RAM_WR_DSBL    /* no write disable procedure */
#endif /*NV_RAM_WR_DSBL*/

#ifndef NV_RAM_READ
#   define NV_RAM_READ(x) \
    (*(UCHAR *)((int)NV_RAM_ADRS + ((x) * NV_RAM_INTRVL)))
#endif /*NV_RAM_READ*/

#ifndef NV_RAM_WRITE
#   define NV_RAM_WRITE(x,y) \
    (*(UCHAR *)((int)NV_RAM_ADRS + ((x) * NV_RAM_INTRVL)) = (y))
#endif /*NV_RAM_WRITE*/
    
/******************************************************************************
*
* sysNvRamGet - get the contents of non-volatile RAM
*
* This routine copies the contents of non-volatile memory into a specified
* string.  The string is terminated with an EOS.
*
* RETURNS: OK, or ERROR if access is outside the non-volatile RAM range.
*
* SEE ALSO: sysNvRamSet()
*/

STATUS sysNvRamGet
    (
    char *string,    /* where to copy non-volatile RAM    */
    int   strLen,      /* maximum number of bytes to copy   */
    int   offset       /* byte offset into non-volatile RAM */
    )

    {
    STATUS retVal;

    offset += NV_BOOT_OFFSET;   /* boot line begins at <offset> = 0 */

    if ((offset < 0)
     || (strLen < 0)
     || ((offset + strLen) > NV_RAM_SIZE))
        return (ERROR);

    retVal = sysFlashGet (string, strLen, offset);
    string [strLen] = EOS;

    return (OK);
    }

/******************************************************************************
*
* sysNvRamSet - write to non-volatile RAM
*
* This routine copies a specified string into non-volatile RAM.
*
* RETURNS: OK, or ERROR if access is outside the non-volatile RAM range.
*
* SEE ALSO: sysNvRamGet()
*/

STATUS sysNvRamSet
    (
    char *string,     /* string to be copied into non-volatile RAM */
    int strLen,       /* maximum number of bytes to copy           */
    int offset        /* byte offset into non-volatile RAM         */
    )

    {
    offset += NV_BOOT_OFFSET;   /* boot line begins at <offset> = 0 */

    if ((offset < 0)
     || (strLen < 0)
     || ((offset + strLen) > NV_RAM_SIZE))
        return ERROR;

    NV_RAM_WR_ENBL;

    return (sysFlashSet (string, strLen, offset));

    }

/******************************************************************************
*
* sysFlashBoardDelay - create a delay
*
* This routine is used by flashMem.c to produce specified delays. It
* appears that the Flash driver cannot use taskDelay() at certain
* points.
*
* RETURNS: N/A
*/

void sysFlashBoardDelay (void)
    {
    return;
    }
#endif /* INCLUDE_FLASH */

#ifdef DEBUG
/******************************************************************************
*
* sysDebug - print message using polled serial driver
*
* Use the polled driver to print debug messages.  Useful before the full
* hardware initialization is complete (but only after sysHwInit).
*
* RETURNS: N/A.
*
* NOMANUAL
*/

void sysDebug
    (
    char *str
    )
    {
    int msgSize;
    int msgIx;
    LOCAL SIO_CHAN * pSioChan;        /* serial I/O channel */
    LOCAL BOOL beenHere = FALSE;

    msgSize = strlen (str);

    if (!beenHere)
        {
        sysSerialHwInit ();

        pSioChan = sysSerialChanGet (0);

        sioIoctl (pSioChan, SIO_BAUD_SET, (void *)CONSOLE_BAUD_RATE);

        sioIoctl (pSioChan, SIO_MODE_SET, (void *) SIO_MODE_POLL);

        beenHere = TRUE;
	}

    for (msgIx = 0; msgIx < msgSize; msgIx++)
        {
        while (sioPollOutput (pSioChan, str[msgIx]) == EAGAIN)
            /* do nothing */;
        }
    }
#endif /* DEBUG */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu精品一区二区在线观看| 日韩经典一区二区| 中文字幕中文字幕一区二区| 国产日产欧美一区| 日本一区二区成人| 国产精品亲子伦对白| 国产精品久久久久7777按摩 | 欧美国产一区视频在线观看| 久久久精品tv| 国产精品美日韩| 亚洲欧美一区二区视频| 亚洲欧洲韩国日本视频| 亚洲精品乱码久久久久| 一区二区三区国产精品| 亚洲va欧美va国产va天堂影院| 午夜电影一区二区| 成年人网站91| 99久久99精品久久久久久| 色呦呦国产精品| 欧美日韩视频在线观看一区二区三区| 欧美最新大片在线看| 欧美日韩视频在线第一区| 欧美日韩国产综合草草| 日韩视频一区二区三区| 久久婷婷综合激情| 国产精品每日更新| 亚洲福利国产精品| 美女性感视频久久| 丁香啪啪综合成人亚洲小说| 99国产欧美另类久久久精品| 精品视频一区二区不卡| 精品捆绑美女sm三区| 国产精品久久毛片av大全日韩| 亚洲一本大道在线| 久久激五月天综合精品| 99久久精品国产麻豆演员表| 欧美日韩一区二区三区视频| 精品国产一区a| 中文字幕五月欧美| 日韩高清在线观看| 北条麻妃一区二区三区| 欧美老肥妇做.爰bbww| 精品成人在线观看| 一区二区三区中文免费| 久久国产剧场电影| 白白色 亚洲乱淫| 91精品国产入口在线| 国产欧美va欧美不卡在线| 亚洲国产精品天堂| 国产精品一二三区在线| 欧美日本一区二区三区| 日本一区二区三级电影在线观看| 亚洲成人精品在线观看| 国产福利不卡视频| 欧美久久久久久蜜桃| 中文字幕成人在线观看| 日韩电影一区二区三区| 成人黄页毛片网站| 日韩欧美www| 亚洲欧美日韩国产综合| 国产自产视频一区二区三区| 91久久精品国产91性色tv| 91搞黄在线观看| 5566中文字幕一区二区电影| 亚洲免费高清视频在线| 亚洲狠狠爱一区二区三区| 国产91精品一区二区麻豆网站 | 久久综合久色欧美综合狠狠| 午夜欧美电影在线观看| 国产成人精品亚洲777人妖 | 日韩欧美成人一区| 亚洲欧美日韩久久精品| 国产成人精品免费在线| 欧美一区二区国产| 亚洲乱码国产乱码精品精可以看| 久久66热偷产精品| 欧美日本不卡视频| 亚洲六月丁香色婷婷综合久久| 国产乱子伦视频一区二区三区| 在线播放91灌醉迷j高跟美女| 国产精品久久久久aaaa樱花| 国产美女av一区二区三区| 欧美久久一二区| 亚洲男人的天堂一区二区| 国产成a人无v码亚洲福利| 精品久久久久久久一区二区蜜臀| 亚洲动漫第一页| 日本久久电影网| 亚洲欧美另类小说| av中文一区二区三区| 亚洲国产成人私人影院tom| 国产最新精品精品你懂的| 精品欧美乱码久久久久久 | 国精品**一区二区三区在线蜜桃| 91精品在线一区二区| 亚洲国产精品一区二区www | 2021国产精品久久精品| 三级欧美在线一区| 欧美日韩亚洲综合在线| 亚洲一区二区欧美激情| 色8久久精品久久久久久蜜| 欧美激情一区三区| 成人午夜大片免费观看| 国产日韩欧美一区二区三区乱码| 久久国产成人午夜av影院| 91精品国产黑色紧身裤美女| 日韩激情一二三区| 91精品国产综合久久久久久 | 91在线视频免费91| 国产精品九色蝌蚪自拍| 不卡视频在线观看| 粉嫩欧美一区二区三区高清影视| 国产色91在线| 国产蜜臀97一区二区三区| 91精品福利在线一区二区三区| 国产一区二区三区免费在线观看| 国产精品成人免费在线| 7777精品伊人久久久大香线蕉经典版下载 | 欧美亚洲国产怡红院影院| 中文字幕在线不卡| 99精品视频中文字幕| 亚洲免费观看在线观看| 色又黄又爽网站www久久| 亚洲美腿欧美偷拍| 欧美三片在线视频观看| 日韩高清在线电影| 久久久青草青青国产亚洲免观| 国产福利一区在线| 亚洲男人的天堂一区二区 | 亚洲一区免费视频| 欧美日韩免费高清一区色橹橹| 日韩精品一二三四| 久久精品一二三| 色哦色哦哦色天天综合| 日本强好片久久久久久aaa| 久久综合狠狠综合久久综合88| 粉嫩av亚洲一区二区图片| 亚洲精品一二三四区| 欧美一级日韩免费不卡| 国产福利不卡视频| 亚洲国产综合色| 久久久噜噜噜久噜久久综合| 99国产精品久| 日本成人超碰在线观看| 国产三级欧美三级日产三级99 | 中文字幕在线观看不卡视频| 欧美专区日韩专区| 久久国产精品99久久久久久老狼| 国产精品视频一二三| 欧美高清视频一二三区 | 欧美视频一区二区| 国产在线乱码一区二区三区| 亚洲日本在线视频观看| 日韩亚洲欧美中文三级| eeuss影院一区二区三区| 午夜激情一区二区| 国产精品免费av| 日韩一区二区高清| 99re视频精品| 老司机精品视频线观看86| 亚洲色图视频免费播放| 欧美成人午夜电影| 91豆麻精品91久久久久久| 激情av综合网| 日韩欧美成人一区二区| 亚洲国产精品av| 日本aⅴ亚洲精品中文乱码| 在线成人高清不卡| www国产成人免费观看视频 深夜成人网| 精品国产91洋老外米糕| 中文字幕av不卡| 视频一区免费在线观看| 国内精品伊人久久久久av一坑 | 日本vs亚洲vs韩国一区三区二区| 亚洲国产精品一区二区尤物区| 久久久久久久久久久久电影| 欧美日韩一区二区三区视频| 成人av在线播放网址| 青青草97国产精品免费观看| 亚洲日本在线a| 国产肉丝袜一区二区| 欧美第一区第二区| 欧美视频一区二区三区在线观看| 成人动漫精品一区二区| 狠狠狠色丁香婷婷综合激情| 日韩和欧美一区二区三区| 亚洲少妇屁股交4| 国产精品天天看| 久久综合色天天久久综合图片| 欧美一级爆毛片| 91精品国产欧美一区二区18| 在线观看欧美黄色| 91视频国产观看| 99r国产精品| 不卡的av网站| 波多野结衣在线一区| 国产精品乡下勾搭老头1| 国产一区二区三区黄视频| 久久国产尿小便嘘嘘尿| 久久精品国产99国产|