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

📄 microblaze.h

📁 toppers操作系统源码
💻 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 + -