⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbgprc.c

📁 本程序为ST公司开发的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    current_micro_command = MC_RELOCK_PLL;    break;  case MC_CLV_2X:    set_speed(CLV | CLV_2X);    micro_command_result = IN_PROGRESS;    current_micro_command = MC_RELOCK_PLL;    break;  case MC_SCP_CLV_1X:    set_speed(SCP_CLV | CLV_1X);    micro_command_result = IN_PROGRESS;    current_micro_command = MC_RELOCK_PLL;    break;  case MC_SCP_CLV_2X:    set_speed(SCP_CLV | CLV_2X);    micro_command_result = IN_PROGRESS;    current_micro_command = MC_RELOCK_PLL;    break;  case MC_CLV_OFF:    set_speed(CDV | CDV_1X_IN_DISC);    micro_command_result = IN_PROGRESS;    current_micro_command = MC_RELOCK_PLL;    break;  case MC_AUDIO_ON:    audio_on();    micro_command_result = OK;    break;  case MC_AUDIO_OFF:    audio_off();    micro_command_result = OK;    break;  case MC_SHORT_JUMP_FWD:    delta_trk = 0x0100;    micro_command_result = short_jump();    break;  case MC_SHORT_JUMP_BWD:    delta_trk = -0x0100;    micro_command_result = short_jump();    break;  case MC_LONG_JUMP_FWD:    delta_trk = 0x1000;    micro_command_result = long_jump();    break;  case MC_LONG_JUMP_BWD:    delta_trk = -0x1000;    micro_command_result = long_jump();    break;  case MC_SLEDGE_HOME:    micro_command_result = sledge_home();    break;  case MC_SLEDGE_FWD:    sledge_param = (sint16) (T100ms);    micro_command_result = sledge_move();    break;  case MC_SLEDGE_BACK:    sledge_param = (sint16) (-T100ms);    micro_command_result = sledge_move();    break;#if (DEBUG_DSP != 0)  case MC_PDM_OUT1:    if (E_ADD == output_signal)    {      DFCR.field.df_te_mux = 0;    }    else if (TE_ADD == output_signal)    {      DFCR.field.df_te_mux = 1;    }    dsp_write_xmem(PDM_OUT1_ADD, output_signal);    micro_command_result = OK;    break;                   case MC_PDM_OUT2:    if (E_ADD == output_signal)    {      DFCR.field.df_te_mux = 0;    }    else if (TE_ADD == output_signal)    {      DFCR.field.df_te_mux = 1;    }    dsp_write_xmem(PDM_OUT2_ADD, output_signal);    micro_command_result = OK;    break;#endif  case MC_IDLE:    debug_error_reason = NO_ERROR_REASON;    break;  case MC_RAM_PROFILE:    EnableRamProfile();    micro_command_result = OK;    break;  case MC_ROM_PROFILE:    InitProfile();    micro_command_result = OK;    break;  default:    break;  }  if (micro_command_result != IN_PROGRESS)  {    if (debug_error_reason != NO_ERROR_REASON)    {      micro_command_result = debug_error_reason;    }    current_micro_command = MC_IDLE;  }#endif  if (RS232_Status & RS232_NEW_MSG)  {    switch (RS232_RxBuffer[OP_CODE])    {    case WRNM_MSG_OP_CODE:    /* Rx Message */    /* RS232_RxBuffer[0] -> Byte Count*/    /* RS232_RxBuffer[1] -> Op Code   */    /* RS232_RxBuffer[2] -> Near Memory Address MSB */    /* RS232_RxBuffer[3] -> Near Memory Address LSB */    /* RS232_RxBuffer[4] -> Data MSB */    /* RS232_RxBuffer[5] -> Data     */    /* RS232_RxBuffer[6] -> Data     */    /* RS232_RxBuffer[7] -> Data LSB */    /* RS232_RxBuffer[8] -> Mode (Byte/Word/Long) */    /* RS232_RxBuffer[9] -> Checksum */    /* Tx Message */    /* RS232_TxBuffer[0] <- Byte Count    */    /* RS232_TxBuffer[1] <- Error Code    */    /* RS232_TxBuffer[2] <- Data MSB      */    /* RS232_TxBuffer[3] <- Data          */    /* RS232_TxBuffer[4] <- Data          */    /* RS232_TxBuffer[5] <- Data LSB      */    /* RS232_TxBuffer[6] <- Checksum      */      if (RS232_RxBuffer[BYTE_COUNT] == WRNM_MSG_LEN)      {        if (cksum_verify(RS232_RxBuffer[BYTE_COUNT], RS232_RxBuffer))        {        /* The Message Has Correct length */          RS232_TxBuffer[ERROR_CODE] = NO_ERROR;          RS232_TxBuffer[2] = 0x0000;          RS232_TxBuffer[3] = 0x0000;          RS232_TxBuffer[4] = 0x0000;          switch (RS232_RxBuffer[8])          {          case LONG_WISE:          /* Bild a word pointer */            addr = BaseAddrTbl[RS232_RxBuffer[2]];            addr += RS232_RxBuffer[3];            data =  ((RS232_RxBuffer[4] << 0x18) & 0xFF000000);            data += ((RS232_RxBuffer[5] << 0x10) & 0x00FF0000);            data += ((RS232_RxBuffer[6] << 0x8) & 0x0000FF00);            data += (RS232_RxBuffer[7] & 0x000000FF);            *((uint32 *)addr) = data;            data = *((uint32 *) addr);            RS232_TxBuffer[2] = (data & 0xFF000000) >> 0x18;            RS232_TxBuffer[3] = (data & 0x00FF0000) >> 0x10;            RS232_TxBuffer[4] = (data & 0x0000FF00) >> 0x08;            RS232_TxBuffer[5] = (data & 0x000000FF);            break;          default:            RS232_TxBuffer[ERROR_CODE] = ILL_CMND_ERR_CODE;            break;          }        }        else        {          RS232_TxBuffer[ERROR_CODE] = INV_CKSUM;        }        RS232_TxBuffer[BYTE_COUNT] = WRNM_ACK_LEN;        tx_msg(WRNM_ACK_LEN, RS232_TxBuffer, PCIF);      }      else      {      /* Error Msg: Invalid Length */      }      break;    case RDNM_MSG_OP_CODE:    /* Rx Message */    /* RS232_RxBuffer[0] -> Byte Count*/    /* RS232_RxBuffer[1] -> Op Code   */    /* RS232_RxBuffer[2] -> Near Memory Address MSB */    /* RS232_RxBuffer[3] -> Near Memory Address LSB */    /* RS232_RxBuffer[4] -> Mode (Byte/Word) */    /* RS232_RxBuffer[5] -> Checksum */    /* Tx Message */    /* RS232_TxBuffer[0] <- Byte Count    */    /* RS232_TxBuffer[1] <- Error Code    */    /* RS232_TxBuffer[2] <- Data MSB      */    /* RS232_TxBuffer[3] <- Data          */    /* RS232_TxBuffer[4] <- Data          */    /* RS232_TxBuffer[5] <- Data LSB      */    /* RS232_TxBuffer[6] <- Checksum      */      if (RS232_RxBuffer[BYTE_COUNT] == RDNM_MSG_LEN)      {        if (cksum_verify(RS232_RxBuffer[BYTE_COUNT], RS232_RxBuffer))        {        /* The Message Has Correct length */          RS232_TxBuffer[ERROR_CODE] = NO_ERROR;          RS232_TxBuffer[2] = 0x0000;          RS232_TxBuffer[3] = 0x0000;          RS232_TxBuffer[4] = 0x0000;          switch(RS232_RxBuffer[4])          {          case LONG_WISE:          /* Bild a word pointer */#if (OS20_PROFILING==1)            if(RS232_RxBuffer[2] == 0x11)            {             // Task Activations & ticks.              tmp_task_prof = (uint32 *) Get_task_address(0);              idx = RS232_RxBuffer[3];              idx >>= 2;              data = tmp_task_prof[idx];            }            else if (RS232_RxBuffer[2] == 0x12)            {              tmp_task_prof = (uint32 *) Get_int_address(0);              idx = RS232_RxBuffer[3];              idx >>= 2;              data = tmp_task_prof[idx];            }            else#endif            {              addr = BaseAddrTbl[RS232_RxBuffer[2]];              addr += RS232_RxBuffer[3];              data = *((uint32 *) addr);            }            RS232_TxBuffer[2] = (data & 0xFF000000) >> 0x18;            RS232_TxBuffer[3] = (data & 0x00FF0000) >> 0x10;            RS232_TxBuffer[4] = (data & 0x0000FF00) >> 0x08;            RS232_TxBuffer[5] = (data & 0x000000FF);            break;          default:            RS232_TxBuffer[ERROR_CODE] = ILL_CMND_ERR_CODE;            break;          }        }        else        {          RS232_TxBuffer[ERROR_CODE] = INV_CKSUM;        }        RS232_TxBuffer[BYTE_COUNT] = 6; //RDNM_ACK_LEN;        tx_msg(RDNM_ACK_LEN, RS232_TxBuffer, PCIF);      }      else      {      /* Error Msg: Invalid Length */      }      break;    case WRITE_DSP_XMEM_MSG_OP_CODE:    /* Rx Message */    /* RS232_RxBuffer[0] -> Byte Count*/    /* RS232_RxBuffer[1] -> Op Code   */    /* RS232_RxBuffer[2] -> DSP Variable Address MSB */    /* RS232_RxBuffer[3] -> DSP Variable Address LSB */    /* RS232_RxBuffer[4] -> Data MSB */    /* RS232_RxBuffer[5] -> Data LSB */    /* RS232_RxBuffer[6] -> Checksum */    /* Tx Message */    /* RS232_TxBuffer[0] <- Byte Count    */    /* RS232_TxBuffer[1] <- Error Code    */    /* RS232_TxBuffer[2] <- Data MSB      */    /* RS232_TxBuffer[3] <- Data LSB      */    /* RS232_TxBuffer[4] <- Checksum      */      if (RS232_RxBuffer[BYTE_COUNT] == WRITE_DSP_XMEM_MSG_LEN)      {        if (cksum_verify(RS232_RxBuffer[BYTE_COUNT], RS232_RxBuffer))        {        /* The Message Has Correct length */        /* Bild a word pointer */          addr = RS232_RxBuffer[3];          data = ((RS232_RxBuffer[4] << 8) + RS232_RxBuffer[5]);          dsp_write_xmem(addr, data);          data = dsp_read_xmem(addr);          RS232_TxBuffer[ERROR_CODE] = NO_ERROR;          RS232_TxBuffer[2] = (uint8)((data & 0xFF00) >> BIT_8);          RS232_TxBuffer[3] = (uint8)(data & 0x00FF);        }        else        {          RS232_TxBuffer[ERROR_CODE] = INV_CKSUM;        }        RS232_TxBuffer[BYTE_COUNT] = WRITE_DSP_XMEM_ACK_LEN;        tx_msg(WRITE_DSP_XMEM_ACK_LEN, RS232_TxBuffer, PCIF);      }      else      {      /* Error Msg: Invalid Length */      }      break;    case READ_DSP_XMEM_MSG_OP_CODE:    /* Rx Message */    /* RS232_RxBuffer[0] -> Byte Count*/    /* RS232_RxBuffer[1] -> Op Code   */    /* RS232_RxBuffer[2] -> DSP Variable Address MSB */    /* RS232_RxBuffer[3] -> DSP Variable Address LSB */    /* RS232_RxBuffer[4] -> Checksum */    /* Tx Message */    /* RS232_TxBuffer[0] <- Byte Count    */    /* RS232_TxBuffer[1] <- Error Code    */    /* RS232_TxBuffer[2] <- Data MSB      */    /* RS232_TxBuffer[3] <- Data LSB      */    /* RS232_TxBuffer[4] <- Checksum      */      if(RS232_RxBuffer[BYTE_COUNT] == READ_DSP_XMEM_MSG_LEN)      {        if (cksum_verify(RS232_RxBuffer[BYTE_COUNT], RS232_RxBuffer))        {          addr = RS232_RxBuffer[3];          data = dsp_read_xmem(addr);          RS232_TxBuffer[ERROR_CODE] = NO_ERROR;          RS232_TxBuffer[2] = (uint8)((data & 0xFF00) >> BIT_8);          RS232_TxBuffer[3] = (uint8)(data & 0x00FF);        }        else        {          RS232_TxBuffer[ERROR_CODE] = INV_CKSUM;        }        RS232_TxBuffer[BYTE_COUNT] = READ_DSP_XMEM_ACK_LEN;        tx_msg(READ_DSP_XMEM_ACK_LEN, RS232_TxBuffer, PCIF);      }      else      {      /* Error Msg: Invalid Length */      }      break;    case WRITE_DSP_YMEM_MSG_OP_CODE:    /* Rx Message */    /* RS232_RxBuffer[0] -> Byte Count*/    /* RS232_RxBuffer[1] -> Op Code   */    /* RS232_RxBuffer[2] -> DSP Variable Address MSB */    /* RS232_RxBuffer[3] -> DSP Variable Address LSB */    /* RS232_RxBuffer[4] -> Data MSB */    /* RS232_RxBuffer[5] -> Data LSB */    /* RS232_RxBuffer[6] -> Checksum */    /* Tx Message */    /* RS232_TxBuffer[0] <- Byte Count    */    /* RS232_TxBuffer[1] <- Error Code    */    /* RS232_TxBuffer[2] <- Data MSB      */    /* RS232_TxBuffer[3] <- Data LSB      */    /* RS232_TxBuffer[4] <- Checksum      */      if (RS232_RxBuffer[BYTE_COUNT] == WRITE_DSP_YMEM_MSG_LEN)      {        if (cksum_verify(RS232_RxBuffer[BYTE_COUNT], RS232_RxBuffer))        {        /* The Message Has Correct length */        /* Bild a word pointer */          addr = RS232_RxBuffer[3];          data = ((RS232_RxBuffer[4] << 8) + RS232_RxBuffer[5]);          dsp_write_ymem(addr, data);          data = dsp_read_ymem(addr);          RS232_TxBuffer[ERROR_CODE] = NO_ERROR;          RS232_TxBuffer[2] = (uint8)((data & 0xFF00) >> BIT_8);          RS232_TxBuffer[3] = (uint8)(data & 0x00FF);        }        else        {          RS232_TxBuffer[ERROR_CODE] = INV_CKSUM;        }        RS232_TxBuffer[BYTE_COUNT] = WRITE_DSP_YMEM_ACK_LEN;        tx_msg(WRITE_DSP_YMEM_ACK_LEN, RS232_TxBuffer, PCIF);      }      else      {      /* Error Msg: Invalid Length */      }      break;    case READ_DSP_YMEM_MSG_OP_CODE:    /* Rx Message */    /* RS232_RxBuffer[0] -> Byte Count*/    /* RS232_RxBuffer[1] -> Op Code   */    /* RS232_RxBuffer[2] -> DSP Variable Address MSB */    /* RS232_RxBuffer[3] -> DSP Variable Address LSB */    /* RS232_RxBuffer[4] -> Checksum */    /* Tx Message */    /* RS232_TxBuffer[0] <- Byte Count    */    /* RS232_TxBuffer[1] <- Error Code    */    /* RS232_TxBuffer[2] <- Data MSB      */    /* RS232_TxBuffer[3] <- Data LSB      */    /* RS232_TxBuffer[4] <- Checksum      */      if (RS232_RxBuffer[BYTE_COUNT] == READ_DSP_YMEM_MSG_LEN)

⌨️ 快捷键说明

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