📄 microblaze.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2002 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: microblaze.h,v 1.1 2002/04/05 08:47:14 honda Exp $ */#ifndef _MICROBLAZE_H_#define _MICROBLAZE_H_#include "sys_config.h"#ifndef _MACRO_ONLYtypedef unsigned char byte;typedef volatile byte IOREG; typedef unsigned short word;typedef volatile word HIOREG;typedef volatile int LIOREG;#endif /* _MACRO_ONLY *//* * MSRのビット */#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#ifndef _MACRO_ONLY#define INTC_ISR ((LIOREG *)(INTC_BASE + INTC_INT_STATUS_REG))#define INTC_IPR ((LIOREG *)(INTC_BASE + INTC_INT_PENDING_REG))#define INTC_IER ((LIOREG *)(INTC_BASE + INTC_INT_ENABLE_REG))#define INTC_IAR ((LIOREG *)(INTC_BASE + INTC_INT_ACK_REG))#define INTC_SIE ((LIOREG *)(INTC_BASE + INTC_SET_INT_ENABLE))#define INTC_CIE ((LIOREG *)(INTC_BASE + INTC_CLEAR_INT_ENABLE))#define INTC_IVR ((LIOREG *)(INTC_BASE + INTC_INT_VECTOR_REG))#define INTC_MER ((LIOREG *)(INTC_BASE + INTC_MASTER_ENABLE_REG))/* * INTC拎侯簇眶 */Inline voidintc_start(void){ *INTC_MER = INTC_HIE_MASK | INTC_ME_MASK;}Inline voidintc_disable_allinterrupt(){ *INTC_MER = 0;}Inline voidintc_enable_interrupt(UW mask){ *INTC_SIE = mask;}Inline voidintc_disable_interrupt(UW mask){ *INTC_CIE = mask;}Inline voidintc_ack_interrupt(UW mask){ *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#ifndef _MACRO_ONLY#define TIMER_TCSR0 ((LIOREG *)(TIMER_BASE + TIMER_CONTROL_STATUS_0))#define TIMER_TCCR0 ((LIOREG *)(TIMER_BASE + TIMER_COMPARE_CAPTURE_0))#define TIMER_TCR0 ((LIOREG *)(TIMER_BASE + TIMER_COUNTER_0))#define TIMER_TCSR1 ((LIOREG *)(TIMER_BASE + TIMER_CONTROL_STATUS_1))#define TIMER_TCCR1 ((LIOREG *)(TIMER_BASE + TIMER_COMPARE_CAPTURE_1))#define TIMER_TCR1 ((LIOREG *)(TIMER_BASE + TIMER_COUNTER_1))#endif /* _MACRO_ONLY *//* * 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#ifndef _MACRO_ONLY#define UARTLITE_RXREG ((LIOREG *)(UART_BASE + UARTLITE_RECEIVE_REG))#define UARTLITE_TXREG ((LIOREG *)(UART_BASE + UARTLITE_TRANSMIT_REG))#define UARTLITE_SRREG ((LIOREG *)(UART_BASE + UARTLITE_STATUS_REG))#define UARTLITE_CTREG ((LIOREG *)(UART_BASE + UARTLITE_CONTROL_REG))Inline voiduart_putc(unsigned char c){ while(*UARTLITE_SRREG & UARTLITE_TX_FIFO_FULL); *UARTLITE_TXREG = c;}Inline unsigned charuart_getc(void){ while(!(*UARTLITE_SRREG & UARTLITE_RX_FIFO_VALID_DATA)); return (char)(*UARTLITE_RXREG);}Inline voiduart_ena_int(void){ *UARTLITE_CTREG |= UARTLITE_ENABLE_INTR;}Inline voiduart_dis_int(void){ *UARTLITE_CTREG &= ~(UARTLITE_ENABLE_INTR);}#endif /* _MACRO_ONLY */#endif /* _MICROBLAZE_H_*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -