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 + -
显示快捷键?