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

📄 devcnfg.c

📁 VRTX 商用嵌入式实时操作系统
💻 C
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************
*
*		Copyright (c) 1995,1996 MICROTEC RESEARCH INC.
*
*	All rights reserved. MICROTEC RESEARCH's source code is an unpublished
*	work and the use of a copyright notice does not imply otherwise.
*	This source code contains confidential, trade secret material of
*	MICROTEC RESEARCH. Any attempt or participation in deciphering,
*	decoding, reverse engineering or in any way altering the source code
*	is strictly prohibited, unless the prior written consent of
*	MICROTEC RESEARCH is obtained.
*
*
*	Module Name:		devcnfg.tpl
*
*	Identification:	 	 1.11 devcnfg.tpl
*
*	Date:			8/20/96	17:50:31
*
*****************************************************************************/

static const char sccsid[] = "  1.9 devcnfg.tpl 8/20/96";

/*
 ** devcnfg.c
 **
 ** Contents:
 **
 **	This file implements any device configuration and initialization.
 **	Board specific definitions are in <board>.def.
 **
 **
 ** Revision History:
 **
 **	Date	Name		Description
 **
 ----------------------------------------------------------------------
 */

/************************************************************************
*			ENVIROMENAL DEFINITIONS				*
************************************************************************/

#define SCREEN_DEVICE		1
#define GRAPHICS_DEVICE	 	0
#define SERIAL_DEVICE_1	 	0
#define SERIAL_DEVICE_2	 	1
#define SERIAL_DEVICE		(SERIAL_DEVICE_1 | SERIAL_DEVICE_2)
#define SERIAL_INTERRUPT	1
#define TIMER_DEVICE		1
#define ETHER_DEVICE		0

#define NE2000_DEVICE		1
#define ETHERLINK3_DEVICE	0

/************************************************************************
*			 INCLUDE FILES					*
************************************************************************/

#include "in8259.h"

#if (SCREEN_DEVICE | GRAPHICS_DEVICE)
#include "pcat/screen.h"		/* PCAT Screen & Keyboard Interface Data Structs	*/
#endif

#if GRAPHICS_DEVICE == 1
#include "graphics/metawndo.h"
#endif

#if SERIAL_DEVICE == 1
#include "serial_2.h"		/* serial interface data structs	*/
#include "na16550.h"
#endif

#if TIMER_DEVICE == 1
#include "timer.h"		/* timer interface data structs	*/
#include "in8254.h"
#endif

#if ETHER_DEVICE == 1
#include "ether_1.h"
#if NE2000_DEVICE
#include "ne2000.h"
#endif
#if ETHERLINK3_DEVICE
#include "pcat/ethlnk3.h"
#endif
#endif


/************************************************************************
*		BOARD SPECIFIC DEVICE VALUES				*
************************************************************************/

#define	PIC_M_LEVEL		0x30
#define PIC_S_LEVEL		0x38

#define KEYBOARD_IRQ		1
#if (KEYBOARD_IRQ < 8)
#define KEYBOARD_VECTOR	 	(PIC_M_LEVEL + KEYBOARD_IRQ)
#else
#define KEYBOARD_VECTOR	 	(PIC_S_LEVEL + KEYBOARD_IRQ - 8)
#endif
#define KEYBOARD_PORT		0x60

#define COM1_BAUD		9600
#define COM2_BAUD		9600

#define COM1			0x03F8
#define COM2			0x02F8
#define COM3			
#define COM4			

#define COM1_IRQ		4
#define COM2_IRQ		3

#if (COM1_IRQ < 8)
#define COM1_VECTOR	 	(PIC_M_LEVEL + COM1_IRQ)
#else
#define COM1_VECTOR	 	(PIC_S_LEVEL + COM1_IRQ - 8)
#endif
#define COM1_RX_VECTOR		COM1_VECTOR
#define COM1_TX_VECTOR		COM1_VECTOR
#define COM1_RXE_VECTOR	 	COM1_VECTOR

#if (COM2_IRQ < 8)
#define COM2_VECTOR	 	(PIC_M_LEVEL + COM2_IRQ)
#else
#define COM2_VECTOR	 	(PIC_S_LEVEL + COM2_IRQ - 8)
#endif
#define COM2_RX_VECTOR		COM2_VECTOR
#define COM2_TX_VECTOR		COM2_VECTOR
#define COM2_RXE_VECTOR	 	COM2_VECTOR

#define TIMER_8254_IRQ		0
#if (TIMER_8254_IRQ < 8)
#define TIMER_8254_VECTOR	(PIC_M_LEVEL + TIMER_8254_IRQ)
#else
#define TIMER_8254_VECTOR	(PIC_S_LEVEL + TIMER_8254_IRQ - 8)
#endif

