m8260Sio.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* m8260Sio.h - Motorola MPC8260 SIO header file */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,05jun02,pmr  SPR 78051: fixed typo
  7. 01d,09may02,gjc  Fixing SPR #75922.
  8. 01c,12sep99,ms_  move I/O Port definitions to m8260IOPort.h
  9. 01b,15jul99,ms_  fix to meet coding standards
  10. 01a,08mar99,ms_  adapted from h/drv/multi/ppc860Cpm.h
  11. */
  12. /*
  13.  * This file contains constants for an SIO using the Serial
  14.  * Communications Controller (SCC) of the Communications Processor 
  15.  * Module (CPM) of the Motorola MPC8260 PowerPC microcontroller.
  16.  */
  17. #ifndef __INCm8260Sioh
  18. #define __INCm8260Sioh
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. #ifndef _ASMLANGUAGE
  23. #include "sioLib.h"
  24. /* defines */
  25. #define DEFAULT_BAUD 9600
  26. #ifndef SCC_BUF
  27. #define SCC_BUF VINT8           /* byte so that offset works */
  28. #endif
  29. typedef struct
  30.     {
  31.     /* must be first */
  32.     SIO_DRV_FUNCS *pDrvFuncs; /* driver functions */
  33.     /* callbacks */
  34.     STATUS (* getTxChar) (); /* pointer to xmit function */
  35.     STATUS (* putRcvChar) (); /* pointer to recv function */
  36.     void *      getTxArg;
  37.     void *      putRcvArg;
  38.     VINT16 channelMode;  /* polled or interrupt driven */
  39.     int baudRate;
  40.     int sccNum; /* SCC associated with this channel */
  41.     VINT32 immrVal; /* Internal Memory Map Register */
  42.     char * pBdBase; /* Buffer Descriptor base */
  43.     char * rcvBufferAddr; /* address of receive buffer */
  44.     char * txBufferAddr; /* address of transmit buffer */
  45.     char ch;
  46.     VINT16 *    pRBASE;
  47.     VINT16 *    pTBASE;
  48.     } M8260_SCC_CHAN;
  49. #define M8260_SCC_BD_SIZE  8 /* size, in bytes, of a single BD */
  50. #define M8260_SCC_RCV_BD_OFF 0 /* offset from BD base to receive BD */
  51. #define M8260_SCC_TX_BD_OFF M8260_SCC_BD_SIZE
  52. /* offset from BD base to transmit BD, since there is just one BD each */
  53. #define M8260_SCC_BD_STAT_OFF 0 /* offset to status field */
  54. #define M8260_SCC_BD_LEN_OFF 2 /* offset to data length field */
  55. #define M8260_SCC_BD_ADDR_OFF 4 /* offset to address pointer field */
  56. #define M8260_SCC_NEXT_SCC_OFF 0x20 /* offset between SCCs */
  57. #define M8260_SCC_32_WR(addr, value) (* ((UINT32 *)(addr)) = ((UINT32) (value)))
  58.  
  59. #define M8260_SCC_16_WR(addr, value) (* ((UINT16 *)(addr)) = ((UINT16) (value)))
  60.  
  61. #define M8260_SCC_8_WR(addr, value) (* ((UINT8 *)(addr)) = ((UINT8) (value)))
  62.  
  63. #define M8260_SCC_32_RD(addr, value) ((value) = (* (UINT32 *) ((UINT32 *)(addr))))
  64.  
  65. #define M8260_SCC_16_RD(addr, value) ((value) = (* (UINT16 *) ((UINT16 *)(addr))))
  66.  
  67. #define M8260_SCC_8_RD(addr, value) ((value) = (* (UINT8 *) ((UINT8 *)(addr))))
  68. #if defined(__STDC__)
  69. IMPORT void    m8260SioDevInit (M8260_SCC_CHAN *);
  70. IMPORT  void    m8260SioInt     (M8260_SCC_CHAN *);
  71. IMPORT  UINT32  vxImmrGet   (void);
  72. #else   /* __STDC__ */
  73. IMPORT void    m8260SioDevInit ();
  74. IMPORT  void    m8260SioInt ();
  75. IMPORT  UINT32  vxImmrGet ();
  76. #endif  /* __STDC__ */
  77. #endif  /* _ASMLANGUAGE */
  78. #ifdef __cplusplus
  79. }
  80. #endif
  81. #endif /* __INCm8260Sioh */