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

📄 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 *  Copyright (C) 2003      by Advanced Data Controls, Corp *  Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory *              Graduate School of Information Science, Nagoya Univ., JAPAN *  *  惧淡螟侯涪荚は·笆布の (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.2 2004/05/26 19:14:24 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"/* * CMxx Base Address */#define CM_BASE  0x10000000/* * CM Registers */#define CM_ID           (CM_BASE)#define CM_PROC         (CM_BASE + 0004)#define CM_OSC          (CM_BASE + 0x008)#define CM_CTRL         (CM_BASE + 0x00c)#define CM_STAT         (CM_BASE + 0x010)#define CM_LOCK         (CM_BASE + 0x014)#define CM_SDRAM        (CM_BASE + 0x020)#define CM_IRQ_STAT     (CM_BASE + 0x040)#define CM_IRQ_RSTAT    (CM_BASE + 0x044)#define CM_IRQ_ENSET    (CM_BASE + 0x048)#define CM_IRQ_ENCLR    (CM_BASE + 0x04c)#define CM_SOFT_INTSET  (CM_BASE + 0x050)#define CM_SOFT_INTCLR  (CM_BASE + 0x054)#define CM_FIR_STAT     (CM_BASE + 0x060)#define CM_FIR_RSTAT    (CM_BASE + 0x064)#define CM_FIR_ENSET    (CM_BASE + 0x068)#define CM_FIR_ENCLR    (CM_BASE + 0x06c)#define CM_SPD          (CM_BASE + 0x100)/* * Core module oscillator register : CM_OSC */#define L_OD_MASK        (0x7 << 20)#define L_OD_DIV10       (0x0 << 20)#define L_OD_DIV2        (0x1 << 20)#define L_OD_DIV8        (0x2 << 20)#define L_OD_DIV4        (0x3 << 20)#define L_OD_DIV5        (0x4 << 20)#define L_OD_DIV7        (0x5 << 20)#define L_OD_DIV9        (0x6 << 20)#define L_OD_DIV6        (0x7 << 20)#define L_VDW_MASK       (0xff << 12)#define L_VDW(x)         ((x) << 12)#define LCLK_MASK        (L_OD_MASK | L_VDW_MASK)#define LCLK_20MHZ       (L_OD_DIV2 | L_VDW( 0x20))#define LCLK_33MHZ       (L_OD_DIV2 | L_VDW( 0x3a))#define LCLK_50MHZ       (L_OD_DIV2 | L_VDW( 0x5c))#define LCLK_66MHZ       (L_OD_DIV2 | L_VDW( 0x7c))#define C_OD_MASK        (0x7 << 8)#define C_OD_DIV10       (0x0 << 8)#define C_OD_DIV2        (0x1 << 8)#define C_OD_DIV8        (0x2 << 8)#define C_OD_DIV4        (0x3 << 8)#define C_OD_DIV5        (0x4 << 8)#define C_OD_DIV7        (0x5 << 8)#define C_OD_DIV9        (0x6 << 8)#define C_OD_DIV6        (0x7 << 8)#define C_VDW_MASK       (0xff << 0)#define C_VDW(x)         ((x) << 0)#define CORECLK_MASK     (C_OD_MASK | C_VDW_MASK)#define CORECLK_50MHZ    (C_OD_DIV2 | C_VDW( 0x2a))#define CORECLK_66MHZ    (C_OD_DIV2 | C_VDW( 0x3a))#define CORECLK_100MHZ   (C_OD_DIV2 | C_VDW( 0x5c))#define CORECLK_133MHZ   (C_OD_DIV2 | C_VDW( 0x7d))#define CORECLK_150MHZ   (C_OD_DIV2 | C_VDW( 0x8e))#define CORECLK_160MHZ   (C_OD_DIV2 | C_VDW( 0x98))/* * Core module control register : CM_CTRL */#define CM_CTRL_RESET 0x08#define CM_CTRL_REMAP 0x04#define CM_CTRL_LED   0x01/* * Core modeule lock register : CM_LOCK */#define CM_LOCK_LOCKED   0x0100#define LOCKVAL_LOCK     0x0000#define LOCKVAL_UNLOCK   0xa05f/* * Integrator AP Peripheral Base Address  *  */#define IRQ_BASE_REG      0x14000000#define TIMER_BASE_REG    0x13000000#define UART0_BASE_REG    0x16000000#define UART1_BASE_REG    0x17000000/* * Interrupt Control Registers */#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/* * UART0 Control Registers */#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 Constantse: 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/* * Timer 1 Control Registers */#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 Control Registers */#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 : TMx_CTRL and TMx_CLR */#define TCTRL_STOP 0x0 /* * start bit (7th bit) enabled * periodic bit (6th bit) enabled */#define TCTRL_START 0x80#define TCLR_CLEAR  0x01#define TCTRL_PERIODIC 0x40#define TCTRL_D016 0x04#define TCTRL_D256 0x08/*disable timer1 interrupt*/#define TCLR_DISABLE 0x20#ifndef _MACRO_ONLY/* * 柒垄UART脱 词白SIOドライバ *//* * カ〖ネル弹瓢箕脱の介袋步(sys_putcを蝗脱するため) */extern void init_uart(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 */#endif /*  _INTEGRATOR_H_ */

⌨️ 快捷键说明

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