📄 nios2.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2005 by Embedded and Real-Time Systems Laboratory * Graduate School of Information Science, Nagoya Univ., JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: nios2.h,v 1.5 2005/03/11 07:37:57 honda Exp $ */#ifndef _NIOSII_H_#define _NIOSII_H_#ifndef _MACRO_ONLY#include <itron.h>#endif /* _MACRO_ONLY *//* * 充哈みビット */#define STATUS_U 0x02#define STATUS_PIE 0x01/* * 充哈みの眶 */#define MAX_INT_NUM 32/* * 毋嘲の改眶 */#define MAX_EXC_NUM 32/* * Timer * Full-featuredサポ〖ト *//* * オフセット猛 */#define TIM_STATUS_OFFSET 0x00#define TIM_CONTROL_OFFSET 0x04#define TIM_PERIODL_OFFSET 0x08#define TIM_PERIODH_OFFSET 0x0C#define TIM_SNAPL_OFFSET 0x10#define TIM_SNAPH_OFFSET 0x14#define TIM_STATUS_RUN 0x02#define TIM_STATUS_TO 0x01#define TIM_CONTROL_STOP 0x08#define TIM_CONTROL_START 0x04#define TIM_CONTROL_COUNT 0x02#define TIM_CONTROL_ITO 0x01/* * */#define TIM_STATUS (TIM_BASE + TIM_STATUS_OFFSET)#define TIM_CONTROL (TIM_BASE + TIM_CONTROL_OFFSET)#define TIM_PERIODL (TIM_BASE + TIM_PERIODL_OFFSET)#define TIM_PERIODH (TIM_BASE + TIM_PERIODH_OFFSET)#define TIM_SNAPL (TIM_BASE + TIM_SNAPL_OFFSET)#define TIM_SNAPH (TIM_BASE + TIM_SNAPH_OFFSET)/* * UART */#define UART_RXDATA_OFFSET 0x00#define UART_TXDATA_OFFSET 0x04#define UART_STATUS_OFFSET 0x08#define UART_CONTROL_OFFSET 0x0C#define UART_DIVISOR_OFFSET 0x10#define UART_ENDOFPACKET_OFFSET 0x1C#define UART_STATUS_EOP 0x1000#define UART_STATUS_CTS 0x0800#define UART_STATUS_DCTS 0x0400#define UART_STATUS_E 0x0100#define UART_STATUS_RRDY 0x0080#define UART_STATUS_TRDY 0x0040#define UART_STATUS_TMT 0x0020#define UART_STATUS_TOE 0x0010#define UART_STATUS_ROE 0x0008#define UART_STATUS_BRK 0x0004#define UART_STATUS_FE 0x0002#define UART_STATUS_PE 0x0001#define UART_CONTROL_IEOP 0x1000#define UART_CONTROL_RTS 0x0800#define UART_CONTROL_IDCTS 0x0400#define UART_CONTROL_TRDK 0x0200#define UART_CONTROL_IE 0x0100#define UART_CONTROL_IRRDY 0x0080#define UART_CONTROL_ITRD 0x0040#define UART_CONTROL_ITMT 0x0020#define UART_CONTROL_ITOE 0x0010#define UART_CONTROL_IROE 0x0008#define UART_CONTROL_IBRK 0x0004#define UART_CONTROL_IFE 0x0002#define UART_CONTROL_IPE 0x0001#define UART_RXDATA (UART_BASE + UART_RXDATA_OFFSET)#define UART_TXDATA (UART_BASE + UART_TXDATA_OFFSET)#define UART_STATUS (UART_BASE + UART_STATUS_OFFSET)#define UART_CONTROL (UART_BASE + UART_CONTROL_OFFSET)#define UART_DIVISOR (UART_BASE + UART_DIVISOR_OFFSET)#define UART_ENDOFPACKET (UART_BASE + UART_ENDOFPACKET_OFFSET)/* * JTAG UART簇息 */ #define JTAG_UART_DATA_OFFSET 0x00#define JTAG_UART_CONTROL_OFFSET 0x04#define JTAG_UART_DATA_RVALID 0x8000#define JTAG_UART_CONTROL_RIE 0x01#define JTAG_UART_CONTROL_WIE 0x02#define JTAG_UART_CONTROL_RIP 0x04#define JTAG_UART_CONTROL_WIP 0x08#define JTAG_UART_CONTROL_WSAPCE 0x0ffff0000#define JTAG_UART_DATA (UART_BASE + JTAG_UART_DATA_OFFSET)#define JTAG_UART_CONTROL (UART_BASE + JTAG_UART_CONTROL_OFFSET)#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){#ifndef USE_JTAG_UART while(!(sil_rew_mem((VP)UART_STATUS) & UART_STATUS_TRDY)); sil_wrw_mem((VP)UART_TXDATA, c);#else while(!((sil_rew_mem((VP)JTAG_UART_CONTROL) & JTAG_UART_CONTROL_WSAPCE) > 0)); sil_wrw_mem((VP)JTAG_UART_DATA, c); #endif /* USE_JTAG_UART */ }Inline unsigned charuart_getc(void){#ifndef USE_JTAG_UART while(!(sil_rew_mem((VP)UART_STATUS) & UART_STATUS_RRDY)); return (char)(sil_rew_mem((VP)UART_RXDATA));#else int tmp; do{ tmp = sil_rew_mem((VP)JTAG_UART_DATA); }while((tmp &JTAG_UART_DATA_RVALID) == 0); return (char)tmp;#endif /* USE_JTAG_UART */ }/* * コ〖ルバックル〖チンの急侍戎规 * 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 /* _NIOSII_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -