📄 vr4131_dsiu.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 * 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_DSIU_H_#define _VR4131_DSIU_H_#include <t_config.h>/* * VR4131柒垄デバッグシリアルインタフェ〖スユニット(DSIU)簇息の年盗 * (词白NS16550) *//* DSIUレジスタのアドレス */#define DSIURB (BASE_ADDR + 0x0f000820) /* 减慨バッファレジスタ(リ〖ド箕) */#define DSIUTH (BASE_ADDR + 0x0f000820) /* 流慨瘦积レジスタ(ライト箕) */#define DSIUDLL (BASE_ADDR + 0x0f000820) /* 尸件孺布疤レジスタ */#define DSIUIE (BASE_ADDR + 0x0f000821) /* 充哈み钓材レジスタ */#define DSIUDLM (BASE_ADDR + 0x0f000821) /* 尸件孺惧疤レジスタ */#define DSIUIID (BASE_ADDR + 0x0f000822) /* 充哈み山绩レジスタ(リ〖ド箕) */#define DSIUFC (BASE_ADDR + 0x0f000822) /* FIFO 扩告レジスタ(ライト箕) */#define DSIULC (BASE_ADDR + 0x0f000823) /* ライン扩告レジスタ */#define DSIUMC (BASE_ADDR + 0x0f000824) /* モデム扩告レジスタ */#define DSIULS (BASE_ADDR + 0x0f000825) /* ライン觉轮レジスタ */#define DSIUMS (BASE_ADDR + 0x0f000826) /* モデム觉轮レジスタ */#define DSIUSC (BASE_ADDR + 0x0f000827) /* スクラッチレジスタ *//* for DSIULC */#define WORD_LENGTH_8 BIT1 | BIT0#define STOP_BITS_1 0 /* BIT2 */#define PARITY_NON 0 /* BIT3, 4 *//* BIT5,6 臼维 */#define DIVISOR_LATCH_ACC BIT7/* for DSIUIE */#define DIS_INT 0#define RECEIVE_DATA_AVAILABLE BIT0#define TRANS_REG_EMPTY BIT1#define RECEIVE_LINE_STATUS BIT2#define MODEM_STATUS BIT3/* for DSIUMC */#define DTR BIT0#define RTS BIT1/* for DSIUFC */#define FIFO_ENABLE BIT0#define RECEIVE_FIFO_RESET BIT1#define TRANS_FIFO_RESET BIT2#define RECEIVE_TRIG_1_BYTE 0 /* BIT6, 7 */#define RECEIVE_TRIG_4_BYTE BIT6#define RECEIVE_TRIG_8_BYTE BIT7#define RECEIVE_TRIG_14_BYTE BIT6 | BIT7/* for DSIUIID */#define INT_MASK 0x0e#define INT_RECEIVE_DATA BIT2#define INT_CHAR_TIME_OUT BIT3 | BIT2#define INT_TRANS_EMPTY BIT1/* ボ〖レ〖ト年盗簇犯 */#define DIVISOR XIN_CLOCK / (16 * DEVIDE_RATIO)/* * シリアルI/Oポ〖ト介袋步ブロック */typedef struct sio_port_control_block SIOPCB;/* * コ〖ルバックル〖チンの急侍戎规 */#define SIO_ERDY_SND 1u /* 流慨材墙コ〖ルバック */#define SIO_ERDY_RCV 2u /* 减慨奶梦コ〖ルバック *//* * SIOドライバの介袋步ル〖チン */extern void vr4131_dsiu_initialize(void);/* * オ〖プンしているポ〖トがあるか々 */extern BOOL vr4131_dsiu_openflag(void);/* * シリアルI/Oポ〖トのオ〖プン */extern SIOPCB *vr4131_dsiu_opn_por(ID siopid, VP_INT exinf);/* * シリアルI/Oポ〖トのクロ〖ズ */extern void vr4131_dsiu_cls_por(SIOPCB *siopcb);/* * シリアルI/Oポ〖トへの矢机流慨 */extern BOOL vr4131_dsiu_snd_chr(SIOPCB *siopcb, char c);/* * シリアルI/Oポ〖トからの矢机减慨 */extern INT vr4131_dsiu_rcv_chr(SIOPCB *siopcb);/* * シリアルI/Oポ〖トからのコ〖ルバックの钓材 */extern void vr4131_dsiu_ena_cbr(SIOPCB *siopcb, UINT cbrtn);/* * シリアルI/Oポ〖トからのコ〖ルバックの敦贿 */extern void vr4131_dsiu_dis_cbr(SIOPCB *siopcb, UINT cbrtn);/* * SIOの充哈みサ〖ビスル〖チン */extern void vr4131_dsiu_dsiu_isr(void);/* * シリアルI/Oポ〖トからの流慨材墙コ〖ルバック */extern void vr4131_dsiu_ierdy_snd(VP_INT exinf);/* * シリアルI/Oポ〖トからの减慨奶梦コ〖ルバック */extern void vr4131_dsiu_ierdy_rcv(VP_INT exinf);/*============================================================================*//* 笆布は、塑碰はvr4131_dsiu_sil.hというファイルに掐るべきだと蛔う。 *//* * デバイスレジスタのアクセス粗持箕粗∈nsec帽疤∷ */#define VR4131_DSIU_DELAY 100u /* 猛に含凋はない *//* * デバイスレジスタのアクセス粗持箕粗∈ポ〖リング叫蜗羹け〃nsec帽疤∷ * * ˇ脱庞毋¨弹瓢箕のバナ〖叫蜗 * ˇ猛は、kseg1(キャッシュ铜跟箕)での瓢侯箕に、矢机を皖とさない镍刨に肋年 * ˇkseg0(キャッシュ痰跟箕)での瓢侯箕は、 * VR4131_DSIU_DELAY_POR = 1000000u 镍刨に肋年すると、ちょうど紊い。 */#define VR4131_DSIU_DELAY_POR 100000000u/* * デバイスレジスタへのアクセス簇眶 */Inline UB vr4131_dsiu_read_reg( VP reg ) { UB val; /* ここで、regの认跋チェックを掐れらればうれしいな。 */ val = sil_reb_mem( reg ); sil_dly_nse( VR4131_DSIU_DELAY ); return( val );}Inline void vr4131_dsiu_write_reg( VP reg, UB val) { /* ここで、regの认跋チェックを掐れらればうれしいな。 */ sil_wrb_mem( reg, (VB) (val & 0x000000ff) ); sil_dly_nse( VR4131_DSIU_DELAY );}/* ポ〖リング叫蜗 sys_putc(c) 羹け */Inline void vr4131_dsiu_write_por( VP reg, UB val) { /* ここで、regの认跋チェックを掐れらればうれしいな。 */ sil_wrb_mem( reg, (VB) (val & 0x000000ff) ); sil_dly_nse( VR4131_DSIU_DELAY_POR );}/*============================================================================*//* sys_config.c羹け(ポ〖リング叫蜗箕脱の呵你嘎の)シリアルコントロ〖ラの介袋步 */#define scc_init \ vr4131_dsiu_write_reg( (VP) DSIUIE, DIS_INT ); \ vr4131_dsiu_write_reg( (VP) DSIULC, WORD_LENGTH_8 | STOP_BITS_1 | PARITY_NON | DIVISOR_LATCH_ACC ); \ vr4131_dsiu_write_reg( (VP) DSIUDLL, LO8(DIVISOR) ); \ vr4131_dsiu_write_reg( (VP) DSIUDLM, HI8(DIVISOR) ); \ vr4131_dsiu_write_reg( (VP) DSIULC, WORD_LENGTH_8 | STOP_BITS_1 | PARITY_NON ); \ vr4131_dsiu_write_reg( (VP) DSIUIE, RECEIVE_DATA_AVAILABLE)#endif /* _VR4131_DSIU_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -