📄 debug.c
字号:
/******************************************************************************
Copyright (c) 2003 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: Debug.c
[Date]: 10-Nov-2003
[Comment]:
Uart subroutines.
[Reversion History]:
*******************************************************************************/
#define _DEBUG_C_
// Common
#include "define.h"
#include "mcu.h"
#include "userdef.h"
// External
#include "common.h"
#include "uart.h"
#include "board.h"
#include "ram.h"
#include "i2c.h"
#include "ir.h"
#include "irFunc.h"
#include "global.h"
#include "userpref.h"
// Internal
#include "debug.h"
#if (!VERSION_DEBUG)
code BYTE tDummydata_Debug[] =
{
0x00,
};
#endif
#define _DEBUG_OUTPUT_EN_ 0
///////////////////////////////////////////////////////
// Test command
///////////////////////////////////////////////////////
void ExecTestCommand(void)
{
//BYTE ucBank = msReadByte(0);
//printf(" [TestCmd=%x] ", g_UartCommand.Buffer[_UART_CMD_INDEX1_] );
switch (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
{
#if (_DEBUG_TESTCOMMAND_EN_)
case 0x28:
printf("\r\n Current Write: %x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
i2cWriteCurrent(g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
break;
case 0x29:
printf("\r\n Current Write: %x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
i2cWriteByte(g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_], g_UartCommand.Buffer[_UART_CMD_INDEX4_]);
break;
#endif
case 0x50:
g_bDebugProgStopFlag = !g_bDebugProgStopFlag;
if (g_bDebugProgStopFlag)
putstr("\r\n<Debug>");
else
putstr("\r\n<Free>");
break;
#if (_DEBUG_TESTCOMMAND_EN_)
//Ir is Start from 0x90~0xDF,Please don't use 0x90.
case 0x90: // Ir_
g_ucIrCode = IRKEY_POWER;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x91:
g_ucIrCode = IRKEY_MTS;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x92:
g_ucIrCode = IRKEY_VOL_DOWN;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x94:
g_ucIrCode = IRKEY_TVMENU;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x95:
g_ucIrCode = IRKEY_CC;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x96:
g_ucIrCode = IRKEY_SMODE;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x97:
g_ucIrCode = IRKEY_1;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x98:
g_ucIrCode = IRKEY_4;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x99:
g_ucIrCode = IRKEY_7;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0x9a:
g_ucIrCode = IRKEY_INPUT;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA1:
g_ucIrCode = IRKEY_CH_UP;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA2:
//g_ucIrCode = IRKEY_OSD_ENTER;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA3:
g_ucIrCode = IRKEY_CH_DOWN;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA5:
g_ucIrCode = IRKEY_ASPECT_RATIO;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA6:
g_ucIrCode = IRKEY_PMODE;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA7:
g_ucIrCode = IRKEY_2;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA8:
g_ucIrCode = IRKEY_5;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xA9:
g_ucIrCode = IRKEY_8;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xAA:
g_ucIrCode = IRKEY_0;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB0:
g_ucIrCode = IRKEY_MUTE;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB1:
g_ucIrCode = IRKEY_AAA;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = 1;
break;
case 0xB2:
g_ucIrCode = IRKEY_VOL_UP;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB4:
//g_ucIrCode = IRKEY_SS;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB5:
//g_ucIrCode = IRKEY_PIP;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB6:
g_ucIrCode = IRKEY_DISPLAY;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB7:
g_ucIrCode = IRKEY_3;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB8:
g_ucIrCode = IRKEY_6;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xB9:
g_ucIrCode = IRKEY_9;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xBA:
g_ucIrCode = IRKEY_STILL;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xC0:
g_ucIrCode = IRKEY_ATSC;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xC5:
g_ucIrCode = IRKEY_SLEEP;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xC6:
g_ucIrCode = IRKEY_CH_RECALL;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xC8:
g_ucIrCode = IRKEY_CC;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xC9:
g_ucIrCode = IRKEY_LOCK;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xCA:
g_ucIrCode = IRKEY_NAVI;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
case 0xE7: // IIC Device test
if (i2c_AccessStart(g_UartCommand.Buffer[_UART_CMD_INDEX2_], I2C_TRANS_WRITE) == TRUE) // write command
printf("\r\nIIC[0x%x] OK", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
else
putstr("\r\nNG");
break;
case 0xFFFF: //dummy for delete warning..
g_ucIrCode = IRKEY_NAVI;
g_IrCodeParam[5] = FALSE;
g_bIrDetect = TRUE;
break;
#endif
}
//msWriteByte( BK0_00, ucBank );
}
void uartDecodeCommand(void)
{
if (_testbit_(g_bUartDetected)) // check command flag
{
#if (_DEBUG_EXTDEV_EN_)
if (UART_EXT)
;//tDecodeExtCommand();
else
#endif
uartDecodeNormalCommand();
}
}
///////////////////////////////////////
// Decode Uart command
///////////////////////////////////////
void uartDecodeNormalCommand(void)
{
#if (_DEBUG_RW_REG_EN_)
XDATA WORD uwEEADDR;
#endif
switch (UART_CMD)
{
case kEnter_ISP:
{
// new check ISP command
if (UART_CMD_LENGTH != 3)
break;
if (g_UartCommand.Buffer[_UART_CMD_INDEX1_] != 0x55 || g_UartCommand.Buffer[_UART_CMD_INDEX2_] != 0xaa)
break;
#ifdef MCU_MTV412M
//pwPowerOffSystem();
Enter_MTV412_ISP();
#endif
#ifdef MCU_W78E65
pwPowerOffSystem();
CHPENR = 0x87; // CHPENR = 0x59, enable CHPCON register write attribute
CHPENR = 0x59; // CHPENR = 0x59, enable CHPCON register write attribute
CHPCON = 0x03; // CHPCON = 0x03, enter in-system programming mode
CHPENR = 0x00; // CHPENR = 0x00, disable CHPCON write attribute
TR0 = 0; // Timer0 stop
IP = 0x00; // Set interrupt priority
EA = 1; // Set single interrupt
ET0 = 1; // Enable TIMER0 iterrrupt
// Timer0 interrupt enable for wake-up from INDLE mode
// Set time for enter ISP mode about 1.676 us
TL0 = 0xf0; // TL0 = 0xf0
TH0 = 0xff; // TH0 = 0xff
TMOD |= 0x01; // Set Timer0 mode 1 (16-bit timer)
TR0 = 1; // Start Timer0
PCON = 0x01; // Enter IDLE mode for launching the in-system programmability
#endif
#ifdef MCU_W77E532
//P4 = 0x00;
pwPowerOffSystem();
IE = 0;
TCON = 0;
TA = 0xAA;
TA = 0x55;
TURBO_CHPCON = 0x03; // CHPCON = 0x03, enter in-system programming mode
TA = 0x00;
TR0 = 0; // Timer0 stop
IP = 0x00; // Set interrupt priority
EA = 1; // Set single interrupt
ET0 = 1; // Enable TIMER0 iterrrupt
// Timer0 interrupt enable for wake-up from INDLE mode
// Set time for enter ISP mode about 1.676 us
TL0 = 0xf0; // TL0 = 0xf0
TH0 = 0xff; // TH0 = 0xff
TMOD |= 0x01; // Set Timer0 mode 1 (16-bit timer)
TR0 = 1; // Start Timer0
PCON = 0x01; // Enter IDLE mode for launching the in-system programmability
#endif
break;
}
#if (_DEBUG_EXTDEV_EN_)
case kWrite_MCU:
#ifndef MCU_MTV412M
{
switch (UART_CMD_MS_REG)
{
case MCU_P0:
P0 = UART_CMD_MS_DAT;
break;
case MCU_P1:
P1 = UART_CMD_MS_DAT;;
break;
case MCU_P2:
P2 = UART_CMD_MS_DAT;;
break;
case MCU_P3:
P3 = UART_CMD_MS_DAT;;
break;
case MCU_P4:
P4 = UART_CMD_MS_DAT;;
break;
case MCU_TCON:
TCON = UART_CMD_MS_DAT;;
break;
case MCU_TMOD:
TMOD = UART_CMD_MS_DAT;;
break;
case MCU_PCON:
PCON = UART_CMD_MS_DAT;;
break;
case MCU_IE:
IE = UART_CMD_MS_DAT;;
break;
case MCU_IP:
IP = UART_CMD_MS_DAT;;
break;
case MCU_SCON:
SCON = UART_CMD_MS_DAT;;
break;
}
if (!g_bDebugASCIICommandFlag)
putchar(0xF1);
break;
}
#endif
case kRead_MCU:
#ifndef MCU_MTV412M
{
switch (UART_CMD_MS_REG)
{
case MCU_P0:
UART_CMD_MS_DAT = P0;
break;
case MCU_P1:
UART_CMD_MS_DAT = P1;
break;
case MCU_P2:
UART_CMD_MS_DAT = P2;
break;
case MCU_P3:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -