完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ti mmWave sensor毫米波雷达传感器是高集成度的毫米波雷达传感SOC,将中射频电路,VCO,ADC,DSP 和硬件加速器集成在单颗芯片内,它具有集成度高,成本低,开发简单等优点,在汽车及工业中都有广泛的应用。本文介绍了使用CCS软件的毫米波雷达传感器在线调试的方法及步骤,同时提供了一种基于debug server scripting脚本的自动加载实现方法,方便广大开发者提高开发效率,本文的测试环境如下:
1. 使用Code Composer Studio (CCS) 集成开发环境(IDE) 对IWR6843进行在线调试的步骤
本文针对每次在线调试都需要手动连接及加载BIN的部分,提供一种脚本用于自动加载,节省用户操作的时间,本文涉及的脚本覆盖部分如上表描述。 2. 使用脚本对IWR6843进行在线调试的步骤进行自动加载 2.1 工具介绍 Debug Server Scripting 调试服务器脚本 (Debug Server Scripting) 是调试服务器的一组跨平台 Java API,允许通过 Java 或 第三 方工具编写脚本,例如 JavaScript(通过 Rhino)、Java、Python(通过 Jython)、TCL(通过 Jacl/Tclblend) 等, JavaScript 是 DSS 支持的默认(和首选)脚本语言。调试服务器是 Code Composer Studio (CCS) 的基本调试引擎。 DSS 和 CCS IDE 都可以访问它,可以理解为CCS的一个可执行调试命令的组件,可参考文档 。 Scripting Console 通过 CCS Scripting Console View可支持交互式脚本,Scripting Console中提供了使用示例。 可以从控制台调用 Debug Server Scripting API。 可以从Scripting Console运行完整的独立 Debug Server Scripting JavaScript 文件。在CCS中,点击View-> Scripting Console,即可打开此控制台窗口。 2.2 JavaScript脚本实例 本文创建了一个可供在线调试使用的JavaScript脚本,示例如下,用户使用此脚本可以完成CCS在线调试的自动连接及固件加载。 脚本包含由几个部分:
// Import the DSS packages into our namespace to save on typing importPackage(Packages.com.ti.debug.engine.scripting); importPackage(Packages.com.ti.ccstudio.scripting.environment); importPackage(Packages.java.lang); importPackage(Packages.java.io); 为我们将要使用的各种文件创建一些变量。您需要修改前几个变量以匹配您的环境。要避免出现问题,请使用带有正斜杠的完整路径。
//*******User must specify WORKSPACE_DIR*********** var WORKSPACE_DIR = "C:/ccs_workspace_v10/IWR6843_OOB_TEST/"; //*******User must specify WORKSPACE_DIR*********** var PROJECT_DIR = WORKSPACE_DIR+"OOB_Handoff/"; var R4F_OUT_FILE_PATH = WORKSPACE_DIR+"mmwave_sdk_68xx_dsp_mss/Debug/xwr68xx_mmw_demo_mss.xer4f"; var DSS_OUT_FILE_PATH = WORKSPACE_DIR+"mmwave_sdk_68xx_dsp_dss/Debug/xwr68xx_mmw_demo_dss.xe674";
var CCS_TARGET_CONFIGURATION_FILE = "IWR6843.ccxml";
var script = ScriptingEnvironment.instance();
script.traceBegin("BreakpointsTestLog.xml", "DefaultStylesheet.xsl")
A. 以下形成可用追踪级别的子集。顺序为最低到最高(每个级别包含来自它上面的级别的所有消息):
B. 关于更多追踪细节,请参考文档的TraceLevel // Log everything script.traceSetConsoleLevel(TraceLevel.ALL); script.traceSetFileLevel(TraceLevel.ALL);
script.setCurrentDirectory(PROJECT_DIR); debugServer = script.getServer("DebugServer.1");
//CCXML file debugServer.setConfig(CCS_TARGET_CONFIGURATION_FILE);
//Open R4F Debug Session print("Debug session R4F..."); debugSession_MSS = debugServer.openSession("*","Cortex_R4_0"); print("Connecting to R4F Core..."); debugSession_MSS.target.connect(); debugSession_MSS.target.reset(); print("Done."); //Open C674x Debug Session print("Debug session C674x..."); debugSession_DSS = debugServer.openSession("*","C674X_0"); print("Connecting to C674x Core..."); debugSession_DSS.target.connect(); debugSession_DSS.target.reset(); print("Done.");
//*******Load program*********** print("Loading program - C674x..."); debugSession_DSS.memory.loadProgram(DSS_OUT_FILE_PATH); print("Done."); print("Loading program - R4F..."); debugSession_MSS.memory.loadProgram(R4F_OUT_FILE_PATH); print("Done.");
//*******Run*********** debugSession_DSS.target.runAsynch(); print("Running DSS core..."); sleep(1000);//sleep 1000ms debugSession_MSS.target.runAsynch(); print("Running R4F core...");
debugServer.stop();
scriptEnv.traceEnd(); 脚本全文如下,用户可拷贝并保存为ccsdebug_scripts_from_workspace.js文件。 // Import the DSS packages into our namespace to save on typing importPackage(Packages.com.ti.debug.engine.scripting); importPackage(Packages.com.ti.ccstudio.scripting.environment); importPackage(Packages.java.lang); importPackage(Packages.java.io); //*******User must specify WORKSPACE_DIR*********** var WORKSPACE_DIR = "C:/ccs_workspace_v10/IWR6843_OOB_TEST/"; //*******User must specify WORKSPACE_DIR*********** var PROJECT_DIR = WORKSPACE_DIR+"OOB_Handoff/"; var R4F_OUT_FILE_PATH = WORKSPACE_DIR+"mmwave_sdk_68xx_dsp_mss/Debug/xwr68xx_mmw_demo_mss.xer4f"; var DSS_OUT_FILE_PATH = WORKSPACE_DIR+"mmwave_sdk_68xx_dsp_dss/Debug/xwr68xx_mmw_demo_dss.xe674"; var CCS_TARGET_CONFIGURATION_FILE = "IWR6843.ccxml"; var script = ScriptingEnvironment.instance(); script.traceBegin("BreakpointsTestLog.xml", "DefaultStylesheet.xsl") // Log everything script.traceSetConsoleLevel(TraceLevel.ALL); script.traceSetFileLevel(TraceLevel.ALL); print("Starting Debug session..."); script.setCurrentDirectory(PROJECT_DIR); debugServer = script.getServer("DebugServer.1"); //CCXML file debugServer.setConfig(CCS_TARGET_CONFIGURATION_FILE); //*******connect and reset the core*********** //Open R4F Debug Session print("Debug session R4F..."); debugSession_MSS = debugServer.openSession("*","Cortex_R4_0"); print("Connecting to R4F Core..."); debugSession_MSS.target.connect(); debugSession_MSS.target.reset(); print("Done."); //Open C674x Debug Session print("Debug session C674x..."); debugSession_DSS = debugServer.openSession("*","C674X_0"); print("Connecting to C674x Core..."); debugSession_DSS.target.connect(); debugSession_DSS.target.reset(); print("Done."); //*******Load program*********** print("Loading program - C674x..."); debugSession_DSS.memory.loadProgram(DSS_OUT_FILE_PATH); print("Done."); print("Loading program - R4F..."); debugSession_MSS.memory.loadProgram(R4F_OUT_FILE_PATH); print("Done."); /** * Delay for a number of milliseconds */ function sleep(delay) { var start = new Date().getTime(); while (new Date().getTime() < start + delay); } //*******Run*********** debugSession_DSS.target.runAsynch(); print("Running DSS core..."); sleep(1000);//sleep 1000ms //*******Breakpoint test*********** //var bp1 = debugSession_MSS.breakpoint.add("0x100") // breakpoint with address var breakpoint_address = debugSession_MSS.symbol.getAddress("MmwDemo_initTask") // Query for address of label "MmwDemo_initTask" var bp1 = debugSession_MSS.breakpoint.add(breakpoint_address) // set breakpoint based on the address "MmwDemo_initTask" debugSession_MSS.breakpoint.add("mss_main.c", 4208); debugSession_MSS.target.runAsynch(); print("Running R4F core..."); 2.3 断点的设置方法 在使用JavaScript脚本的过程中,可以在脚本中设置断点,常用的断点设置方法有以下三种。
var bp1 = debugSession_MSS.breakpoint.add("0x100") // breakpoint with address
var breakpoint_address = debugSession_MSS.symbol.getAddress("MmwDemo_initTask") // Query for address of label "MmwDemo_initTask" var bp1 = debugSession_MSS.breakpoint.add(breakpoint_address) // set breakpoint based on the address "MmwDemo_initTask"
debugSession_MSS.breakpoint.add("mss_main.c", 4208); 3. 测试及输出 3.1 前置工作 前置工作既是将ccs_debug.bin烧写到板载QSPI FLASH,使硬件具备可在线调试的基本条件,基本操作步骤如下,亦可参考文档:Using CCS Debug for Development
3.2 JavaScript脚本使用方法 将上文创建的ccsdebug_scripts_from_workspace.js脚本文件以及CCS TARGET CONFIGURATION FILE 放置于CCS工程路径(如C:ccs_workspace_v10IWR6843_OOB_TESTOOB_Handoff),正确设置ccsdebug_scripts_from_workspace.js脚本文件中需要加载的xer4f文件名和路径、xe674的文件名和路径。 在CCS中,点击View-> Scripting Console,打开Scripting Console窗口,在窗口中输入loadJSFile "C:ccs_workspace_v10IWR6843_OOB_TESTOOB_Handoff ccsdebug_scripts_from_workspace.js" 并敲击回车,运行脚本。 脚本运行过程中,会在Scripting Console窗口中输出运行状态的打印信息,成功运行的打印信息如下,即成功运行脚本,并开始调试。 js:> loadJSFile "C:ccs_workspace_v10IWR6843_OOB_TESTOOB_Handoffccsdebug_scripts_from_workspace.js" Starting Debug session... Debug session R4F... Connecting to R4F Core... Done. Debug session C674x... Connecting to C674x Core... Done. Loading program - C674x... Done. Loading program - R4F... Done. Running DSS core... Running R4F core... 3.3 CCS调试 通过脚本加载固件后,程序正确运行,断点陆续停在MmwDemo_initTask函数调用位置及mss_main.c文件->4208行位置。SDK3.5 out-of-box demo成功运行后的打印信息如下: [Cortex_R4_0] Debug: Launched the Initialization Task Debug: mmWave Control Initialization was successful Debug: mmWave Control Synchronization was successful [C674X_0] Debug: DPM Module Sync is done [Cortex_R4_0] Debug: CLI is operational Debug: Sending rlRfSetLdoBypassConfig with 0 0 0 ============ Heap Memory Stats ============ Size Used Free DPCUsed System Heap(TCMB) 32768 27896 4872 2048 L3 786432 131072 655360 localRam(TCMB) 4096 512 3584 ============ Heap Memory Stats ============ Size Used Free DPCUsed System Heap(L2) 32768 16112 16656 0 L3 786432 8192 778240 localRam(L2) 50176 15016 35160 localRam(L1) 16384 5632 10752 Starting Sensor (issuing MMWave_start) 4. 总结 本文介绍了使用Debug Server Scripting以及JavaScript脚本对毫米波雷达SOC进行调试的步骤及使用方法介绍,用户可以较为方便的使用此脚本节省调试过程中的固件加载等步骤耗费的时间,更高效的对毫米波雷达SOC进行调试。本文覆盖了使用Debug Server Scripting进行在线调试的基本入门介绍,包含了如何创建和运行简单的DSS脚本,以及如何在DSS脚本中设置断点简化调试,用户可参考Debug Server Scripting用户指南获得更多进阶功能的介绍。
|
||
只有小组成员才能发言,加入小组>>
643 浏览 0 评论
1078 浏览 1 评论
2450 浏览 5 评论
2774 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2609 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
634浏览 9评论
630浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
759浏览 6评论
606浏览 5评论
650浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 09:15 , Processed in 1.007326 second(s), Total 46, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号