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

📄 sh3.h

📁 嵌入式系统开发 TOPPERS and JSP Kernel Release 1.3 TOPPERS = Toyohashi Open Platform for Embedded Real-Tim
💻 H
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *  *  惧淡螟侯涪荚は·Free Software Foundation によって给山されている  *  GNU General Public License の Version 2 に淡揭されている掘凤か·笆 *  布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ *  アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ *      ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 *      に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· *      この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 *      み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ *    (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 *        涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する *        ことˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚を倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· *  塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ *  ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい *  かなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: sh3.h,v 1.4 2002/04/05 07:43:51 honda Exp $ */#ifndef _SH3_H_#define _SH3_H_/* *  SH3(SH7709A,SH7709,SH7708)の柒婶レジスタ年盗 */typedef unsigned char   byte;typedef volatile byte   IOREG;          typedef unsigned short  word;typedef volatile word   HIOREG;typedef volatile int    LIOREG;/* *  毋嘲イベントレジスタ */#define TRA	        0xFFFFFFD0		#define EXPEVT	    0xFFFFFFD4		#define INTEVT	    0xFFFFFFD8		#define INTEVT2	    0xA4000000		/* *   バスステ〖トコントロ〖ラ簇息 */#define	RFCR	((HIOREG *)(0xffffff74))	#define    RFCR_CLEAR         0xa400/* * 充り哈みによってINTEVT2レジスタに肋年される猛 */#define    TMU0_INTEVT        0x400#define    IRQ0_INTEVT        0x600#define    SCI_RXI_INTEVT     0x500#define    SCI_TXI_INTEVT     0x520#define    SCI_BRI_INTEVT     0x4ed#define    SCI1_RXI_INTEVT    0x8a0#define    SCI1_TXI_INTEVT    0x8e0#define    SCI1_BRI_INTEVT    0x8c0#define    SCIF_RXI_INTEVT    0x920#define    SCIF_TXI_INTEVT    0x960#define    SCIF_BRI_INTEVT    0x940        /* * 充り哈みコントロ〖ラ〖レジスタ〖 */#define	ICR0	((HIOREG *)(0xfffffee0))	#define	ICR1	((HIOREG *)(0xa4000010))	#define	ICR2	((HIOREG *)(0xa4000012))	#define	PINTER	((HIOREG *)(0xa4000014))	#define	IPRA	((HIOREG *)0xfffffee2)		#define	IPRB	((HIOREG *)0xfffffee4)		#define	IPRC	((HIOREG *)(0xa4000016))	#define	IPRD	((HIOREG *)(0xa4000018))	#define	IPRE	((HIOREG *)(0xa400001a))	#define	IRR0	((IOREG  *)(0xa4000004))	#define	IRR1	((IOREG  *)(0xa4000006))	#define	IRR2	((IOREG  *)(0xa4000008))	/* * タイマ〖レジスタ */typedef struct{    IOREG  TOCR;    IOREG  dummy1;    IOREG  TSTR;    IOREG  dummy2;    LIOREG TCOR0;    LIOREG TCNT0;    HIOREG TCR0;    LIOREG TCOR1;    LIOREG TCNT1;    HIOREG TCR1;    LIOREG TCOR2;    LIOREG TCNT2;    HIOREG TCR2;} tmu;#define TMU  (*(volatile tmu *)0xfffffe90)                              #define	TMU_STR0	0x01#define	TMU_STR1	0x02#define	TMU_STR2	0x04#define TCR_UNF     0x0100    /* *  シリアルコミュニケ〖ションインタ〖フェ〖ス(SCI) */typedef struct{    IOREG  SCSMR;    IOREG  dummy1;        IOREG  SCBRR;    IOREG  dummy2;        IOREG  SCSCR;    IOREG  dummy3;            IOREG  SCTDR;    IOREG  dummy4;                IOREG  SCSSR;    IOREG  dummy5;                IOREG  SCRDR;} sci;#define SCI (*(volatile sci *)0xfffffe80)/* *  シリアルコミュニケ〖ションインタ〖フェ〖ス(SCI)の *  ポ〖トSCコントロ〖ル/デ〖タレジスタ *  SH7709第びSH7709Aのみ */#define	SCPCR	((IOREG  *)(0xa4000136))	#define	SCPDR	((HIOREG *)(0xa4000116))	/* *  シリアルコミュニケ〖ションインタ〖フェ〖ス(SCI)の *  シリアルポ〖トレジスタ *  SH7708のみ */#define	SCSPTR	((HIOREG *)(0xffffff7c))	#define	SCSMR_CHR	  0x0040#define	SCSMR_PE	  0x0020#define	SCSMR_OE	  0x0010#define	SCSMR_STOP	  0x0008#define	SCSMR_CKS1	  0x0002#define	SCSMR_CKS0	  0x0001#define SCSCR_TIE	  0x0080#define SCSCR_RIE	  0x0040#define SCSCR_TE	  0x0020#define SCSCR_RE	  0x0010#define SCSCR_CKE1	  0x0002#define SCSCR_CKE0	  0x0001#define SCSSR_TDRE	  0x80#define SCSSR_RDRF	  0x40#define SCSSR_ORER	  0x20#define SCSSR_FER	  0x10#define SCSSR_PER	  0x08#define SCSSR_TEND	  0x04#define SCSSR_MPB	  0x02#define SCSSR_MPBT	  0x01/* *  FIFO烧きシリアルコミュニケ〖ションインタ〖フェ〖ス(SCIF)レジスタ *  SH7709第びSH7709Aのみ */typedef struct{    IOREG  SCSMR2;    IOREG  dummy1;        IOREG  SCBRR2;    IOREG  dummy2;        IOREG  SCSCR2;    IOREG  dummy3;            IOREG  SCFTDR2;    IOREG  dummy4;                HIOREG SCSSR2;    IOREG  SCFRDR2;    IOREG  dummy5;                    IOREG  SCFCR2;    IOREG  dummy6;                        HIOREG SCFDR2;} scif;#define SCIF (*(volatile scif *)0xa4000150)#define	SCSMR2_CHR	  0x0040#define	SCSMR2_PE	  0x0020#define	SCSMR2_OE	  0x0010#define	SCSMR2_STOP	  0x0008#define	SCSMR2_CKS1	  0x0002#define	SCSMR2_CKS0	  0x0001#define SCSCR2_TIE	  0x0080#define SCSCR2_RIE	  0x0040#define SCSCR2_TE	  0x0020#define SCSCR2_RE	  0x0010#define SCSCR2_CKE1	  0x0002#define SCSCR2_CKE0	  0x0001#define SCSSR2_ER	  0x0080#define SCSSR2_TEND	  0x0040#define SCSSR2_TDFE	  0x0020#define SCSSR2_BRK	  0x0010#define SCSSR2_FER	  0x0008#define SCSSR2_PER	  0x0004#define SCSSR2_RDF	  0x0002#define SCSSR2_DR	  0x0001#define SCFCR2_RTRG1  0x0080#define SCFCR2_RTRG0  0x0040#define SCFCR2_TTRG1  0x0020#define SCFCR2_TTRG0  0x0010#define SCFCR2_MCE	  0x0008#define SCFCR2_TFRST  0x0004#define SCFCR2_RFRST  0x0002#define SCFCR2_LOOP	  0x0001/* *  IrDA (SCI1)レジスタ *  SH7709第びSH7709Aのみ */typedef struct{    IOREG  SCSMR1;    IOREG  dummy1;        IOREG  SCBRR1;    IOREG  dummy2;        IOREG  SCSCR1;    IOREG  dummy3;            IOREG  SCFTDR1;    IOREG  dummy4;                HIOREG SCSSR1;    IOREG  SCFRDR1;    IOREG  dummy5;                    IOREG  SCFCR1;    IOREG  dummy6;                        HIOREG SCFDR1;} sci1;#define SCI1 (*(volatile sci1 *)0xa4000140)#define	SCSMR1_IRMOD    0x0080#define	SCSMR1_CHR	    0x0040#define	SCSMR1_PE	    0x0020#define	SCSMR1_OE	    0x0010#define	SCSMR1_STOP	    0x0008#define	SCSMR1_CKS1	    0x0002#define	SCSMR1_CKS0	    0x0001#define SCSCR1_TIE      0x0080#define SCSCR1_RIE      0x0040#define SCSCR1_TE       0x0020#define SCSCR1_RE       0x0010#define SCSCR1_CKE1     0x0002#define SCSCR1_CKE0     0x0001#define SCSSR1_ER	0x0080#define SCSSR1_TEND	0x0040#define SCSSR1_TDFE	0x0020#define SCSSR1_BRK	0x0010#define SCSSR1_FER	0x0008#define SCSSR1_PER	0x0004#define SCSSR1_RDF	0x0002#define SCSSR1_DR	0x0001#define SCFCR1_RTRG1    0x0080#define SCFCR1_RTRG0    0x0040#define SCFCR1_TTRG1    0x0020#define SCFCR1_TTRG0    0x0010#define SCFCR1_MCE      0x0008#define SCFCR1_TFRST    0x0004#define SCFCR1_RFRST    0x0002#define SCFCR1_LOOP     0x0001/* * キャッシュ扩告レジスタ */#define	CCR	((LIOREG *)0xffffffec)	/* *  gdb stubによる叫蜗 */Inline intstub_putc(int c){  Asm("mov #0x00,r0; mov %0,r4; trapa #0x3f"               : /* no output */               : "r"(c)               : "r0","r4");  return(c);}/* *   SH7709A第びSH7709のSCIFへのポ〖リングでの叫蜗 */Inline intscif_putc(int c){    /* Wait TDRD = 1 */    while((SCIF.SCSSR2 & SCSSR2_TDFE)==0);    SCIF.SCFTDR2=c;    SCIF.SCSSR2 = SCIF.SCSSR2 & ~SCSSR2_TDFE;    return(c);}    /* *  SCIによる叫蜗 */Inline intsci_putc(int c){    /* Wait TDRD = 1 */    while((SCI.SCSSR & SCSSR_TDRE)==0);    SCI.SCTDR=c;    SCI.SCSSR = SCI.SCSSR & ~SCSSR_TDRE;    return(c);}#endif /* _SH3_H_ */

⌨️ 快捷键说明

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