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

📄 vr4131_icu.h

📁 符合日本著名的ITRON规范的开源操作系统。 TOPPERS/JSP内核就是TOPPERS工程按μITRON4.0研发的第一个 软件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* *  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) 2000-2003 by Industrial Technology Institute, *                              Miyagi Prefectural Government, JAPAN *  *  惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation  *  によって给山されている GNU General Public License の Version 2 に淡 *  揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア *  を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 *      脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 *      荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 *      の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 *      脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ *      とˉ *    (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 *        侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに *        鼠桂することˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お *  よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も *  崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 *  儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ */#ifndef _VR4131_ICU_H_#define _VR4131_ICU_H_/* *  充哈みコントロ〖ラ(ICU)簇犯の年盗 *//*  充哈み戎规の年盗∈0-7戎は mips3.h で蝗脱。8戎笆惯を回年する。∷ *//*  SYSINT1REG  */#define INTNO_BAT        8	/*  バッテリ充哈み  */#define INTNO_POWER      9	/*  パワ〖スイッチ充哈み  */#define INTNO_RTCL1     10	/*  RTCLong1充哈み  */#define INTNO_ETIME     11	/*  ElipsedTimeタイマ充哈み */#define INTNO_GIU       12	/*  GIU充哈み  */#define INTNO_SIU       13	/*  SIU充哈み  */#define INTNO_SOFTINT   14	/*  ソフトウェア充哈み  */#define INTNO_CLKRUN    15	/*  CLKRUN充哈み  *//*  SYSINT2REG  */#define INTNO_RTCL2     16	/*  RTCLong2充哈み  */#define INTNO_LED       17	/*  LED充哈み  */#define INTNO_TCLK      18	/*  TClockカウンタ充哈み  */#define INTNO_FIR       19	/*  FIR充哈み  */#define INTNO_DSIU      20	/*  DSIU充哈み  */#define INTNO_PCI       21	/*  PCI充哈み  */#define INTNO_SCU       22	/*  SCU充哈み  */#define INTNO_CSI       23	/*  CSI充哈み  */#define INTNO_BCU       24	/*  BCU充哈み  *//*  充哈みコントロ〖ラが瓷妄する充哈みの塑眶  */#define TMAX_ICU_INTNO	17u/*  充哈みコントロ〖ラのレジスタのアドレス年盗  *//* 笆布の xxx_asm、xxx_offset は、アセンブラでの网脱羹け。 */#define ICU_BASE_ADDR		0x0f000000#define ICU_BASE_ADDR_asm	ASM_SIL( ICU_BASE_ADDR )#define SYSINT1_offset		0x80#define MSYSINT1_offset		0x8c#define MDSIUINT_offset		0x96#define SYSINT2_offset		0xa0#define MSYSINT2_offset		0xa6#define MSYSINT1REG	(ICU_BASE_ADDR + MSYSINT1_offset)				/* システム充哈みマスクレジスタ1(レベル1) */#define MDSIUINTREG	(ICU_BASE_ADDR + MDSIUINT_offset)				/* DSIU充哈みマスクレジスタ(レベル2)  */#define MSYSINT2REG	(ICU_BASE_ADDR + MSYSINT2_offset)				/* システム充哈みマスクレジスタ2(レベル1) *//*  充哈み妥傍ビットパタ〖ン (布淡、アセンブラ婶尸でも网脱している。) *//* MSYSINT1REG / SYSINT1REG 簇犯 */#define CLKRUNINTR	BIT12	/* CLKRUN 充哈み */#define SOFTINTR	BIT11	/* ソフトウェア充哈み */#define SIUINTR		BIT9	/* SIU 充哈み */#define	GIUINTR		BIT8	/* GIU(布疤) 充哈み */#define	ETIMERINTR	BIT3	/* ElapsedTimeタイマ 充哈み */#define RTCL1INTR	BIT2	/* RTCLong1タイマ 充哈み */#define POWERINTR	BIT1	/* パワ〖スイッチ充哈み */#define BATINTR		BIT0	/* バッテリ充哈み *//* MSYSINT2REG / SYSINT2REG 簇犯 */#define BCUINTR		BIT9	/* BCU 充哈み */#define CSIINTR		BIT8	/* CSI 充哈み */#define SCUINTR		BIT7	/* SCU 充哈み */#define PCIINTR		BIT6	/* PCI 充哈み */#define DSIUINTR	BIT5	/* DSIU 充哈み */#define FIRINTR		BIT4	/* FIR 充哈み */#define TCLKINTR	BIT3	/* VTClockカウンタ 充哈み */#define LEDINTR		BIT1	/* LED 充哈み */#define RTCL2INTR	BIT0	/* RTCLong2 充哈み *//* MDSIUINTREG 簇犯 */#define INTDSIU  	BIT11	/* DSIUの恃步充哈み钓材 *//* *  充哈みコントロ〖ラの充哈みマスク簇犯 *//*  菇陇挛ICU_IPM柒のオフセットを滇めるためのマクロ∈makeoffset.cで脱いる∷    なお、このマクロで年盗した猛は、泼に网脱していない。*/#define OFFSET_DEF_ICU_IPM	OFFSET_DEF(ICU_IPM, msysint2)/*  MSYSINT1,2に肋年してはいけないビット  */#define NG_BIT_MSYSINT1	(BIT4 | BIT5 | BIT6 | BIT7 | BIT10 | BIT13 |BIT14 | BIT15)#define NG_BIT_MSYSINT2	(BIT2 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | BIT15)/*  充哈みコントロ〖ラに肋年する充哈みマスクのチェック  */#define CHECK_ICU_IPM(ipm)						\		CHECK_PAR(!(ipm.msysint1 & NG_BIT_MSYSINT1));		\		CHECK_PAR(!(ipm.msysint2 & NG_BIT_MSYSINT2))#ifndef _MACRO_ONLY/*  充哈みコントロ〖ラに滦する充哈みマスクの导击テ〖ブル  */extern ICU_IPM icu_intmask_table[];/*  充哈みコントロ〖ラのintmaskテ〖ブルの肋年  */Inline void icu_set_ilv(INTNO intno, ICU_IPM *ipm) {	/* CHECK_ICU_IPM(ipm) は、惧疤ル〖チンで悸乖貉み */	icu_intmask_table[intno].msysint1 = ipm->msysint1;	icu_intmask_table[intno].msysint2 = ipm->msysint2;}/*  充り哈みコントロ〖ラのマスク肋年  */Inline void icu_set_ipm(ICU_IPM *ipm) {	/* CHECK_ICU_IPM(ipm) は、惧疤ル〖チンで悸乖貉み */	vr4131_wrh_mem( (VP) MSYSINT1REG, ipm->msysint1 );	vr4131_wrh_mem( (VP) MSYSINT2REG, ipm->msysint2 );}/*  充り哈みコントロ〖ラのマスク艰评  */Inline void icu_get_ipm(ICU_IPM *ipm) {	ipm->msysint1 = vr4131_reh_mem( (VP) MSYSINT1REG );	ipm->msysint2 = vr4131_reh_mem( (VP) MSYSINT2REG );}#endif /* _MACRO_ONLY *//*============================================================================*//*  アセンブラ借妄簇犯  *//*  充哈み钓材ビットの略闰と牲傅  *//*  充哈みコントロ〖ラICUのIPMをスタックに瘦赂  */#define PUSH_ICU_IPM						\    li      t1, ICU_BASE_ADDR_asm;				\    addi    sp, sp, -2*2;					\    lh      t3, MSYSINT1_offset(t1);	/* t3 = MSYSINT1REG */	\    lh      t4, MSYSINT2_offset(t1);	/* t4 = MSYSINT2REG */	\    sh      t3, (sp);						\    sh      t4, 2(sp)/*  充哈みコントロ〖ラICUのIPMをスタックから牲傅  */#define POP_ICU_IPM							      \    li      t1, ICU_BASE_ADDR_asm;					      \    lw      t3, (sp);			/* t3 = MSYSINT2REG:MSYSINT1REG */    \					/* 庙罢¨リトルエンディアン巴赂 */    \    sh      t3, MSYSINT1_offset(t1);	/* MSYSINT1REG = t3の布疤2バイト*/    \    srl     t4, t3, 16;							      \    sh      t4, MSYSINT2_offset(t1);	/* MSYSINT2REG = t3の惧疤2バイト*/    \    addi    sp, sp, 2*2/*  充哈みコントロ〖ラICUのIPMを肋年  *//*      t0に充哈み妥傍戎规が掐った觉轮で钙ばれる  *//*      t0の柒推を蝉してはいけない  *//*      t1に充哈み妥滇クリアの年眶が掐っているので撬蝉してはならない。  */#define SET_ICU_IPM							      \    la      t4, icu_intmask_table;	/* デ〖タテ〖ブルの黎片アドレス */    \    sll     t2, t0, 2;			/* オフセット♂充哈み妥傍戎规∵4擒 */ \    li      t3, ICU_BASE_ADDR_asm;					      \    add     t4, t4, t2;			/* 黎片アドレス≤オフセット */        \    lw      t5, (t4);			/* t5 = MSYSINT2REG:MSYSINT1REG */    \					/* 庙罢¨リトルエンディアン巴赂 */    \    sh      t5, MSYSINT1_offset(t3);	/* MSYSINT1REG = t5の布疤2バイト */   \    srl     t6, t5, 16;							      \    sh      t6, MSYSINT2_offset(t3)	/* MSYSINT2REG = t5の惧疤2バイト *//*  デバイス叹から改侍借妄を鸥倡するマクロ      充哈み妥傍を t0 に掐れて proc_END に若ぶ  */#define MAKE_PROC(device)	\proc_##device:			\    li      t0, INTNO_##device;	\    j       proc_END;		\

⌨️ 快捷键说明

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