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.

[参考译文] 编译器/TMS320C6678:TMS320C6678下载文件错误

Guru**** 2589300 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/641437/compiler-tms320c6678-tms320c6678-download-file-error

器件型号:TMS320C6678

工具/软件:TI C/C++编译器

当我通过 XDS560v2使用 CCS 来重新下载 helloworld  等简单项目时

我收到以下消息:

C66xx_0:GEL 输出:Setup_Memory_Map...
C66xx_0:GEL 输出:Setup_Memory_Map... 完成。
C66xx_0:GEL 输出:
正在连接目标...
C66xx_0:GEL 输出:DSP 内核#0
C66xx_0:GEL 输出:C6678L GEL 文件 Ver
C66xx_0:GEL 输出:全局默认设置...
C66xx_0:GEL 输出:设置高速缓存...
C66xx_0:GEL 输出:L1P = 32K   
C66xx_0:GEL 输出:L1D = 32K   
C66xx_0:GEL 输出:L2 =所有 SRAM   
C66xx_0:GEL 输出:设置高速缓存... 完成。
C66xx_0:GEL 输出:主 PLL (PLL1)设置...
C66xx_0:GEL 输出:PLL 处于旁路模式...
C66xx_0:GEL 输出:DSP @ 1000.0MHz 的 PLL1设置。
C66xx_0:GEL 输出:           SYSCLK2 = 333333 MHz、SYSCLK5 = 200.0 MHz。
C66xx_0:GEL 输出:           SYSCLK8 = 15.625MHz。
C66xx_0:GEL 输出:PLL1设置... 完成。
C66xx_0:GEL 输出:DSP 内核#64无法设置 PSC。
C66xx_0:GEL 输出:PA PLL (PLL3)设置...
C66xx_0:GEL 输出:DSP 内核#64无法设置 PA PLL
C66xx_0:GEL 输出:DDR3 PLL (PLL2)设置...
C66xx_0:GEL 输出:DSP 内核#64无法设置 DDR3 PLL
C66xx_0:GEL 输出:DDR 开始(1333自动)
C66xx_0:GEL 输出:XMC 设置... 完成
C66xx_0:GEL 输出:
DDR3初始化完成。
C66xx_0:GEL 输出:DDR 完成
C66xx_0:GEL 输出:DDR3内存测试... 开始
C66xx_0:GEL 输出:DDR3内存测试... 失败
C66xx_0:GEL 输出:主 PLL (PLL1)设置...
C66xx_0:GEL 输出:DSP 内核#64无法设置 PLL1。
C66xx_0:GEL 输出:设置主 PLL 时出错、请关闭电路板的电源并重新运行全局默认设置

我有五 块板,其他四块都可以。我测量了功率,输入 时钟(__LW_AT__100M Hz)复位 信号,结果正常 。SYSCLKOUT 为16.6M Hz。

问题出在哪里?

非常感谢

                   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否验证加电顺序是否符合数据手册的建议?
    7.3.1电源定序
    本节定义了上电复位条件下的上电排序要求。 该器件有两个可接受的电源序列。 第一个序列规定了在 IO 电压之前开始的内核电压、如下所示。
    1. CVDD
    CVDD1、VDDT1-2.
    DVDD18、AVDD1、AVDD2
    DVDD15、VDDR1-4
    第二个序列提供与其他 TI 处理器的兼容性、IO 电压从内核电压开始、如下所示。
    DVDD18、AVDD1、AVDD2
    2. CVDD
    CVDD1、VDDT1-2
    DVDD15、VDDR1-4

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

    Yordan

               电源序列符合 数据手册中的建议,内核电压在 IO 电压之前启动。

    我有五块板,只有一个有  错误。

    此致、

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

    [报价]我有五块电路板,只有一个电路板有错误。[/报价]

    这正是我认为这是硬件问题的原因。 您是否能够在不加载 GEL 文件的情况下(通过 CCS 的存储器浏览器)访问主 PLL?

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

    Yordan,

                 我不知道 在不通过 CCS 的内存浏览器加载 GEL 文件的情况下访问主 PLL。

    您能给我一些相关文档吗?

    此致、

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

    您好!

    通常、这可以通过内存浏览器来完成。 您可以输入寄存器的地址并查看其值或对其进行设置。 但是、这可能不是一个好主意。
    您说:
    [引用]我测量了功率,输入时钟(__LW_AT__100M Hz)复位信号,结果正常。SYSCLKOUT 为16.6M Hz。[/引用]
    您的输入时钟是否有大量抖动(它是否稳定)? 您是否在某些电源(或时序)上以最大额定值/最小额定值工作? 您是否审查了 PCB?

    在4个电路板上运行相同的软件和在5个电路板上运行失败是不合逻辑的、并认为这是软件的问题。 就我看到您的 DDR 测试也失败了:
    C66xx_0:GEL 输出:DDR3内存测试... 失败

    如果您仍然想调试 GEL 文件、可以在 GEL 文件中的每个步骤(寄存器设置)添加调试打印、并查看其发生故障的确切位置(在哪个寄存器访问期间)、然后返回结果。

    此致、
    Yordan

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

    Yordan。

     在没有 GEL 文件,的情况下下载文件并连接 DSP.iIam 是一名硬件工程师。我想知道如何操作。我想知道无法设置主 PLL 的错误确实意味着。

    此致

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

    如果打开位于中的 GEL 文件,您将看到错误来自以下位置:
    如果(DNUM = 0)

    对于(count = 0;count < pll_reinit_MAX_count;count++){
    //设置 Pll1 DSP @ target_FREQ
    状态= Init_PLL (PLL1_M、PLL1_D);

    如果(status =-1){
    GEL_TextOut ("设置主 PLL 时出错,请关闭主板的电源并重新运行全局默认设置...\n");
    while (1);

    具体来说、从线路状态= Init_PLL (PLL1_M、PLL1_D);。

    这意味着代码无法将 PLL1_M 和 PLL1_D 编程到寄存器中、这在 Init_PLL ()中完成:
    e2e.ti.com/.../init_5F00_pll

    深入探究代码您将看到对乘法器和除法器进行编程的实际函数为 prog_pll1_values ():
    PROG_PLl1_VALUES (unsigned int pll_multiplier、unsigned int pll_divider、unsigned int odiv)

    内部温度;

    /*检查参数的范围*/

    如果(odiv > 15)

    GEL_TextOut ("输出分频范围无效、应小于15... \n");


    IF (PLL_MULTIER > 4095)

    GEL_TextOut ("无效的 PLL 乘法器范围、应小于4095... \n");


    IF (PLL_divider > 63)

    GEL_TextOut ("无效的 PLL 乘法器范围、应小于63... \n");


    /*设置 PLL 乘法器、除法器、BWADJ *
    *乘法器的 PLLM[5:0]位由 PLLM 寄存器控制*
    *在 PLL 控制器内部和 PLLM[12:6]位由*控制
    *芯片级 MAINPLLCTL0寄存器。 *
    * PLL 控制寄存器(PLLM)布局*
    *|31...6 |5...0 |*
    *|保留| PLLM |*
    **
    *主 PLL 控制寄存器(MAINPLLCTL0)*
    *|31...24 |23...19 |18...12 | 11...6 |5...0 |*
    *|BWADJ[7:0]|保留|PLLM[12:6]|保留| PLLD |*

    /*设置 PLL 多路复用器(13位字段)*/
    PLL1_PLLM =(PLL_MULTMPLIER & 0x0000003F);/*位[5:0]*
    temp =(PLL_MULTIER & 0x1FC0)>> 6;//* bits[12:6]*
    MAINPLLCTL0 &=~(0x0007F000);/*清除 PLLM 字段*/
    MAINPLLCTL0 |=((TEMP <<12)& 0x0007F000);

    /*设置 BWADJ (12位字段)*
    * BWADJ[11:8]和 BWADJ[7:0]位于 MAINPLLCTL0和 MAINPLLCTL1 *
    *寄存器。 BWADJ[11:0]应编程为等于*的一半的值
    * PLLM[12:0]值(如果 PLLM 有一个奇数值则舍入)*
    *示例:如果 PLLM = 15、则 BWADJ = 7 */
    temp =((PLL_multipler + 1)>> 1)- 1;//将 pllm 除以2 */
    MAINPLLCTL0 &=~(0xFF000000);//清除 BWADJ 字段*/
    MAINPLLCTL0 ||((TEMP << 24)& 0xFF000000);
    MAINPLLCTL1 &=~(0x0000000F);//清除 BWADJ 字段*/
    MAINPLLCTL1 |=((TEMP >> 8)& 0x0000000F);

    /*设置 PLL 分频器(6位字段)*
    * PLLD[5:0]位于 MAINPLLCTL0 */
    MAINPLLCTL0 &=~(0x0000003F);/*清除字段*/
    MAINPLLCTL0 |=(PLL_DEVIDER & 0x0000003F);

    /*在 SECCTL 中设置输出分频(4位字段)*/
    PLL1_SECCTL &=~(0x00780000);/*清除该字段*/
    PLL1_SECCTL |=((odiv <<19)& 0x00780000);


    因此、您可以在上述函数的每个步骤中使用 GEL_TextOut ("调试打印内容")添加调试打印。

    此外、在 GEL 文件开头的注释中有非常好的说明如何设置 PLL 乘法器和除法器:
    /系统 PLL 控制器件(CorePac)的运行速度。
    //
    //每个电路板设计人员定义 CLKIN 频率。 在上
    // TMDXEVM6678L、LE、LXE EVM、定义为100MHz 的 CLKIN 频率。 。
    以下定义的 PLL1_M (39)和 PLL1_D (1)的//值被预先设置
    //在 EVM 上提供1000MHz 的工作频率。
    //
    //使用不同 CLKIN 频率和/或的其他电路板设计
    //需要其他工作频率的应用、PLL 可以
    //可通过根据调整 PLL1_M 和 PLL1_D 进行配置
    //以下公式:
    //
    //目标频率(MHz)=
    // input_clock (MHz)*[(PLL1_M + 1)]/(2 *(PLL1_D + 1))
    //
    //器件数据表中的表2-13 "C66x DSP 系统 PLL 配置"、
    // focus.ti.com/.../tms320c6678.pdf 提供建议的
    //各种输入时钟和所需的 PLL1_M 和 PLL1_D 值
    //工作频率。
    //
    //请注意可能有多个 PLL1_M 和 PLL1_D
    //输入时钟和所需器件速度的值与
    //乘法器和除法器在可接受的范围内。
    //
    //有关 PLL 的更多详细信息,包括可接受范围的限制
    //对于乘法器和除法器、请参阅上的 PLL 用户指南
    // http://www.ti.com/lit/sprugv2
    //
    //该表提供了 PLL1_M 和 PLL1_D 的一些示例值:
    //
    //请选择 PLL1_M 值,使0 < PLL1_M <= 64
    //+--- --------------- +--- +--- +
    //|(CLK)所需|(CLKIN)输入|||
    //|器件速度(MHz)|时钟(MHz)| PLL1_M | PLL1_D |
    //+--- --------------- +--- +--- +
    //| 1000 | 100 | 19 | 0 |
    //| 1000 | 100 (EVM)| 39 | 1 |
    //| 1250 | 100 | 24 | 0 |
    //| 1000 | 50 | 39 | 1 |
    //| 1000 | 156.25 | 63 | 4 |
    //+--- --------------- +--- +--- +
    //
    //+--- --------------- +--- +--- +
    //| PA PLL VCO |(CLKIN)输入||||
    //|速率(MHz)|时钟(MHz)| PLL1_M | PLL1_D |
    //+--- --------------- +--- +--- +
    //| 1050 | 100.00 (EVM)| 20 | 0 |
    //| 1044 | 122.88 | 31 | 1 |
    //| 1050 | 122.88 | 204 | 11 |
    //| 1050 | 156.25 | 335 | 24 |
    //+--- --------------- +--- +--- +
    //
    //+--- --------------- +--- +--- +
    //| DDR3 PLL VCO |(CLKIN)输入||||
    //|速率(MHz)|时钟(MHz)| PLL1_M | PLL1_D |
    //+--- --------------- +--- +--- +
    //| 1333 | 66.667 (EVM)| 19 | 0 |
    //| 1066 | 66.667 | 31 | 1 |
    //| 800 | 66.667 | 11 | 0 |
    //+--- --------------- +--- +--- +

    尝试不同的 PLL1_M 和 PLL1_D 值、以查看这是否是您的器件无法实现当前设置的频率的问题。

    此致、
    Yordan