#define TIMER_CLOCK_PERIOD	838
#define TIMER_INITIAL_COUNTER	0
#define TIMER_PRELOAD		11930

#define	TIMER_8254_CNTR0	0x40	/* in8254 counter 0 address */
#define	TIMER_8254_CNTR1	0x41	/* in8254 counter 1 address */
#define	TIMER_8254_CNTR2	0x42	/* in8254 counter 2 address */
#define	TIMER_8254_CNTRL	0x43	/* in8254 chan mode cntrl addr  */





/************************************************************************
*		 DEVICE CONFIGURATION STRUCTURES			*
************************************************************************/


/************************************************************************
*		PCAT CHARACTER DISPLAY & KEYBOARD			*
************************************************************************/

#if (SCREEN_DEVICE | GRAPHICS_DEVICE)

vbsp_return_t keyboard_int_enable (void) {
	in8259_interrupt_enable (KEYBOARD_IRQ);
	return VBSP_SUCCESS;
}

vbsp_return_t keyboard_eoi (void) {
	in8259_end_of_interrupt (KEYBOARD_IRQ);
	return VBSP_SUCCESS;
}

int keyboard_int_status (void) {
	return (in8259_get_interrupt_enabled (KEYBOARD_IRQ));
}

unsigned screen_scroll_task_priority = 0;

#endif

#if SCREEN_DEVICE == 1

const screen_config_t screen_config_rom = {

	{				/* VGA CONFIG STRUCT			*/
		9,				/* Screen Mode			*/
		25,				/* Vertical Size		*/
		80,				/* Horizontal Size		*/
		KEYBOARD_VECTOR,		/* Keyboard Receive Int Vector	*/
	},

	{				/* SCREEN REG MAP STRUCT		*/
		(BYTE *) KEYBOARD_PORT + 0,	/* Keyboard receive register	*/
		(BYTE *) KEYBOARD_PORT + 0,	/* Keyboard transmit register	*/
		(BYTE *) KEYBOARD_PORT + 1,	/* interrupt enable		*/
		(BYTE *) KEYBOARD_PORT + 2,	/* interrupt id			*/
	},

	{				/* ERTIO FOPS STRUCT			*/
		0, 0, 0,			/* Int Read Function Pointers	*/
		0, 0, 0,			/* Int Write Function Pointers	*/
		0,				/* Int Strt function pointer */
		(vbsp_return_t (*) (void *, unsigned char))
			keyboard_eoi,		/* Int End Function Pointer		*/
		0,				/* board specific int disable handling */
		(vbsp_return_t (*) (void *, logio_int_entry_t *))
			keyboard_int_enable,	/* board specific int enable handling */
		0
	},

};

screen_dev_desc_t	screen_dev;
screen_config_t		screen_config_ram;

const logio_method_t logio_screen_method = {
	(logio_fops_t *) &logio_screen_fops,
	(void *) &screen_dev
};

logio_device_id_t logio_screen_id =
	(logio_device_id_t) &logio_screen_method;

#endif	/* SCREEN_DEVICE == 1		*/


/*********************************************************************
*		PCAT GRAPHICS DISPLAY & KEYBOARD				*
*********************************************************************/


#if GRAPHICS_DEVICE == 1

const screen_config_t graphics_config_rom = {

	{				/* VGA CONFIG STRUCT			*/
		VGA640x480,	/* Screen Mode			*/
		25,				/* Vertical Size		*/
		80,				/* Horizontal Size		*/
		KEYBOARD_VECTOR,		/* Keyboard Receive Int Vector	*/
	},

	{				/* SCREEN REG MAP STRUCT		*/
		(BYTE *) KEYBOARD_PORT + 0,	/* Keyboard receive register	*/
		(BYTE *) KEYBOARD_PORT + 0,	/* Keyboard transmit register	*/
		(BYTE *) KEYBOARD_PORT + 1,	/* interrupt enable		*/
		(BYTE *) KEYBOARD_PORT + 2,	/* interrupt id			*/
	},

	{				/* ERTIO FOPS STRUCT			*/
		0, 0, 0,			/* Int Read Function Pointers	*/
		0, 0, 0,			/* Int Write Function Pointers	*/
		0,				/* int_strt function pointer */
		(vbsp_return_t (*) (void *, unsigned char))
			keyboard_eoi,		/* Int End Function Pointer		*/
		0,				/* board specific int disable handling */
		(vbsp_return_t (*) (void *, logio_int_entry_t *))
			keyboard_int_enable,	/* board specific int enable handling */
		0
	},

};

screen_dev_desc_t	graphics_dev;
screen_config_t		graphics_config_ram;

const logio_method_t logio_graphics_method = {
	(logio_fops_t *) &logio_screen_fops,
	(void *) &graphics_dev
};

