主题:CCSTUDIO、
工具/软件:
您好!
如何将应用程序下载到第二个 Sitara AM243x 的 RAM 中。 我有两个 AM243x、分别配置为 XDS110v2。 我可以将应用程序下载到第一个。
然后、我使用了修改后的目标配置(设置为活动配置)。 但是、我无法通过 JTAG 连接到第二个模块。
此致、
金龙
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.
尊敬的 Shen:
请确保您已绕过第一个 AM243x SOC、并尝试连接第二个 AM243x SOC。
此外、确保使用 SBL 二进制文件正确初始化第二个 AM243x SOC、并且引导模式配置也正确。
此致、
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();
}
此致、
金龙
是的、我尝试过。
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 器件的背面找到序列号。
您好、金龙、
后等待目标停止的20000ms 后超时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
我可以看到您收到将 sciclient_ccs_init.release.out 二进制文件加载到 R5F 内核的错误。 您能否在第一个 AM243x SOC 上运行脚本而不出错?
此致、
Tushar
这是我一天的结束。
上述结果是在调试视图中获得的、其中目标为 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 初始化是否有效。 有了上述进展、我们现在就可以忘记了。