This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1114:μ@QJ Wang 总结了引导加载程序问题、谢谢

Guru**** 2395875 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/676419/tms570ls1114-qj-wang-summarizing-bootloader-issues-and-thank-you

器件型号:TMS570LS1114

尊敬的专家:

      感谢您今天的患者解决方案。

首先、我想说您是对的。 实际上、BT 代码没有问题。 由于我们设计的电路板、问题困扰了我。 现在、我重写一些配置来替换它、BT 和 PC 可以成功通信。

只有16个字节的数据传输仍然存在、接下来我应该做什么。

 

 

谢谢、此致。

秋奇

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、邱志

    在 PC 端、传输前8个字节的数据后、您调用一个数据接收函数:

    接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、100);

    数据长度为50。

    请将其更改为0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 QJ Wang:

    将数据长度从50更改为0后、BT 侧 显示没有要加载的数据。

    现在、我怀疑发送数据中的 for 循环函数写入不正确。

     

    谢谢、此致

    秋奇

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 QJ Wang:

     我的 PC 端代码如下所示。

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *命令已发送数据
    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
    get_BinaryData( fileName );
    ulAddress = 0x00010100;
    零内存(&frameinfo、sizeof (CAN_obj));
    frameinfo.DataLen= 8;
    frameinfo.RemoteFlag = 0;
    frameinfo.ID = CAN_COMMAND_SEND_DATA;
    ulLength = image_size;

    //#3、循环浏览要下载的代码中的数据。
    for (ulOffset = 0;ulOffset < ulLength;ulOffset += 8)

    //构建发送数据命令。
    for (ulIdx = 0;ulIdx < 8;ulIdx++)

    frameinfo.Data[ulIdx]= image[ulOffset + ulIdx];

    //查看整个缓冲区是否包含要下载的有效数据。
    if ((ulOffset + ulIdx)> ulLength)

    frameinfo.DataLen = ulLength - ulOffset;
    //发送包含要下载的剩余数据的发送数据命令。
    //SLEEP (1);
    SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
    //入口参数--m_devtype:设备名;设备索引号;第几路CAN;要发送的数据帧数组首地址;要发送数据帧数组的长度
    返回实际发送的帧数 μ s
    // canTxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
    //VCS 用来存储CAN状态的CAN μ STATUS结构指针。

    其他

    frameinfo.DataLen = 8;
    SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
    睡眠(20);
    //入口参数--m_devtype:设备名;设备索引号;第几路CAN;要发送的数据帧数组首地址;要发送数据帧数组的长度
    执行{
    接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、100);
    //入口参数--m_devtype:设备名;设备索引号;第几路CAN;用来接收数据帧的数组首指针地址;用来接收的数据帧数组的长度,等待超时100 MS
    返回实际读取的帧数 μ s

    } while (receve_FrmFlag < 0);

    如果(SEND_ON_FRAMFlag < 0)

    ShowInfo ("写入失败"、2);


    rcvID = ReceiveBuf[0].ID;
    rcvData = ReceiveBuf[0].Data[0];
    rcvDataLen = ReceiveBuf[0].DataLen;
    if ((rcvID!= 0x05a6)&&(rcvData!= 0))

    printf ("- COMMAND_SEND_DATA 失败!\n");


    接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、10);
    //入口参数--m_devtype:设备名;设备索引号;第几路CAN;用来接收数据帧的数组首指针地址;用来接收的数据帧数组的长度,等待超时100 MS
    返回实际读取的帧数 μ s
    canRxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
    rcvID = ReceiveBuf[0].ID;
    rcvData = ReceiveBuf[0].Data[0];
    rcvDataLen = ReceiveBuf[0].DataLen;
    if ((rcvID!= 0x07F4)&&(rcvData!= 0))

    printf ("- COMMAND_SEND_DATA 失败!\n");

     

     

    谢谢、此致

    秋奇

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 QJ Wang:

    我的 PC 代码 关于发送数据、如下所示。

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *命令已发送数据
    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
    get_BinaryData( fileName );
    ulAddress = 0x00010100;
    零内存(&frameinfo、sizeof (CAN_obj));
    frameinfo.DataLen= 8;
    frameinfo.RemoteFlag = 0;
    frameinfo.ID = CAN_COMMAND_SEND_DATA;
    ulLength = image_size;

    //#3、循环浏览要下载的代码中的数据。
    for (ulOffset = 0;ulOffset < ulLength;ulOffset += 8)

    //构建发送数据命令。
    for (ulIdx = 0;ulIdx < 8;ulIdx++)

    frameinfo.Data[ulIdx]= image[ulOffset + ulIdx];

    //查看整个缓冲区是否包含要下载的有效数据。
    if ((ulOffset + ulIdx)> ulLength)

    frameinfo.DataLen = ulLength - ulOffset;
    //发送包含要下载的剩余数据的发送数据命令。
    //SLEEP (1);
    SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);

    // canTxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);


    其他

    frameinfo.DataLen = 8;
    SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
    睡眠(20);

    执行{
    接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、100);

    } while (receve_FrmFlag < 0);

    如果(SEND_ON_FRAMFlag < 0)

    ShowInfo("write fail",2);


    rcvID = ReceiveBuf[0].ID;
    rcvData = ReceiveBuf[0].Data[0];
    rcvDataLen = ReceiveBuf[0].DataLen;
    if ((rcvID!= 0x05a6)&&(rcvData!= 0))

    printf ("- COMMAND_SEND_DATA 失败!\n");


    接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、10);

    canRxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
    rcvID = ReceiveBuf[0].ID;
    rcvData = ReceiveBuf[0].Data[0];
    rcvDataLen = ReceiveBuf[0].DataLen;
    if ((rcvID!= 0x07F4)&&(rcvData!= 0))

    printf ("- COMMAND_SEND_DATA 失败!\n");

    谢谢、此致

    秋奇

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、邱志

    我不知道 TX 和 RX 函数:Transmit (..) 和 receive(...)。

    1、这2个函数的参数定义是什么:0、0、1、50、100
    我的理解是 Transmit (..)的最后一个参数 是 TX 数据缓冲区的长度。 我注意到您对所有传输(..)都使用"1"、因此我感到困惑。

    2、这2个函数的返回值的定义是什么:SEND_ON_FRAMFlag 和 REGE_FRAMFlag

    SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
    执行{
    接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、100);
    } while (receve_FrmFlag < 0);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 QJ Wang:

    感谢您这次的帮助、问题得到了解决、主要是硬件问题和延迟问题。

     

    谢谢、此致

    秋奇