logio_device_id_t logio_graphics_id =
	(logio_device_id_t) &logio_graphics_method;

#endif	/* GRAPHICS_DEVICE == 1		*/


/********************************************************************
*			COM PORTS					*
********************************************************************/

#if SERIAL_DEVICE == 1

#if SERIAL_DEVICE_1 == 1

/* DEV_SERIAL_1 */

vbsp_return_t com1_int_enable(void) {
	in8259_interrupt_enable (COM1_IRQ);
	return VBSP_SUCCESS;
}

vbsp_return_t com1_eoi (void) {
	in8259_end_of_interrupt (COM1_IRQ);
	return VBSP_SUCCESS;
}

const na16550_config_t sc1_config_rom = {

	{				/* SERIAL_1_CONFIG_T */
		serial_tty_device,		/* the default uses serial_1 for a bridge */
		0,				/* clock speed in Mhz */
		COM1_BAUD,			/* baud rate cnt */
		PARITY_NONE,			/* from serial_2.h */
		BITS_8,				/* from serial_2.h */
		STOP_BITS_1,			/* from serial_2.h */
		COM1_RX_VECTOR,			/* na16550 receive interrupt vector */
		COM1_TX_VECTOR,			/* na16550 transmit interrupt vector */
		COM1_RXE_VECTOR,		/* na16550 receive error interrupt vector */
		0				/* void pointer for interface expansion */
	},

	{				/* NA16550_REG_MAP_T FROM NA16550.H */
		(BYTE *) COM1 + 0,		/* receive register */
		(BYTE *) COM1 + 0,		/* transmit register */
		(BYTE *) COM1 + 1,		/* interrupt enable */
		(BYTE *) COM1 + 2,		/* interrupt id */
		(BYTE *) COM1 + 3,		/* line control */
		(BYTE *) COM1 + 4,		/* modem control */
		(BYTE *) COM1 + 5,		/* line status */
		(BYTE *) COM1 + 6,		/* modem status */
		(BYTE *) COM1 + 1,		/* divisor latch upper byte */
		(BYTE *) COM1 + 0		/* divisor latch lower byte */
	},

	{				/* EXTERN_FOPS_T FROM EXTIO_1.H */
		0,				/* register write byte */
		0,				/* register write word */
		0,				/* register write long */
		0,				/* register read  byte */
		0,				/* register read  word */
		0,				/* register read  long */
		0,				/* int_strt function pointer */
#if SERIAL_INTERRUPT == 1
		(vbsp_return_t (*) (void *, unsigned char))
			com1_eoi,		/* Int End Function Pointer		*/
		0,				/* board specific int disable handling */
		(vbsp_return_t (*) (void *, logio_int_entry_t *))
			com1_int_enable,	/* board specific int enable handling */
#else
		0,0,0,
#endif
		0
	},

	{				/* na16550_specific_t from na16550.h */
		0,				/* LSR */
		0				/* FROM_ISR */
	}
};

#endif

#if SERIAL_DEVICE_2 == 1

/* DEV_SERIAL_2 */

vbsp_return_t com2_int_enable(void) {
	in8259_interrupt_enable (COM2_IRQ);
	return VBSP_SUCCESS;
}

vbsp_return_t com2_eoi (void) {
	in8259_end_of_interrupt (COM2_IRQ);
	return VBSP_SUCCESS;
}

const na16550_config_t sc2_config_rom= {

	{				/* SERIAL_2_CONFIG_T */
		serial_tty_device,		/* the default uses serial_2 for console */
		0,				/* clock speed in Mhz */
		COM2_BAUD,			/* baud rate cnt */
		PARITY_NONE,			/* from serial_2.h */
		BITS_8,				/* from serial_2.h */
		STOP_BITS_1,			/* from serial_2.h */
		COM2_RX_VECTOR,			/* na16550 receive interrupt vector */
		COM2_TX_VECTOR,			/* na16550 transmit interrupt vector */
		COM2_RXE_VECTOR,		/* na16550 receive error interrupt vector */
		0				/* void pointer for interface expansion */
	},

	{				/* NA16550_REG_MAP_T FROM NA16550.H */
		(BYTE *)COM2 +0,		/* receive register */
		(BYTE *)COM2 +0,		/* transmit register */
		(BYTE *)COM2 +1,		/* interrupt enable */
		(BYTE *)COM2 +2,		/* interrupt id */
		(BYTE *)COM2 +3,		/* line control */
		(BYTE *)COM2 +4,		/* modem control */
		(BYTE *)COM2 +5,		/* line status */
		(BYTE *)COM2 +6,		/* modem status */
		(BYTE *)COM2 +1,		/* divisor latch upper byte */
		(BYTE *)COM2 +0		/* divisor latch lower byte */

⌨️ 快捷键说明

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