uartmodem.h

来自「OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI」· C头文件 代码 · 共 1,538 行 · 第 1/5 页

H
1,538
字号
/*
===============================================================================
            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION           
                                                                             
   Property of Texas Instruments 
   For  Unrestricted  Internal  Use  Only 
   Unauthorized reproduction and/or distribution is strictly prohibited.  
   This product is protected under copyright law and trade secret law 
   as an unpublished work.  
   Created 1999, (C) Copyright 1999 Texas Instruments.  All rights reserved.

   Filename             : uartmodem.h

   Description          : Header file for the UART MODEM connected to ARM9

   Project              : Perseus ... adapted for Helen

   Author               : Francis Huguenin
   Adaptation for Helen : Jean-Philippe Ulpiano

===============================================================================
*/
#ifndef _UARTMODEM__HH
#define _UARTMODEM__HH

#include "result.h"
#include "test.h"
#include "mapping.h"




typedef enum {
  UART_MODEM      =0,
  UART_EVALUATION =1,
  UART_BLUETOOTH  =2
} UARTMOD_UartType_t;

#ifdef SetGroupBits32
  #undef SetGroupBits32
#endif

#ifdef SetGroupBits16
  #undef SetGroupBits16
#endif

#ifdef SetGroupBits8
  #undef SetGroupBits8
#endif


#define SetGroupBits8(registre,position,width,value)\
                      registre&=~( (0xFF>> (8-(width)) ) <<(position) );\
                      registre|=( (value&(0xFF>> (8-(width)) )) <<(position) )

#define SetGroupBits16(registre,position,width,value)\
                       registre&=~((0xFFFF>>(16-(width)))<<(position));\
                       registre|=((value&(0xFFFF>>(16-(width))))<<(position))

#define SetGroupBits32(registre,position,width,value)\
                       registre&=~((0xFFFFFFFF>>(32-(width)))<<(position));\
                       registre|=((value&(0xFFFFFFFF>>(32-(width))))<<(position))

#define MAP_UART_GEN_REG(UartType)                                       \
  (UartType==UART_MODEM ? MAP_UART_MOD_REG :                              \
                          (UartType==UART_EVALUATION ? MAP_UART_EVAL_REG : \
                                                       MAP_UART_BT_REG))

