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

📄 integrator.h

📁 符合日本著名的ITRON规范的开源操作系统。 TOPPERS/JSP内核就是TOPPERS工程按μITRON4.0研发的第一个 软件
💻 H
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *                2003      by Advanced Data Controls, Corp *  *  惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation  *  によって给山されている GNU General Public License の Version 2 に淡 *  揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア *  を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 *      脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 *      荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 *      の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 *      脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ *      とˉ *    (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 *        侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに *        鼠桂することˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お *  よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も *  崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 *  儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: integrator.h,v 1.3 2003/12/19 11:24:18 honda Exp $ */#ifndef _INTEGRATOR_H_#define _INTEGRATOR_H_#ifndef _MACRO_ONLY#include <itron.h>#include <sil.h>#endif /* _MACRO_ONLY */#include "armv4.h"#include "sys_config.h"#include "cpu_config.h"/* * Interrupt controller */#define IRQ_BASE_REG    0x14000000#define IRQ0_STATUS     (IRQ_BASE_REG)#define IRQ0_RAWSTAT    (IRQ_BASE_REG + 0x04)#define IRQ0_ENABLESET  (IRQ_BASE_REG + 0x08)#define IRQ0_ENABLECLR  (IRQ_BASE_REG + 0x0c)#define IRQ_EXTINT_BIT		0x15#define IRQ_PCILBINT_BIT	0x14#define IRQ_ENUMINT_BIT		0x13#define IRQ_DEGINT_BIT		0x12#define IRQ_LINT_BIT		0x11#define IRQ_PCIINT3_BIT		0x10#define IRQ_PCIINT2_BIT		0x0f#define IRQ_PCIINT1_BIT		0x0e#define IRQ_PCIINT0_BIT		0x0d#define IRQ_EXPINT3_BIT		0x0c#define IRQ_EXPINT2_BIT		0x0b#define IRQ_EXPINT1_BIT		0x0a#define IRQ_EXPINT0_BIT		0x09#define IRQ_RTCINT_BIT		0x08#define IRQ_TM2_BIT		0x07#define IRQ_TM1_BIT		0x06#define IRQ_TM0_BIT		0x05#define IRQ_MOUSEINT_BIT	0x04#define IRQ_KBDINT_BIT		0x03#define IRQ_UART1_BIT   	0x02#define IRQ_UART0_BIT		0x01#define IRQ_SOFTINT_BIT 	0x00#define IRQ_EXTINT	(1 << IRQ_EXTINT_BIT)#define IRQ_PCILBIN	(1 << IRQ_PCILBIN_BIT)#define IRQ_ENUMINT	(1 << IRQ_ENUMINT_BIT)#define IRQ_DEGINT	(1 << IRQ_DEGINT_BIT)#define IRQ_LINT	(1 << IRQ_LINT_BIT)#define IRQ_PCIINT3	(1 << IRQ_PCIINT3_BIT)#define IRQ_PCIINT2	(1 << IRQ_PCIINT2_BIT)#define IRQ_PCIINT1	(1 << IRQ_PCIINT1_BIT)#define IRQ_PCIINT0	(1 << IRQ_PCIINT0_BIT)#define IRQ_EXPINT3	(1 << IRQ_EXPINT3_BIT)#define IRQ_EXPINT2	(1 << IRQ_EXPINT2_BIT)#define IRQ_EXPINT1	(1 << IRQ_EXPINT1_BIT)#define IRQ_EXPINT0	(1 << IRQ_EXPINT0_BIT)#define IRQ_RTCINT	(1 << IRQ_RTCINT_BIT)#define IRQ_TM2		(1 << IRQ_TM2_BIT)#define IRQ_TM1		(1 << IRQ_TM1_BIT)#define IRQ_TM0		(1 << IRQ_TM0_BIT)#define IRQ_MOUSEINT	(1 << IRQ_MOUSEINT_BIT)#define IRQ_KBDINT	(1 << IRQ_KBDINT_BIT)#define IRQ_UART1	(1 << IRQ_UART1_BIT)#define IRQ_UART0	(1 << IRQ_UART0_BIT)#define IRQ_SOFTINT	(1 << IRQ_SOFTINT_BIT)/*Interrupt Mask *Timer2は呵光庭黎刨をもつ ?? * */#define MASK_IRQ_TM2         0x3FFFFF#define MASK_IRQ_TM1         0x3FFF7F#define MASK_IRQ_TM0         0x3FFF3F#define MASK_IRQ_MOUSEINT    0x3FFF1F#define MASK_IRQ_KBDINT      0x3FFF0F#define MASK_IRQ_UART1       0x3FFF07#define MASK_IRQ_UART0       0x3FFF03#define MASK_IRQ_SOFTINT     0x3FFF01#define MASK_IRQ_EXTINT         0x3FFF00#define MASK_IRQ_PCILBINT       0x1FFF00#define MASK_IRQ_ENUMINT        0x0FFF00#define MASK_IRQ_DEGINT         0x07FF00#define MASK_IRQ_LINT           0x03FF00#define MASK_IRQ_PCIINT3        0x01FF00#define MASK_IRQ_PCIINT2        0x00FF00#define MASK_IRQ_PCIINT1        0x007F00#define MASK_IRQ_PCIINT0        0x003F00#define MASK_IRQ_EXPINT3        0x001F00#define MASK_IRQ_EXPINT2        0x000F00#define MASK_IRQ_EXPINT1        0x000700#define MASK_IRQ_EXPINT0        0x000300#define MASK_IRQ_RTCINT         0x000100#define INT_DISABLE_ALL    0x3FFFFF#define TIMER_BASE_REG     0x13000000#define IRQ0_BASE_REG      0x14000000#define UART0_BASE_REG     0x16000000#define UART1_BASE_REG    0x17000000/*UART0 Base Reg*/#define UART0_DR    (UART0_BASE_REG)#define UART0_RSR   (UART0_BASE_REG + 0x04)#define UART0_ECR   (UART0_BASE_REG + 0x04)#define UART0_LCRH  (UART0_BASE_REG + 0x08)#define UART0_LCRM  (UART0_BASE_REG + 0x0C)#define UART0_LCRL  (UART0_BASE_REG + 0x10)#define UART0_CR    (UART0_BASE_REG + 0x14)#define UART0_FR    (UART0_BASE_REG + 0x18)#define UART0_IIR   (UART0_BASE_REG + 0x1C)#define UART0_ICR   (UART0_BASE_REG + 0x1C)/* *UART1 Control Registers */#define UART1_DR    (UART1_BASE_REG)#define UART1_RSR   (UART1_BASE_REG + 0x04)#define UART1_ECR   (UART1_BASE_REG + 0x04)#define UART1_LCRH  (UART1_BASE_REG + 0x08)#define UART1_LCRM  (UART1_BASE_REG + 0x0C)#define UART1_LCRL  (UART1_BASE_REG + 0x10)#define UART1_CR    (UART1_BASE_REG + 0x14)#define UART1_FR    (UART1_BASE_REG + 0x18)#define UART1_IIR   (UART1_BASE_REG + 0x1C)#define UART1_ICR   (UART1_BASE_REG + 0x1C)/*Receive Error Constants:UARTx_RSR*/#define URSR_OVERRUN  0x8#define URSR_BREAK    0x4#define URSR_PARITY   0x2#define URSR_FRAMING  0x1/*---Line Control Constants: UARTx_LCRH---*//*[6:5] Word Length*/#define ULCRH_WLEN_8BIT      	0x60#define ULCRH_WLEN_7BIT      	0x40#define ULCRH_WLEN_6BIT     	0x20#define ULCRH_WLEN_5BIT      	0x00/*[4] FIFO*/#define ULCRH_FEN    	0x10/*[3] Stop Bit*/#define ULCRH_STP2	0x08/*[2] Even Parity Select*/#define ULCRH_EPS 	0x04/*[1] Parity Enable*/#define ULCRH_PEN	0x02/*[0] Send Break*/#define ULCRH_BRK	0x01/*--------------------------------------*//*Line Control Constants: UARTx_LCRM*//*[7:0] Baud Rate*/#define ULCRM_460800	0x00#define ULCRL_460800	0x01#define ULCRM_230400	0x00#define ULCRL_230400	0x03#define ULCRM_115200	0x00#define ULCRL_115200	0x07#define ULCRM_76800	0x00#define ULCRL_76800	0x0B#define ULCRM_57600	0x00#define ULCRL_57600	0x0F#define ULCRM_38400  0x0#define ULCRL_38400  0x17#define ULCRM_19200  0x00#define ULCRL_19200  0x2F#define ULCRM_14400	0x00#define ULCRL_14400	0x3F#define ULCRM_9600	0x0#define ULCRL_9600	0x5F#define ULCRM_2400	0x00#define ULCRL_2400	0x7F#define ULCRM_1200	0x00#define ULCRL_1200	0xFF/*Control Register Constants: UARTx_CR*//*[7] Loop Back Enable*/#define UCR_LBE		0x80/*[6] Receive Timeout Interrupt Enable*/#define UCR_RTIE	0x40/*[5] Transmit Interrupt Enable*/#define UCR_TIE		0x20/*[4] Receive Interrupt Enable*/#define UCR_RIE		0x10/*[3] Modem Status Interrupt Enable*/#define UCR_MSIE	0x08/*[0] UART Enable*/#define UCR_UARTEN	0x01/*Flag Register Constants UARTx_FR*//*[7] Transmit FIFO Empty*/#define UFR_TXFE	0x80/*[6] Receive FIFO Full*/#define UFR_RXFF	0x40/*[5] Transmit FIFO Full*/#define UFR_TXFF	0x20/*[4] Receive FIFO Empty*/#define UFR_RXFE	0x10/*[3] UART Busy*/#define UFR_BUSY	0x08/*[2] Data Carrier Detect*/#define UFR_DCD		0x04/*[1] Data Set Ready*/#define UFR_DSR		0x02/*[0] Clear To Send*/#define UFR_CTS		0x01/*Interrupt Identifier Constants: UARTx_IIR*//*[3] Receive Timeout Interrupt Status*/#define IIR_TRIS	0x08/*[2] Transmit Interrupt Status*/#define IIR_TIS		0x04/*[1] Receive Interrupt Status*/#define IIR_RIS		0x02/*[0] Modem Interrupt Status*/#define IIR_MIS		0x01#ifndef _MACRO_ONLY/* * 柒垄UART脱 词白SIOドライバ *//* * カ〖ネル弹瓢箕脱の介袋步(sys_putcを蝗脱するため) */extern void uart_init(void);/* *  シリアルI/Oポ〖ト介袋步ブロック */typedef struct sio_port_initialization_block {    VP uart_data;    VP uart_control;    VP linectrl_lo;    VP linectrl_mid;    VP linectrl_hi;    VP int_identifier;    VP flag_register;    VW irq_bit;}SIOPINIB;/* *  シリアルI/Oポ〖ト瓷妄ブロックの年盗 */typedef struct sio_port_control_block {    const SIOPINIB  *siopinib;  /* シリアルI/Oポ〖ト介袋步ブロック */    VP_INT          exinf;       /* 橙磨攫鼠 */    BOOL    openflag;       /* オ〖プン貉みフラグ */    BOOL    sendflag;     /* 流慨充哈みイネ〖ブルフラグ */    BOOL    getready;     /* 矢机を减慨した觉轮 */    BOOL    putready;        /* 矢机を流慨できる觉轮 */}SIOPCB;/* *  コ〖ルバックル〖チンの急侍戎规 */#define SIO_ERDY_SND    1u      /* 流慨材墙コ〖ルバック */#define SIO_ERDY_RCV    2u      /* 减慨奶梦コ〖ルバック *//* *  オンチップのUARTからのポ〖リング叫蜗 */extern void uart_putc(char c);/* *  SIOドライバの介袋步ル〖チン */extern void uart_initialize(void);/* *  オ〖プンしているポ〖トがあるか々 */extern BOOL uart_openflag(void);/* *  シリアルI/Oポ〖トのオ〖プン */extern SIOPCB   *uart_opn_por(ID siopid, VP_INT exinf);/* *  シリアルI/Oポ〖トのクロ〖ズ */extern void uart_cls_por(SIOPCB *siopcb);/* *  シリアルI/Oポ〖トへの矢机流慨 */extern BOOL uart_snd_chr(SIOPCB *siopcb, char c);/* *  シリアルI/Oポ〖トからの矢机减慨 */extern INT  uart_rcv_chr(SIOPCB *siopcb);/* *  シリアルI/Oポ〖トからのコ〖ルバックの钓材 */extern void uart_ena_cbr(SIOPCB *siopcb, UINT cbrtn);/* *  シリアルI/Oポ〖トからのコ〖ルバックの敦贿 */extern void uart_dis_cbr(SIOPCB *siopcb, UINT cbrtn);/* *  SIOの充哈みサ〖ビスル〖チン */extern void uart_in_isr(void);extern void uart_out_isr(void);/* *  シリアルI/Oポ〖トからの流慨材墙コ〖ルバック */extern void uart_ierdy_snd(VP_INT exinf);/* *  シリアルI/Oポ〖トからの减慨奶梦コ〖ルバック */extern void uart_ierdy_rcv(VP_INT exinf);#endif /* _MACRO_ONLY *//* *   TM controller */#define TIMER_BASE_REG     0x13000000/*timer 1*/#define TM1_LOAD  (TIMER_BASE_REG + 0x100)#define TM1_VAL   (TIMER_BASE_REG + 0x104)#define TM1_CTRL  (TIMER_BASE_REG + 0x108)#define TM1_CLR   (TIMER_BASE_REG + 0x10c)/*timer 0*/#define TM2_LOAD   (TIMER_BASE_REG + 0x200)#define TM2_VAL    (TIMER_BASE_REG + 0x204)#define TM2_CTRL   (TIMER_BASE_REG + 0x208)#define TM2_CLR    (TIMER_BASE_REG + 0x20C)/*Timer Constants*/#define TCTRL_STOP 0x0 /*start bit (7th bit) enabled *periodic bit (6th bit) enabled */#define TCTRL_START 0xC0#define TCLR_CLEAR 0x01#define  TCTRL_D016  0x04#define  TCTRL_D256 0x08/*disable timer1 interrupt*/#define TCLR_DISABLE 0x20/*-------------------------------------------------*//*キャッシュ肋年¨ARM920T*/#define ICACHE_ENABLE_BIT 12#define RESERVED_BIT      6#define CACHE_ENABLE 0x1078#endif  /*  _INTEGRATOR_H_ */

⌨️ 快捷键说明

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