📄 microblaze.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 * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: microblaze.h,v 1.6 2004/02/05 09:16:25 honda Exp $ */#ifndef _MICROBLAZE_H_#define _MICROBLAZE_H_#ifndef _MACRO_ONLY#include <itron.h>#include <sil.h>#endif /* _MACRO_ONLY *//* * MSRのビット */#define MSR_CC 0x80000000#define MSR_DCE 0x80#define MSR_DZ 0x40#define MSR_ICE 0x20#define MSR_FSL 0x10#define MSR_BIP 0x08#define MSR_C 0x04#define MSR_IE 0x02#define MSR_BE 0x01/* * INTC Registers */#define INTC_INT_STATUS_REG 0x00#define INTC_INT_PENDING_REG 0x04#define INTC_INT_ENABLE_REG 0x08#define INTC_INT_ACK_REG 0x0c#define INTC_SET_INT_ENABLE 0x10#define INTC_CLEAR_INT_ENABLE 0x14#define INTC_INT_VECTOR_REG 0x18#define INTC_MASTER_ENABLE_REG 0x1c/* * Masks for the INTC Registers */#define INTC_HIE_MASK 0x2#define INTC_ME_MASK 0x1#define INTC_ISR (INTC_BASE + INTC_INT_STATUS_REG)#define INTC_IPR (INTC_BASE + INTC_INT_PENDING_REG)#define INTC_IER (INTC_BASE + INTC_INT_ENABLE_REG)#define INTC_IAR (INTC_BASE + INTC_INT_ACK_REG)#define INTC_SIE (INTC_BASE + INTC_SET_INT_ENABLE)#define INTC_CIE (INTC_BASE + INTC_CLEAR_INT_ENABLE)#define INTC_IVR (INTC_BASE + INTC_INT_VECTOR_REG)#define INTC_MER (INTC_BASE + INTC_MASTER_ENABLE_REG)#ifndef _MACRO_ONLY/* * INTC拎侯簇眶 */Inline voidintc_start(void){ sil_wrw_mem((VP)INTC_MER, INTC_HIE_MASK | INTC_ME_MASK);}Inline voidintc_disable_allinterrupt(){ sil_wrw_mem((VP)INTC_MER, 0);}Inline voidintc_enable_interrupt(UW mask){ sil_wrw_mem((VP)INTC_SIE, mask);}Inline voidintc_disable_interrupt(UW mask){ sil_wrw_mem((VP)INTC_CIE, mask);}Inline voidintc_ack_interrupt(UW mask){ sil_wrw_mem((VP)INTC_IAR, mask);}#endif /* _MACRO_ONLY *//* * タイマドライバ脱のマクロ年盗 *//* * Masks for the control/status register */#define TIMER_ENABLE_ALL 0x400#define TIMER_PWM 0x200#define TIMER_INTERRUPT 0x100#define TIMER_ENABLE 0x080#define TIMER_ENABLE_INTR 0x040#define TIMER_RESET 0x020#define TIMER_RELOAD 0x010#define TIMER_EXT_CAPTURE 0x008#define TIMER_EXT_COMPARE 0x004#define TIMER_DOWN_COUNT 0x002#define TIMER_CAPTURE_MODE 0x001#define TIMER_CONTROL_STATUS_0 0x0#define TIMER_COMPARE_CAPTURE_0 0x4#define TIMER_COUNTER_0 0x8#define TIMER_CONTROL_STATUS_1 0x10#define TIMER_COMPARE_CAPTURE_1 0x14#define TIMER_COUNTER_1 0x18#define TIMER_TCSR0 (TIMER_BASE + TIMER_CONTROL_STATUS_0)#define TIMER_TCCR0 (TIMER_BASE + TIMER_COMPARE_CAPTURE_0)#define TIMER_TCR0 (TIMER_BASE + TIMER_COUNTER_0)#define TIMER_TCSR1 (TIMER_BASE + TIMER_CONTROL_STATUS_1)#define TIMER_TCCR1 (TIMER_BASE + TIMER_COMPARE_CAPTURE_1)#define TIMER_TCR1 (TIMER_BASE + TIMER_COUNTER_1)/* * UARTドライバ脱のマクロ年盗 *//* * Error condition masks */#define UARTLITE_PAR_ERROR 0x80#define UARTLITE_FRAME_ERROR 0x40#define UARTLITE_OVERRUN_ERROR 0x20/* * Other status bit masks */#define UARTLITE_INTR_ENABLED 0x10#define UARTLITE_TX_FIFO_FULL 0x08#define UARTLITE_TX_FIFO_EMPTY 0x04#define UARTLITE_RX_FIFO_FULL 0x02#define UARTLITE_RX_FIFO_VALID_DATA 0x01/* * Control bit masks */#define UARTLITE_ENABLE_INTR 0x10#define UARTLITE_RST_RX_FIFO 0x02#define UARTLITE_RST_TX_FIFO 0x01/* * UARTLITE Registers */#define UARTLITE_RECEIVE_REG 0x0#define UARTLITE_TRANSMIT_REG 0x4#define UARTLITE_STATUS_REG 0x8#define UARTLITE_CONTROL_REG 0xc#define UARTLITE_RXREG (UART_BASE + UARTLITE_RECEIVE_REG)#define UARTLITE_TXREG (UART_BASE + UARTLITE_TRANSMIT_REG)#define UARTLITE_SRREG (UART_BASE + UARTLITE_STATUS_REG)#define UARTLITE_CTREG (UART_BASE + UARTLITE_CONTROL_REG)#ifndef _MACRO_ONLY/* * 柒垄UART脱 词白SIOドライバ *//* * シリアルI/Oポ〖ト介袋步ブロック */typedef struct sio_port_initialization_block {} 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;extern SIOPCB siopcb_table[];#define uart_openflag (siopcb_table[0].openflag)Inline voiduart_putc(unsigned char c){ while(sil_rew_mem((VP)UARTLITE_SRREG) & UARTLITE_TX_FIFO_FULL); sil_wrw_mem((VP)UARTLITE_TXREG, c);}Inline unsigned charuart_getc(void){ while(!(sil_rew_mem((VP)UARTLITE_SRREG) & UARTLITE_RX_FIFO_VALID_DATA)); return (char)(sil_rew_mem((VP)UARTLITE_RXREG));}/* * コ〖ルバックル〖チンの急侍戎规 * OPB_UARTLITE は·流减慨充哈みが尸かれていないため·罢蹋はないˉ */#define SIO_ERDY_SND 1u /* 流慨材墙コ〖ルバック */#define SIO_ERDY_RCV 2u /* 减慨奶梦コ〖ルバック *//* * SIOドライバの介袋步ル〖チン */extern void uart_initialize(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, INT chr);/* * シリアル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_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 /* _MICROBLAZE_H_*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -