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.

[参考译文] AM2434:AM243x

Guru**** 2392095 points
Other Parts Discussed in Thread: CCSTUDIO, AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1497486/am2434-am243x

器件型号:AM2434
主题:CCSTUDIO

工具/软件:

您好!

如何将应用程序下载到第二个 Sitara AM243x 的 RAM 中。 我有两个 AM243x、分别配置为 XDS110v2。 我可以将应用程序下载到第一个。
然后、我使用了修改后的目标配置(设置为活动配置)。 但是、我无法通过 JTAG 连接到第二个模块。  
此致、
金龙

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

    我在更新目标配置文件时遇到一些问题、我将其设置为活动配置 、并尽可能绕过第一个 Sitara am243x 的所有项。  

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

    尊敬的 Shen:

    请确保您已绕过第一个 AM243x SOC、并尝试连接第二个 AM243x SOC。  

    此外、确保使用 SBL 二进制文件正确初始化第二个 AM243x SOC、并且引导模式配置也正确。

    请参阅 troubleshooting_issues。 

    此致、

    Tushar

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

    尊敬的 Tushar:

    我可以连接到 Sitara-2 (第二个、也是菊花链配置中的最后一个)。 我调整了 CCS 脚本、因为它需要在计算机上找到文件并需要连接到目标配置文件中的 r5f0-0、即 R50_2。

    下面是 js 控制台上的命令和输出:(我没有指定序列号)

    js:> loadJSFile /home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk/tools/ccs_load/am243x/load_dmsc_hsfs_sitara2.js
    sdkPath:/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk
    [确定]找到了文件/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk/tools/ccs_load/am243x/sciclient_ccs_init.release.out!!!
    连接到 SitaraTM 2 MCU Cortex_R5_0!
    为 R5F 写入 while (1)
    从 R5运行电路板配置初始化!
    加载"main"/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk/tools/ccs_load/am243x/sciclient_ccs_init.release.out 时出错:在自动运行到"main"后等待目标停止的20000ms 后超时(/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk/tools/ccs_load/am243x/load_dmsc_hsfs_sitara2.js #118)



    这是脚本。


    请参阅我在此消息之前的消息。 这是我修改的 CCS 脚本:

    函数 updateScriptVars()

    //打开调试会话
    dsMCU2_0 = debugServer.openSession (".*MAIN_Cortex_R5_0_2");
    }

    函数 connectTargets()

    /*将超时时间设置为20秒*/
    script.setScriptTimeout(20000);
    updateScriptVars();

    //Init_M4 ()
    print ("连接到 Sitara-2 MCU Cortex_R5_0!");

    //连接 MCU R5F
    dsMCU2_0.target.connect ();

    dsMCU2_0.memory.fill (0x78000000、0、0x2000、0);
    print ("为 R5F 写入 while (1)")
    dsMCU2_0.memory.writeWord (0、0x78000000、0xE59FF004);/* LDR PC、[PC、 4]*/
    dsMCU2_0.memory.writeWord (0、0x78000004、0x38);/*地址0x38 */
    dsMCU2_0.memory.writeWord (0、0x78000038、0xEAFFFFFE)/* b #0x38 */

    //暂停 R5F 并重新运行。
    dsMCU2_0.target.halt ();

    //重置 R5F 并运行。
    dsMCU2_0.target.reset();

    print ("从 R5运行电路板配置初始化!");
    //加载电路板配置初始化文件。
    dsMCU2_0.memory.loadProgram (ccs_init_elf_file);

    //暂停 R5F 并重新运行。
    dsMCU2_0.target.halt ();
    //同步运行可执行文件以完成
    dsMCU2_0.target.run();

    返回0;
    }

    函数 disconnectTargets()

    updateScriptVars();
    //将 R5F 重置为干净状态。
    dsMCU2_0.target.reset();
    }

    函数 doEverything()

    Var run = true;

    if (!File (ccs_init_elf_file).isFile ())

    print ("[error]文件"+ccs_init_elf_file+" not found!!!");
    RUN = FALSE;
    }
    暴露

    print ("[OK]文件"+CCS_init_elf_file+" found!!!");
    }

    if (run == true)

    updateScriptVars();
    var connectSucess = connectTargets();
    if (connectSucess == 0)

    disconnectTargets();
    Print ("快乐调试!!");
    }
    }
    暴露

    print ("请阅读此文件顶部的说明以确保正确设置 SDK 的路径!!!")
    }
    }

    //将 DSS 软件包导入我们的命名空间以在键入时保存
    importPackage (Packages.com.ti.debug.engine.scripting)
    importPackage (Packages.com.ti.ccstudio.scripting.environment)
    importPackage (Packages.java.lang)
    importPackage(java.io);
    importPackage(java.lang);

    增值经销商 DS;
    VAR debugServer;
    VAR 脚本;

    //检查是否从 CCSv4 Scripting Console 中运行
    var withinCCS =(DS !==undefined);

    Var sdkPath =空;

    if (!withinCCS)

    //!! 编辑此内容!!! 在环境变量中添加 SDK 的绝对路径
    //或将此变量设置为 SDK 的绝对路径
    sdkPath ="/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk;
    }
    暴露

    sdkPath = System.getenv ("MCU_PLUS_SDK_AM243X_PATH");
    if (sdkPath == null)

    //!! 编辑此内容!!! 在环境变量中添加 SDK 的绝对路径
    //或将此变量设置为 SDK 的绝对路径
    sdkPath ="/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk;
    }
    PRINT ("sdkPath:"+sdkPath);
    }

    //电路板配置 elf 的路径
    ccs_init_elf_file = sdkPath+"/tools/ccs_load/am243x/sciclient_ccs_init.release.out;

    //!! 编辑此内容!!! 在此处添加 ccxml 文件的绝对路径。
    fileCcxml =/home/shenj23/ti/AM2434_ALX.ccxml

    //创建脚本环境并获取调试服务器(如果是独立运行)
    if (!withinCCS)

    //将 DSS 软件包导入我们的命名空间以在键入时保存
    importPackage (Packages.com.ti.debug.engine.scripting);
    importPackage (Packages.com.ti.ccstudio.scripting.environment);
    importPackage(packages.java.lang);

    //创建我们的脚本环境对象-它是任何脚本和的主要入口点
    //创建其他可编写脚本的服务器和会话的工厂
    Script = ScriptingEnvironment.instance();

    //获取调试服务器并启动调试会话
    debugServer = script.getServer ("DebugServer.1");

    //检查 ccxml 文件是否存在。
    if(!File(fileCcxml).isFile())

    Print ("[错误]未找到文件"+fileCcxml+"!!!");
    print (看起来脚本不是从 CCS 内运行的。 请编辑 load_dmsc_hsfs.js 脚本、在本例中添加 ccxml 配置文件的路径。")
    }
    暴露

    debugServer.setConfig(fileCcxml);
    doEverything();
    }
    }
    else //以其他方式利用现有脚本环境和调试服务器

    debugServer = DS;
    脚本= env;
    doEverything();
    }

     

    此致、

    金龙

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

    您好、金龙、

    能否请在用您要连接的 JTAG 器件的序列号更改序列号后再尝试?

    请参阅下图。

    此致、

    Tushar

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

    是的、我尝试过。

    shenj23 ~ u22@$/home/shenj23/ti/ccs1281/ccs/ccs_base/common/uscif/xds110/xdsdfu -e.

    USB 设备固件升级实用程序
    版权所有(c) 2008-2019德州仪器(TI)公司。 保留所有权利。

    扫描 USB 总线以查找支持的 XDS110器件...


    <<<< Device 0 >>>

    VID:0x0451 PID:0xbef3
    器件名称:具有 CMSIS-DAP 的 XDS110探针
    版本:3.0.0.32
    制造商:德州仪器(TI)
    序列号:Noserial
    模式:运行时
    配置:标准

    找到1个器件。

    由于只有一个 JTAG 器件-我不设置序列号。 我是否应该使用  xdsdfu 设置序列号、可以在 JTAG 器件的背面找到序列号。



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

    您好、金龙、

    Error loading "/home/shenj23/ti/motor_control_sdk_am243x_09_02_00_09/mcu_plus_sdk/tools/ccs_load/am243x/sciclient_ccs_init.release.out:在自动运行到"main
    后等待目标停止的20000ms 后超时

    我可以看到您收到将 sciclient_ccs_init.release.out 二进制文件加载到 R5F 内核的错误。 您能否在第一个 AM243x SOC 上运行脚本而不出错?

    此致、

    Tushar

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

    是的、我已经反复使用 TI AM243 LP 进行了介绍。 它始终与 Sitara 1配合使用、后者是菊花链中的第一个目标器件。

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

    这是我一天的结束。  

    上述结果是在调试视图中获得的、其中目标为 R5 0_2 (r5f core 0-0 0f Sitara-2)。

    我用另一种方式重复了一下。
    我使用菊花链的目标配置文件、其中绕过 Sitara-1、不绕过 Sitara 2

    直接在 load_dmsc_hsfs_s_sitara2.js 中(同一命名文件的不同版本)
    这样,我直接在脚本控制台中执行了脚本:请参见右下角的输出。 我不信任输出-尽管 GUI 显示 soc 初始化二进制文件正在下载到目标、但我从来没有看到它已执行。  

    然后、我通过调整同一脚本(刚刚替换了同一脚本中的二进制文件)将 LED 示例下载到 r5f-core0-0、并且 Sitara-2上的 LED 不会闪烁、而应该会闪烁。


    Sitara-1始终正常工作。

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

    你好、金龙

    然后通过修改相同的脚本(刚刚替换了同一脚本中的二进制文件)将 LED 示例下载到 r5f-core0-0、并且 Sitara -2上的 LED 不会在本应闪烁。

    脚本的输出看起来正常。 您是否还在 CCS 控制台上看到了一些日志?

    另外、您能否告诉我们、GPIO_LED 不工作是指该示例不执行? 您是否看到任何错误消息?

    请共享错误日志(如果有)。 还是只是 LED 不闪烁?

    此致、

    Tushar

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

    这是控制台输出:
    MAIN_Cortex_R5_0_2:GEL 输出:已通过 GEL 发出 CPU 复位(软复位)。

    我在中间取得了一些进展。 我的程序显然已成功加载到 Sitara -2的 RAM 中。
    但是、run()似乎不起作用。

    //暂停 R5F 并重新运行。
    dsMCU2_0.target.halt ();
    //同步运行可执行文件以完成
    dsMCU2_0.target.run();

    我检查反汇编和进入函数。 c_init00?  

    关于 LED、这是下一步、要用作额外的实验方法来检查 soc 初始化是否有效。 有了上述进展、我们现在就可以忘记了。  

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

    您好、金龙、

    感谢您的更新。 是否有其他未解决的问题?

    此致、

    Tushar

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

    是的、在反汇编中。 我看到以下内容:  

    0x700ce3f4处的_c_int00 
    我想调用_c_int00、如何调整 javascript 来修复 dsMCU2_0.target.run();? 


    我们创建了单独的菊花链-似乎可以正常工作。