#define SET_UART_ERROR(UartType,Error)                                  \
  (UartType==UART_MODEM ? UARTMOD_##Error :                              \
                          (UartType==UART_EVALUATION ? UARTEVAL_##Error : \
                                                       UARTBT_##Error))

#define GET_UART_FIELD(UartType,Field)                                  \
  (UartType==UART_MODEM ? UARTMOD_##Field :                              \
                          (UartType==UART_EVALUATION ? UARTEVAL_##Field : \
                                                       UARTBT_##Field))

#define ADJUST_OFFSET(UartType,Offset)                 \
  (UartType==UART_EVALUATION ? ((Offset)>>2) : (Offset))
                                                       
#define TEST_FIELD_RESET_VALUE_MOD(RegisterName, BitsName, UartType)\
      if(GetGroupBits8(RegisterName(UartType),                 \
                       (BitsName ## _POS),(BitsName ## _NUMB))!=      \
                       (BitsName ## _RES_VAL))                         \
      {                                                                 \
        if(UartType==UART_MODEM)                \
          RES_Set(BitsName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)        \
          RES_Set(BitsName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)           \
          RES_Set(BitsName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATAEXPECTED_DATAREAD);\
        RES_Set(BitsName ## _RES_VAL);\
        RES_Set(RegisterName(UartType));\
      }      


#define MODIFY_FIELD_RESET_VALUE_MOD(RegisterName,GroupBitName,UartType)\
                                                       \
      SetGroupBits8(RegisterName(UartType),             \
                     (GroupBitName ## _POS),             \
                     (GroupBitName ## _NUMB),             \
                     (~(GroupBitName ## _RES_VAL)));       \
      if(GetGroupBits8(RegisterName(UartType),              \
                        (GroupBitName ## _POS),              \
                        (GroupBitName ## _NUMB))!=            \
         GetGroupBits8(~(GroupBitName ## _RES_VAL),\
                        (GroupBitName ## _POS),     \
                        (GroupBitName ## _NUMB)))    \
      {                                               \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATA_STORE);                              \
        RES_Set(0x0001);                                   \
        RES_Set(DATAEXPECTED_DATAREAD);\
        RES_Set(~(GroupBitName ## _RES_VAL));\
        RES_Set(RegisterName(UartType));\
      }                                                     \
      SetGroupBits8(RegisterName(UartType),            \
                     (GroupBitName ## _POS),                  \
                     (GroupBitName ## _NUMB),                  \
                     (GroupBitName ## _RES_VAL))
      
#define MODIFY_FIELD_UNDEFINED_MOD(RegisterName,GroupBitName,UartType)\
                                                           \
      SetGroupBits8(RegisterName(UartType),           \
                   (GroupBitName ## _POS),                   \
                   (GroupBitName ## _NUMB),                   \
                   (~(GroupBitName ## _SET_VAL)));             \
      if(GetGroupBits8(RegisterName(UartType),      \
                       (GroupBitName ## _POS),             \
                       (GroupBitName ## _NUMB))!=           \
         GetGroupBits8(~(GroupBitName ## _SET_VAL),\
                        (GroupBitName ## _POS),             \
                        (GroupBitName ## _NUMB)))        \
      {                                                       \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATA_STORE);                              \
        RES_Set(0x0002);                                   \
      }                                                     \
      SetGroupBits8(RegisterName(UartType),            \
                   (GroupBitName ## _POS),                    \
                   (GroupBitName ## _NUMB),                    \
                   (GroupBitName ## _SET_VAL));                 \
      if(GetGroupBits8(RegisterName(UartType),             \
                       (GroupBitName ## _POS),             \
                       (GroupBitName ## _NUMB))!=           \
                       (GroupBitName ## _SET_VAL))           \
      {                                                       \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATA_STORE);                              \
        RES_Set(0x0003);                                   \
      }
      
// Functions Written
//-------------------

// READ_ACCESS_WORK_WITH_REGISTER(RegisterName,Width)

// TEST_FIELD_RES_VAL(GroupBitName,Width)

// END

#define UART_READ_ACCESS_WORK_WITH_REGISTER(RegisterName,UartType)\
{\
  UWORD32 OnlyUsedHereVar=RegisterName(UartType);


#define UART_TEST_FIELD_RES_VAL(GroupBitName,UartType)               \
                                                                      \
      if(GetGroupBits8(OnlyUsedHereVar,                                \
                       (GroupBitName ## _POS),(GroupBitName ## _NUMB))!=     \
                       (GroupBitName ## _RES_VAL))                            \
      {                                                                        \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATAEXPECTED_DATAREAD);                                 \
        RES_Set(GroupBitName ## _RES_VAL);                               \
        RES_Set(GetGroupBits8(OnlyUsedHereVar,                            \
                        (GroupBitName ## _POS),(GroupBitName ## _NUMB)));  \
      }

#define END }



/*
           Fastest Macros available
          ==========================
          

  + READWRITE_ACCESS_WORK_WITH_REGISTER(RegisterName,Width)

  + READWRITE_ACCESS_PREPARE_OPPOSED_MASK(GroupBitName,Width)

  + READWRITE_ACCESS_PREPARE_FIRST_UNDEFINED_MASK(GroupBitName,Width)
  
  + READWRITE_ACCESS_PREPARE_SECOND_UNDEFINED_MASK(GroupBitName,Width)

  + WRITE_MASK(RegisterName,Width)

  + READ_WRITE_CHECK_TEST_FIELD(GroupBitName,Width)
  
  + READ_WRITE_CHECK_FIRST_UNDEFINED_TEST_FIELD(GroupBitName,Width)

  + READ_WRITE_CHECK_SECOND_UNDEFINED_TEST_FIELD(GroupBitName,Width)

  + WRITE_PREVIOUS_VALUE(RegisterName,Width)

*/
                                                       
#define UART_READWRITE_ACCESS_WORK_WITH_REGISTER(RegisterName,UartType)\
{                                                               \
  UWORD8 OnlyUsedHereVar;                                  \
  UWORD8 CreateMaskVarOnlyUsedHereVar=RegisterName(UartType);
  

#define UART_WRITE_MASK(RegisterName,UartType)                 \
  RegisterName(UartType)=CreateMaskVarOnlyUsedHereVar;\
  OnlyUsedHereVar=RegisterName(UartType);
  
#define UART_READ_WRITE_CHECK_TEST_FIELD(GroupBitName,UartType)                    \
      if(GetGroupBits8(OnlyUsedHereVar,GroupBitName ## _POS,GroupBitName ## _NUMB)!=\
         GetGroupBits8(~(GroupBitName ## _RES_VAL),0,GroupBitName ## _NUMB))         \
      {                                                                                     \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATA_STORE);                                                                  \
        RES_Set(0x0001);                                                                       \
        RES_Set(DATAEXPECTED_DATAREAD);                                                         \
        RES_Set(GetGroupBits8(~(GroupBitName ## _RES_VAL),0,GroupBitName ## _NUMB));       \
        RES_Set(GetGroupBits8(OnlyUsedHereVar,GroupBitName ## _POS,GroupBitName ## _NUMB)); \
      }                                                             \
      SetGroupBits8(OnlyUsedHereVar,                                \
                     (GroupBitName ## _POS),                          \
                     (GroupBitName ## _NUMB),                          \
                     (GroupBitName ## _RES_VAL));

#define UART_READ_WRITE_CHECK_FIRST_UNDEFINED_TEST_FIELD(GroupBitName,UartType)    \
      if(GetGroupBits8(OnlyUsedHereVar,GroupBitName ## _POS,GroupBitName ## _NUMB)!=\
         GetGroupBits8(~(GroupBitName ## _SET_VAL),0,GroupBitName ## _NUMB))         \
      {                                                                                     \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATA_STORE);                                                                  \
        RES_Set(0x0002);                                                                       \
        RES_Set(DATAEXPECTED_DATAREAD);                                                         \
        RES_Set(GetGroupBits8(~(GroupBitName ## _SET_VAL),0,GroupBitName ## _NUMB));       \
        RES_Set(GetGroupBits8(OnlyUsedHereVar,GroupBitName ## _POS,GroupBitName ## _NUMB)); \
      }

#define UART_READ_WRITE_CHECK_SECOND_UNDEFINED_TEST_FIELD(GroupBitName,UartType)   \
      if(GetGroupBits8(OnlyUsedHereVar,GroupBitName ## _POS,GroupBitName ## _NUMB)!=\
         GetGroupBits8((GroupBitName ## _SET_VAL),0,GroupBitName ## _NUMB))          \
      {                                                                                     \
        if(UartType==UART_MODEM)                    \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE); \
        else if(UartType==UART_EVALUATION)            \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE1);  \
        else if(UartType==UART_BLUETOOTH)               \
          RES_Set(GroupBitName ## _BAD_RESET_VALUE2);    \
        RES_Set(DATA_STORE);                                                                  \
        RES_Set(0x0003);                                                                       \
        RES_Set(DATAEXPECTED_DATAREAD);                                                         \
        RES_Set(GetGroupBits8(~(GroupBitName ## _SET_VAL),0,GroupBitName ## _NUMB));       \
        RES_Set(GetGroupBits8(OnlyUsedHereVar,GroupBitName ## _POS,GroupBitName ## _NUMB)); \
      }

#define UART_WRITE_PREVIOUS_VALUE(RegisterName,UartType)\
  RegisterName(UartType)=OnlyUsedHereVar;



//----------------------------------------------------
//  UARTMOD_Error_t : ERROR raised on Reset Error
//----------------------------------------------------
typedef enum {
  UARTMOD_UIR_REG_RESET_ERROR  = 3,
  UARTMOD_IER_REG_RESET_ERROR  = 4,
  UARTMOD_IIR_REG_RESET_ERROR  = 5,
  UARTMOD_FCR_REG_RESET_ERROR  = 6,

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?