📄 debug.c
字号:
//uwEEADDR = g_UartCommand.Buffer[_UART_CMD_INDEX1_] & 0x0E;
//uwEEADDR = (uwEEADDR << 7) + g_UartCommand.Buffer[_UART_CMD_INDEX2_];
NVRam_WriteByte(uwEEADDR, g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
if (!g_bDebugASCIICommandFlag) putchar(0xF1);
break;
}
case kRead_EEPROM:
{
WORD uwEEADDR;
uwEEADDR = MAKEWORD(g_UartCommand.Buffer[_UART_CMD_INDEX1_],g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
//uwEEADDR = g_UartCommand.Buffer[_UART_CMD_INDEX1_] & 0x0E;
//uwEEADDR = (uwEEADDR << 7) + g_UartCommand.Buffer[_UART_CMD_INDEX2_];
#if TV_ENABLE
NVRam_ReadByte(uwEEADDR,&(g_UartCommand.Buffer[_UART_CMD_INDEX3_]));
#endif
putchar(0xF2);
putchar(g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
if (g_bDebugASCIICommandFlag)
{
printf("EEPROM[0x%x]=", uwEEADDR);
printf("0x%x \r\n", g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
}
break;
}
case kRead_Device_B8:
{
//g_UartCommand.Buffer[_UART_CMD_INDEX3_] = i2cReadByte( g_UartCommand.Buffer[_UART_CMD_INDEX1_], g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
i2cBurstReadBytes(g_UartCommand.Buffer[_UART_CMD_INDEX1_], g_UartCommand.Buffer[_UART_CMD_INDEX2_],&g_UartCommand.Buffer[_UART_CMD_INDEX3_],1);
putchar(0xF2);
putchar(g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
if (g_bDebugASCIICommandFlag)
{
printf("I2C 0x%x ", g_UartCommand.Buffer[_UART_CMD_INDEX1_]);
printf("[0x%x]=", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
printf("0x%x \r\n", g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
}
}
break;
case kRead_Device_B16:
{
WORD wData;
putchar(0xF3);
i2cBurstReadBytes(g_UartCommand.Buffer[_UART_CMD_INDEX1_], g_UartCommand.Buffer[_UART_CMD_INDEX2_], (BYTE *)&wData, sizeof(wData));
putchar(HIBYTE(wData));
putchar(LOBYTE(wData));
if (g_bDebugASCIICommandFlag)
{
printf("I2C 0x%x ", g_UartCommand.Buffer[_UART_CMD_INDEX1_]);
printf("[0x%x]=", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
printf("0x%x \r\n", g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
}
}
break;
case kWrite_Device:
{
if(UART_CMD_LENGTH==5)
{
WORD wData;
wData = ((WORD)(g_UartCommand.Buffer[_UART_CMD_INDEX3_]))<<8;
wData = wData + (WORD)(g_UartCommand.Buffer[_UART_CMD_INDEX4_]);
i2cBurstWriteBytes(g_UartCommand.Buffer[_UART_CMD_INDEX1_], g_UartCommand.Buffer[_UART_CMD_INDEX2_], (BYTE *)&wData, sizeof(wData));
if (!g_bDebugASCIICommandFlag) putchar(0xF1);
}
else
{
i2cWriteByte( g_UartCommand.Buffer[_UART_CMD_INDEX1_], g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
if (!g_bDebugASCIICommandFlag) putchar(0xF1);
}
}
break;
#if 0//(DIGITAL_VD_SELECT == VIDEO_DECODER_VPC323X)
case kWrite_VPC32xx_FP:
{
WORD wData,wAddress;
wAddress = MAKEWORD(g_UartCommand.Buffer[_UART_CMD_INDEX2_] , g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
wData = MAKEWORD(g_UartCommand.Buffer[_UART_CMD_INDEX4_], g_UartCommand.Buffer[_UART_CMD_INDEX5_]);
vdVpcAccessWrite_FP(g_UartCommand.Buffer[_UART_CMD_INDEX1_], wAddress, wData);
if (!g_bDebugASCIICommandFlag) putchar(0xF1);
}
break;
#endif
case kRead_VPC32xx_FP:
{
#if 0//(DIGITAL_VD_SELECT == VIDEO_DECODER_VPC323X)
WORD wAddress;
wAddress = MAKEWORD(g_UartCommand.Buffer[_UART_CMD_INDEX2_] , g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
wAddress = vdVpcAccessRead_FP(g_UartCommand.Buffer[_UART_CMD_INDEX1_], wAddress);
putchar(0xF3);
putchar(HIBYTE(wAddress));
putchar(LOBYTE(wAddress));
#else
putchar(0xF3);
putchar(0);
putchar(0);
#endif
}
break;
#endif
// Test Only
case kTest_Command:
ExecTestCommand();
break;
} // switch
msWriteByte(BK0_00_REGBK, ucBank);
}
}
#if (_DEBUG_PRINT_EN_)
void putSIOChar(unsigned char sendData)
{
#if (IR_TIMER_SEL == IR_USE_TIMER1)
if (g_bUartDisable) // check flag
return;
#endif
EA = 0; // disable all interrupt
SBUF = sendData; // transfer to uart
// wait transfer completing
#if (IR_TIMER_SEL == IR_USE_TIMER1)
while(1) { if (TI || g_bUartDisable) break; } // check flag
#else
while(1) { if (TI) break; } // check flag
#endif
TI = 0; // clear flag
EA = 1; // release all interrupt
}
#endif
//////////////////////////////////////////////////////////////
// Put character to uart
//
// Arguments: ucVal - output character
//////////////////////////////////////////////////////////////
void putchar(BYTE ucVal)
{
#if (_DEBUG_RW_REG_EN_||_DEBUG_PRINT_EN_)
#if (IR_TIMER_SEL == IR_USE_TIMER1)
if (g_bUartDisable) // check flag
return;
#endif
ES = 0; // disable uart interrupt
SBUF = ucVal; // transfer to uart
// wait transfer completing
#if (IR_TIMER_SEL == IR_USE_TIMER1)
while(1) { if (TI || g_bUartDisable) break; } // check flag
#else
while(1) { if (TI) break; } // check flag
#endif
TI = 0; // clear flag
ES = _DEBUG_EXTDEV_EN_;// 1; // release uart interrupt
#endif
}
//////////////////////////////////////////////////////////////////////////////
// Put string to uart.
//
// Arguments: pFmt - string address
//////////////////////////////////////////////////////////////////////////////
#if (_DEBUG_PRINT_EN_)
void putstr(BYTE *pFmt)
{
BYTE ucBff; // character buffer
while (1)
{
ucBff = *pFmt; // get a character
if (ucBff == _EOS_) // check end of string
break;
putchar(ucBff); // put a character
pFmt++; // next
} // while
}
#endif
/*
//////////////////////////////////////////////////////////////////////////////
// Put string to uart with variable argument
//
// Arguments: pFmt - string address
// wVal - print variable
//////////////////////////////////////////////////////////////////////////////
#if (_DEBUG_PRINT_EN_)
void IntToStr( WORD wVal, BYTE ucBase, BYTE* pBuf )
{
BOOL bShowZero = FALSE;
WORD wDivider;
BYTE ucDisp;
if( 0 == wVal )
{
pBuf[0] = '0';
pBuf[1] = '\0';
return;
}
if( 16 == ucBase )
wDivider = 0x1000;
else
wDivider = 10000;
while( wDivider )
{
ucDisp = wVal/wDivider;
wVal = wVal%wDivider;
if( ucDisp )
bShowZero = TRUE;
if( ucDisp || bShowZero )
{
if( ucDisp < 10 )
*pBuf = '0' + ucDisp;
else
*pBuf = 'A' + ucDisp - 10;
pBuf ++;
}
if( 16 == ucBase )
wDivider /= 0x10;
else
wDivider /= 10;
}
*pBuf = '\0';
}
#endif
XDATA BYTE s_Buf[6];
void printf( BYTE code *pFmt, WORD wVal )
{
#if (_DEBUG_PRINT_EN_)
BYTE ucBff;
while( ucBff = *(pFmt++) )
{
if(ucBff == '%') // check special case
{
switch( *(pFmt++) ) // check next character
{
case 'x': // hexadecimal number
case 'X':
IntToStr( wVal, 16, s_Buf );
putstr( s_Buf );
break;
case 'd': // decimal number
case 'i':
IntToStr( wVal, 10, s_Buf );
putstr( s_Buf );
break;
} // switch
}
else // general
putchar(ucBff); // put a character
} // while
#endif
}
*/
#define _EOS_ '\0' // end of string
void printMsg(char *str)
{
#if (_DEBUG_PRINT_EN_)
BYTE ucBff;
putSIOChar((char)'\r');
putSIOChar((char)'\n');
while (1)
{
ucBff = *str;
if (ucBff == _EOS_)
break;
putSIOChar(ucBff);
str++;
}
#else
str=str;
#endif
}
void printf(char *str, WORD value)
{
#if (_DEBUG_PRINT_EN_)
char sendData;//=Send_MsgValue;
while (sendData=*(str++))
{
if (sendData==(char)'%') // %
{
sendData=*(str++);
if (sendData==(char)'d' || sendData==(char)'x') // d
{
if (value)
{
BOOL noneZero=FALSE;
WORD divider=10000;
char dispValue;
if (sendData==(char)'x')
divider=0x1000;
while (divider)
{
dispValue=value/divider;
value-=dispValue*divider;
if (dispValue)
noneZero=TRUE;
if (noneZero)
{
if (dispValue>9)
dispValue+=55;
else
dispValue+=0x30;
putSIOChar(dispValue);
}
if (sendData==(char)'d')
divider/=10;
else
divider/=0x10;
}
}
else
putSIOChar('0');
}
}
else
putSIOChar(sendData);
}
#else
str=str;
value=value;
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -