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

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

?? sysserial.c

?? vxwroks ads860_bsp MPC860開發模板程序
?? C
字號:
/* sysSerial.c -  MPC860 SMC UART BSP serial device initialization *//* Copyright 1984-1998 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01l,29jan02,dtr  Changing vxImmrGet to vxImmrIsbGet.01k,29oct01,dtr  Removing diab compiler warnings.01j,03oct00,js  Added support for 850SARDB cpu.01i,29sep00,js  Adding changes for 850.01h,19mar99,cn   only SMC1 is initialized on MPC823/850 (SPR# 25839).01g,19feb99,cn   fixed mangen error.01f,28jan99,cn   Added support for the second SMC channel (SPR# 10005).01e,08may98,gls  Added clearing of serial interrupts to sysSerialHwInit01d,06nov96,tpr  replaced SYS_CPU_FREQ by BRGCLK_FREQ.01c,20jun96,tpr  added sysSerialReset().01b,28may96,dzb  tweaked setting of portB registers.01a,19apr86,cah  created*//*The sysSerial.c file is normally included as part of the sysLib.c file.This code segment configures the serial ports for the BSP.This BSP can support up to two SMC channels in UART mode only.*/ #include "vxWorks.h"#include "iv.h"#include "intLib.h"#include "config.h"#include "sysLib.h"#include "drv/sio/ppc860Sio.h"#include "drv/multi/ppc860Cpm.h"#include "ads860.h"#include "arch/ppc/vxPpcLib.h"/* defines *//*  * the macros below define parameters describing the configuration of * the SMCs channels in the PPC860's DPRAM, for instance the offset * of the transmit buffer descriptors (TBD), receive buffer descriptors * (RBD), and so on. The user may redefine them to best suit its needs. * He should be aware of the location of other peripherals's parameters * within the DPRAM (SCC1, etc.). *//* offset from DPRAM of SMC1's TBDs */#define SMC1_TBD_OFF		0x200/* offset from DPRAM of SMC1's RBDs */#define SMC1_RBD_OFF		(SMC1_TBD_OFF + 0x10)/* offset from DPRAM of SMC1's Tx buffers */#define SMC1_TX_BUF_OFF		0x300/* offset from DPRAM of SMC1's Rx buffers */#define SMC1_RX_BUF_OFF		(SMC1_TX_BUF_OFF + 0x80)/* number of SMC1's TBDs */#define SMC1_TBD_NUM		0x01/* number of SMC1's RBDs */#define SMC1_RBD_NUM		0x10/* offset from DPRAM of SMC2's TBDs */#define SMC2_TBD_OFF		0x400/* offset from DPRAM of SMC2's RBDs */#define SMC2_RBD_OFF		(SMC2_TBD_OFF + 0x10)/* offset from DPRAM of SMC2's Tx buffers */#define SMC2_TX_BUF_OFF		0x500/* offset from DPRAM of SMC2's Rx buffers */#define SMC2_RX_BUF_OFF		(SMC2_TX_BUF_OFF + 0x80)/* number of SMC2's TBDs */#define SMC2_TBD_NUM		0x01/* number of SMC2's RBDs */#define SMC2_RBD_NUM		0x10/* size of the SMC1 transmit buffer */#define SMC1_TX_BUF_SZ		0x01/* size of the SMC2 transmit buffer */#define SMC2_TX_BUF_SZ		0x01/* device initialization structure */ typedef struct    {    UINT32	smcTbdOff;		/* offset of the TBDs for this smc */    UINT32	smcRbdOff;		/* offset of the RBDs for this smc */    UINT32	smcTbdNum;		/* number of TBDs for this smc */    UINT32	smcRbdNum;		/* number of RBDs for this smc */    UINT32	smcTxBufOff;		/* offset of the Tx buf for this smc */    UINT32	smcRxBufOff;		/* offset of the Rx buf for this smc */    UINT32	smcTxBufSz;		/* size of the Tx buf for this smc */    } PPC860SMC_PARMS; /* forward declaration */ /* Local data structures */ static UINT8	chanNum = NUM_TTY;	/* number of channels actually used */static PPC860SMC_PARMS ppc860SmcParms [] =    {       {SMC1_TBD_OFF, SMC1_RBD_OFF, SMC1_TBD_NUM, SMC1_RBD_NUM,	SMC1_TX_BUF_OFF, SMC1_RX_BUF_OFF, SMC1_TX_BUF_SZ},       {SMC2_TBD_OFF, SMC2_RBD_OFF, SMC2_TBD_NUM, SMC2_RBD_NUM,	SMC2_TX_BUF_OFF, SMC2_RX_BUF_OFF, SMC2_TX_BUF_SZ},    }; static PPC860SMC_CHAN	ppc860Chan [NUM_TTY];/******************************************************************************** sysSerialHwInit - initialize the BSP serial devices to a quiesent state** This routine initializes the BSP serial device descriptors and puts the* devices in a quiesent state.  It is called from sysHwInit() with* interrupts locked.** Both the SMC serial channels are initialized if the variable chanNum * equals two. In this case, SMC1 uses BRG1 and SMC2 uses BRG2. However, * if using an MPC823/850 processor, only SMC1 is initialized.** Data Parameter Ram layout:**          -----------------------------*          |                           | DPRAM base *          |                           |*          |                           |*          |                           |*          |---------------------------|*          | 8 bytes per descriptor    | SMC1 Tx Buffer Descriptor (0x2200)*          |---------------------------|*          |                           |*          |---------------------------|*          | 16 descriptors @          | SMC1 Rx Buffer Descriptors (0x2210)*          | 8 bytes per descriptor    | *          |                           |*          |---------------------------|*          |                           | end SMC1 Rx BDs (0x2290)*          |                           |*          |                           |*          |---------------------------|*          | 80 bytes allowed          | SMC1 Tx Buffer (0x2300 + DPRAM base )*          |---------------------------|*          | one receive char/buffer   | SMC1 Rx Buffer (0x2380 + DPRAM base )*          |---------------------------|*          |                           |*          |                           |*          |---------------------------|*          | 8 bytes per descriptor    | SMC2 Tx Buffer Descriptor (0x2400)*          |---------------------------|*          |                           |*          |---------------------------|*          | 16 descriptors @          | SMC2 Rx Buffer Descriptors (0x2410)*          | 8 bytes per descriptor    | *          |                           |*          |---------------------------|*          |                           | end SMC2 Rx BDs (0x2490)*          |                           |*          |                           |*          |---------------------------|*          | 80 bytes allowed          | SMC2 Tx Buffer (0x2500 + DPRAM base )*          |---------------------------|*          | one receive char/buffer   | SMC2 Rx Buffer (0x2580 + DPRAM base )*          |---------------------------|*          |                           |*          |                           |*          |                           |*          |                           |*          |---------------------------|*          | 34 bytes of parameter info| SMC1 Parameter Area (0x3e80)*          | including Rx and Tx BD    | *          | pointers, func codes      |*          | etc...                    |*          |---------------------------|*          |                           |*          |---------------------------|*          | 34 bytes of parameter info| SMC2 Parameter Area (0x3f80)*          | including Rx and Tx BD    | *          | pointers, func codes      |*          | etc...                    |*          |---------------------------|*          |                           |*          |                           |**** RETURNS: N/A*/ void sysSerialHwInit (void)    {    int		i;		/* an index */    /* enable serial I/O on the board */    *BCSR1 &= ~(BCSR1_RS232_EN_L);    /* If running an 823 or an 850, use only SMC1 */    if (((*BCSR3 & BCSR3_DBID_MASK) == BCSR3_823DB_MASK) ||	((*BCSR3 & BCSR3_DBID_MASK) == BCSR3_850SARDB_MASK) ||        ((*BCSR3 & BCSR3_DBID_MASK) == BCSR3_850DB_MASK))        {	chanNum = 1;	}    if (chanNum == 2)	*BCSR1 &= ~(BCSR1_RS232_2_EN_L);    /* intialize the chips device descriptors */    for (i = 0; i < chanNum; i++)        {	UINT32 regBase;	/* BRGCLK freq (Hz) */	ppc860Chan [i].clockRate      = BRGCLK_FREQ;	    	/* IMMR reg has base adr */	ppc860Chan [i].regBase        = vxImmrIsbGet();  	    	regBase = ppc860Chan [i].regBase;	/* use BRG1 for channel 1 and BRG2 for channel 2 */	ppc860Chan [i].bgrNum         = (i + 1);                  	/* SMC wired for rs232 */	ppc860Chan [i].uart.smcNum    = (i + 1);                  	/* init the number of TBDs */	ppc860Chan [i].uart.txBdNum   = ppc860SmcParms[i].smcTbdNum;                  	/* init the number of RBDs */	ppc860Chan [i].uart.rxBdNum   = ppc860SmcParms[i].smcRbdNum;               	/* transmit BD base adrs */	ppc860Chan [i].uart.txBdBase  = (SMC_BUF *) 					 (MPC860_REGB_OFFSET + 					 ppc860SmcParms[i].smcTbdOff);	/* receive BD base adrs */	ppc860Chan [i].uart.rxBdBase  = (SMC_BUF *) 					 (MPC860_REGB_OFFSET + 					 ppc860SmcParms[i].smcRbdOff);	/* tx buf base */	ppc860Chan [i].uart.txBufBase = (u_char *) 					 (MPC860_DPRAM_BASE (regBase)					 + ppc860SmcParms[i].smcTxBufOff);	/* rx buf base */	ppc860Chan [i].uart.rxBufBase = (u_char *) 					 (MPC860_DPRAM_BASE (regBase)					 + ppc860SmcParms[i].smcRxBufOff);	/* transmit buffer size */	ppc860Chan [i].uart.txBufSize = ppc860SmcParms[i].smcTxBufSz;	/* DPRAM addr of SMC1 params */	ppc860Chan [i].uart.pSmc = (SMC *) ((UINT32) PPC860_DPR_SMC1 					    (MPC860_DPRAM_BASE (regBase)) 					    + (i * 0x100));	/* SMCMR1 for SMC1 */	ppc860Chan [i].uart.pSmcReg = (SMC_REG *) 				       ((UINT32) MPC860_SMCMR1 (regBase)				       + (i * 0x10));	/* Mask interrupts */	ppc860Chan [i].uart.pSmcReg->smcm = 0;              	ppc860Chan [i].pBaud = (VINT32 *) ((VINT32) MPC860_BRGC1 (regBase)					    + (i * 4));	ppc860Chan [i].channelMode = 0;	/* select RS232 pins */	*MPC860_PBPAR(regBase) |= 0xC0 << (i * 4);       	/* set it to normal operations */	*MPC860_SDCR(regBase) = SDCR_RAID_BR5;           	/* reset the chip */	ppc860DevInit(&(ppc860Chan [i]));        }    }/******************************************************************************** sysSerialHwInit2 - connect BSP serial device interrupts** This routine connects the BSP serial device interrupts.  It is called from* sysHwInit2().  Serial device interrupts could not be connected in* sysSerialHwInit() because the kernel memory allocator was not initialized* at that point, and intConnect() calls malloc().** RETURNS: N/A*/ void sysSerialHwInit2 (void)    {    int		i;	/* an index */    /* connect serial interrupts */    for (i = 0; i < chanNum; i++)	{	switch (i)	    {	    case 0:		(void) intConnect (IV_SMC1, (VOIDFUNCPTR) ppc860Int, 				   (int) &ppc860Chan [i]);		break;	    case 1:		(void) intConnect (IV_SMC2_PIP, (VOIDFUNCPTR) ppc860Int, 				   (int) &ppc860Chan [i]);		break;	    default:		return;	    }	*CIMR(vxImmrIsbGet()) |= (CIMR_SMC1 >> i);	}    }/******************************************************************************** sysSerialChanGet - get the SIO_CHAN device associated with a serial channel** This routine gets the SIO_CHAN device associated with a specified serial* channel.** RETURNS: A pointer to the SIO_CHAN structure for the channel, or ERROR* if the channel is invalid.*/SIO_CHAN * sysSerialChanGet    (    int channel		/* serial channel */    )    {    if (channel >= chanNum)	return ((SIO_CHAN *) ERROR);    return ((SIO_CHAN *) &ppc860Chan [channel]);    }/********************************************************************************* sysSerialReset - reset the serail device ** This function calls sysSerialHwInit() to reset the serail device** RETURNS: N/A**/void sysSerialReset (void)    {    sysSerialHwInit ();    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久久久久| 91在线视频在线| 欧美一区二区免费视频| 麻豆91在线观看| 欧美va亚洲va香蕉在线| 国产成人综合网| 亚洲色欲色欲www| 欧美剧情片在线观看| 免费在线看一区| 久久久久久久综合日本| 99精品视频在线免费观看| 亚洲最大的成人av| 欧美成人精品福利| 91在线观看成人| 天使萌一区二区三区免费观看| 欧美电影免费观看完整版| 国产黄色精品网站| 亚洲私人影院在线观看| 欧美精品vⅰdeose4hd| 经典一区二区三区| 亚洲青青青在线视频| 在线不卡中文字幕| 国产99久久久国产精品免费看| 亚洲人成7777| 日韩精品在线一区| 色悠悠久久综合| 六月丁香婷婷久久| 亚洲乱码中文字幕| 久久久久88色偷偷免费| 欧美网站大全在线观看| 韩国视频一区二区| 久久精品国产亚洲a| 国产精品理论在线观看| 91精品国产aⅴ一区二区| 成人av影院在线| 日本女人一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩免费视频| 成人91在线观看| 久久se精品一区二区| 一区二区在线电影| 国产日韩精品一区| 欧美一级午夜免费电影| 色88888久久久久久影院野外| 精品中文字幕一区二区小辣椒| 一区二区三区在线免费播放| 日本一区二区三区免费乱视频| 91精品国产综合久久小美女| 在线欧美一区二区| 成人精品视频一区二区三区| 精品一区二区三区香蕉蜜桃| 亚洲成人久久影院| 亚洲人成7777| 综合色天天鬼久久鬼色| 久久久噜噜噜久噜久久综合| 4438x成人网最大色成网站| 欧美在线色视频| 91在线视频免费观看| 波多野结衣中文字幕一区二区三区| 久久精品国产在热久久| 美女精品自拍一二三四| 日本 国产 欧美色综合| 亚洲曰韩产成在线| 一区二区三区在线不卡| 亚洲欧洲美洲综合色网| 亚洲国产精品ⅴa在线观看| www成人在线观看| 欧美精品一区二区三区蜜臀| 欧美一区二区三区电影| 欧美日韩国产片| 欧美日韩dvd在线观看| 91高清视频在线| 欧美三级电影网| 欧美日韩免费一区二区三区| 欧美三级电影在线看| 欧美日韩亚洲综合一区二区三区| 欧美综合久久久| 欧美日免费三级在线| 欧美色网一区二区| 欧美日韩精品二区第二页| 欧美日韩一二三区| 4438亚洲最大| 欧美zozo另类异族| 久久久久久综合| 一区精品在线播放| 亚洲一区视频在线观看视频| 午夜激情一区二区| 免费av成人在线| 国产一区二区久久| 成人综合在线网站| 色狠狠桃花综合| 欧美性欧美巨大黑白大战| 欧美高清一级片在线| 国产精品久久久久久久久快鸭 | 亚洲小说欧美激情另类| 亚洲va欧美va人人爽午夜| 免费不卡在线观看| 国产.欧美.日韩| 色综合久久中文综合久久牛| 欧美日韩你懂的| 久久影院午夜论| 中文字幕在线不卡一区二区三区| 亚洲一区二区高清| 久久99国产精品久久| aaa国产一区| 555www色欧美视频| 国产日韩av一区二区| 亚洲人成小说网站色在线| 日韩**一区毛片| 成人午夜激情视频| 欧美视频日韩视频| 欧美一级电影网站| 麻豆精品一区二区三区| 岛国精品在线观看| 欧美色视频一区| 久久久久国色av免费看影院| 亚洲人成网站影音先锋播放| 日本欧美一区二区三区乱码| jlzzjlzz亚洲女人18| 日韩午夜中文字幕| 亚洲欧美另类久久久精品2019| 日韩av不卡在线观看| 99久久99久久久精品齐齐| 在线观看91av| 亚洲免费高清视频在线| 日韩精品1区2区3区| 福利视频网站一区二区三区| 91精品国产综合久久久久久久| 国产精品污污网站在线观看| 日韩va欧美va亚洲va久久| 成人免费看黄yyy456| 欧美一级专区免费大片| 一区二区在线电影| 成人免费毛片片v| 精品人在线二区三区| 亚洲第一激情av| 99国产精品久久久久| 久久久久一区二区三区四区| 热久久一区二区| 欧美性猛片xxxx免费看久爱| 国产精品理伦片| 国产成人久久精品77777最新版本| 69av一区二区三区| 一区二区高清在线| 99精品国产91久久久久久| 久久色在线观看| 久久精品国产精品亚洲精品| 欧美日韩精品三区| 亚洲一区欧美一区| 91麻豆精东视频| 亚洲欧洲美洲综合色网| 成人网在线播放| 中文字幕成人网| 成人午夜精品一区二区三区| 国产日韩欧美高清| 国产精品18久久久久久vr | 91精品国产综合久久久久久漫画 | 欧美男男青年gay1069videost| 亚洲靠逼com| 91亚洲国产成人精品一区二区三| 欧美激情中文不卡| 成人精品亚洲人成在线| 中文字幕一区在线观看视频| 成人午夜激情片| 国产精品美女久久久久久| 懂色av中文一区二区三区| 国产亚洲精久久久久久| 裸体健美xxxx欧美裸体表演| 538在线一区二区精品国产| 日韩电影在线观看网站| 欧美一级专区免费大片| 性久久久久久久久| 777a∨成人精品桃花网| 毛片一区二区三区| 久久综合一区二区| 国产一区二区福利| 欧美韩国日本不卡| 精品一区二区三区免费播放| 精品美女一区二区| 国产高清无密码一区二区三区| 日韩欧美久久一区| 国产在线观看一区二区| 国产色爱av资源综合区| 成人一区二区在线观看| 亚洲色图制服诱惑| 欧美三级视频在线观看 | 国产一区二区看久久| 国产精品久久久久久亚洲伦| 91视频一区二区| 日韩在线一区二区三区| 精品久久久久99| 99视频热这里只有精品免费| 亚洲永久精品国产| 日韩免费视频一区| 成人18视频日本| 午夜精品一区在线观看| 精品国产三级电影在线观看| 不卡欧美aaaaa| 蜜臀精品一区二区三区在线观看| 国产精品毛片高清在线完整版|