0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

適用于TI mmWave sensor的CCS在線調試腳本上手指南

星星科技指導員 ? 來源:TI ? 作者:Wesley He ? 2023-03-16 09:20 ? 次閱讀

TI mmWave sensor毫米波雷達傳感器是高集成度的毫米波雷達傳感SOC,將中射頻電路,VCO,ADCDSP硬件加速器集成在單顆芯片內,它具有集成度高,成本低,開發(fā)簡單等優(yōu)點,在汽車及工業(yè)中都有廣泛的應用。本文介紹了使用CCS軟件的毫米波雷達傳感器在線調試的方法及步驟,同時提供了一種基于debug server scripting腳本的自動加載實現(xiàn)方法,方便廣大開發(fā)者提高開發(fā)效率,本文的測試環(huán)境如下:

此方法適用器件型號:I/AWR1443, I/AWR1642, I/AWR1843, I/AWR6843

本文測試軟件版本:mmWave SDK 3.5.0.4 out-of-box demo, Code Composer Studio Version: 10.2.0.00009

本文測試硬件平臺:IWR6843ISK EVM

1. 使用Code Composer Studio (CCS) 集成開發(fā)環(huán)境(IDE) 對IWR6843進行在線調試的步驟

對于CCS在線調試TI的毫米波雷達芯片而言,都需要遵循以下步驟。

步驟 說明 是否使用腳本
設置EVM為Flashing mode,使用Uniflash軟件燒寫ccs_debug.bin到板載flash 一次操作
設置EVM為functional mode 一次操作
生成Target Configuration File (CCXML) 一次操作
復位 每次ccs debug都需做
使用JTAG 將CCS與硬件板卡連接 每次ccs debug都需做 可以使用腳本
使用Target Configuration File連接DSP/ARM核心 每次ccs debug都需做 可以使用腳本
分別加載DSP/ARM固件 每次ccs debug都需做 可以使用腳本
運行&debug 每次ccs debug都需做 可以使用腳本
斷點設置 每次ccs debug都需做 可以使用腳本

本文針對每次在線調試都需要手動連接及加載BIN的部分,提供一種腳本用于自動加載,節(jié)省用戶操作的時間,本文涉及的腳本覆蓋部分如上表描述。

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的一個可執(zhí)行調試命令的組件,可參考文檔 。

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腳本實例

本文創(chuàng)建了一個可供在線調試使用的JavaScript腳本,示例如下,用戶使用此腳本可以完成CCS在線調試的自動連接及固件加載。

腳本包含由幾個部分:

在您喜歡的文本編輯器中創(chuàng)建一個新文件,并將其保存在ccs 工程目錄子文件夾OOB_Handoff中,名為js。這是我們將為本實驗創(chuàng)建腳本的文件。

使用importPackage()API導入腳本的相關包

// 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);

為我們將要使用的各種文件創(chuàng)建一些變量。您需要修改前幾個變量以匹配您的環(huán)境。要避免出現(xiàn)問題,請使用帶有正斜杠的完整路徑。

設置文件工作路徑及BIN文件路徑,修改部分在如下代碼示例中高亮。

一般把腳本放置于CCS工程,方便不同工程調試時直接修改。

//*******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";

設置CCS_TARGET_CONFIGURATION_FILE 路徑,修改部分在如下代碼示例中高亮。

創(chuàng)建并使用適用于用戶電腦CCS版本及XDS仿真器版本的target configuration file。

在CCS中,點擊File-> New -> Target configuration file 創(chuàng)建,創(chuàng)建完成后的ccxml文件,拷貝到JavaScript腳本所在路徑。

var CCS_TARGET_CONFIGURATION_FILE = "IWR6843.ccxml";

獲取ScriptingEnvironment對象的句柄

ScriptingEnvironment對象是進入DSS會話的主要入口點,也是創(chuàng)建其他可編寫腳本服務器和會話的步驟。

var script = ScriptingEnvironment.instance();

啟用和配置日志記錄

使用traceBegin()API啟用DSS日志記錄到logFile變量指定的文件。

DSS日志文件采用XML格式,使用XSLT(XML樣式表轉換)進行樣式設置。我們使用CCS安裝路徑,腳本示例文件夾中提供的示例xsl文件。要查看樣式化的日志文件,建議使用Internet Explorer打開以獲得最佳兼容性。有關DSS日志記錄的更多詳細信息,請參見此處

script.traceBegin("BreakpointsTestLog.xml", "DefaultStylesheet.xsl")

使用traceSetConsoleLevel()和traceSetFileLevel()API設置控制臺和日志文件的詳細級別。

A. 以下形成可用追蹤級別的子集。順序為最低到最高(每個級別包含來自它上面的級別的所有消息):

TraceLevel.OFF (關閉記錄)

TraceLevel.SEVERE (只有來自調試器的非常嚴重的消息)

TraceLevel.WARNING (從調試器添加警告消息)

TraceLevel.INFO (添加基本消息和C I/O)

TraceLevel.ALL (記錄所有內容)

B. 關于更多追蹤細節(jié),請參考文檔的TraceLevel

// Log everything

script.traceSetConsoleLevel(TraceLevel.ALL);

script.traceSetFileLevel(TraceLevel.ALL);

使用getServer()API建立與調試器的鏈接(DebugServer.1)

返回的DebugServer對象是調試器的主句柄。此對象用于配置調試器并啟動目標的調試會話。

script.setCurrentDirectory(PROJECT_DIR);

debugServer = script.getServer("DebugServer.1");

通過使用setConfig() API將目標配置*.ccxml文件傳遞給調試服務器,為所需的目標板配置調試器。

DebugSession對象將返回已啟動的調試會話的主句柄。可以使用此對象訪問針對目標的所有調試操作。

//CCXML file

debugServer.setConfig(CCS_TARGET_CONFIGURATION_FILE);

使用調試會話的目標字段的connect()API連接到目標。

Target類支持目標執(zhí)行的方法(例如run,halt,restart),步進和連接/斷開目標。

分別連接并復位處理器DSS(DSP)、MSS(R4F)核心。

//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.");

將程序加載至內存中。

Memory類支持內存訪問的方法,如save,load,read,write,register access和program loading。

分別加載固件到DSS(DSP)、MSS(R4F)核心。

//*******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.");

向目標發(fā)出命令以運行加載的程序。

Run()在目標停止之前不會返回控制。直到目標到達程序結束,將返回控制。

運行DSS(DSP)、MSS(R4F)核心。

//*******Run***********

debugSession_DSS.target.runAsynch();

print("Running DSS core...");

sleep(1000);//sleep 1000ms

debugSession_MSS.target.runAsynch();

print("Running R4F core...");

使用調試服務器的stop()API關閉調試器。

此調用既關閉調試會話又關閉調試服務器(基本上終止調試器)

debugServer.stop();

結束日志文件追蹤并使用腳本環(huán)境的traceEnd() API禁用日志記錄。

建議您正確關閉日志文件。

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腳本的過程中,可以在腳本中設置斷點,常用的斷點設置方法有以下三種。

使用地址設置斷點:在0x100地址設置斷點

var bp1 = debugSession_MSS.breakpoint.add("0x100") // breakpoint with address

使用函數(shù)名設置斷點:在MmwDemo_initTask函數(shù)調用處設置斷點

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"

使用行號設置斷點:在c文件,4208行設置斷點

debugSession_MSS.breakpoint.add("mss_main.c", 4208);

3. 測試及輸出

3.1 前置工作

前置工作既是將ccs_debug.bin燒寫到板載QSPI FLASH,使硬件具備可在線調試的基本條件,基本操作步驟如下,亦可參考文檔:Using CCS Debug for Development

設置EVM為Flashing mode,使用Uniflash軟件燒寫bin到板載flash

設置EVM為functional mode,并復位一次

生成適用于當前硬件芯片及仿真器的Target Configuration File (CCXML)

3.2 JavaScript腳本使用方法

將上文創(chuàng)建的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窗口中輸出運行狀態(tài)的打印信息,成功運行的打印信息如下,即成功運行腳本,并開始調試。

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調試

通過腳本加載固件后,程序正確運行,斷點陸續(xù)停在MmwDemo_initTask函數(shù)調用位置及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進行調試的步驟及使用方法介紹,用戶可以較為方便的使用此腳本節(jié)省調試過程中的固件加載等步驟耗費的時間,更高效的對毫米波雷達SOC進行調試。本文覆蓋了使用Debug Server Scripting進行在線調試的基本入門介紹,包含了如何創(chuàng)建和運行簡單的DSS腳本,以及如何在DSS腳本中設置斷點簡化調試,用戶可參考Debug Server Scripting用戶指南獲得更多進階功能的介紹。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2541

    文章

    49945

    瀏覽量

    747451
  • dsp
    dsp
    +關注

    關注

    551

    文章

    7823

    瀏覽量

    346817
  • 毫米波雷達
    +關注

    關注

    105

    文章

    1011

    瀏覽量

    63985
收藏 人收藏

    評論

    相關推薦

    ModelSim快速上手指南

    ModelSim快速上手指南
    發(fā)表于 08-16 17:14

    資料推薦:nRF51822上手指南

    nRF51822上手指南
    發(fā)表于 06-12 13:48

    請問哪位大神可以分享一下適用于AM1808的用戶指南嗎?

    .com/index.php/Flash_v1.3_User_Guide)適用于AM1808嗎?或者它只是AM37xx 和OMAP35xx系列的用戶指南。
    發(fā)表于 06-07 07:49

    使用CCS軟件的毫米波雷達傳感器在線調試的方法及步驟

    及工業(yè)中都有廣泛的應用。本文介紹了使用CCS軟件的毫米波雷達傳感器在線調試的方法及步驟,同時提供了一種基于debug server scripting腳本的自動加載實現(xiàn)方法,方便廣大開
    發(fā)表于 11-03 07:36

    ModelSim快速上手指南

    ModelSim快速上手指南 快速上手四部曲:建立Project、引進HDL Files、Compile、模擬(Simulate/Loading and Run)
    發(fā)表于 05-08 17:29 ?0次下載

    適用于MPLAB? X IDE的MPLAB REAL ICE?在線仿真器用戶指南

    適用于MPLAB? X IDE的MPLAB REAL ICE?在線仿真器用戶指南
    發(fā)表于 05-25 17:29 ?34次下載

    適用于TI mmWave sensorCCS在線調試腳本教程

    集成度高,成本低,開發(fā)簡單等優(yōu)點,在汽車及工業(yè)中都有廣泛的應用。本文介紹了使用CCS軟件的毫米波雷達傳感器在線調試的方法及步驟,同時提供了一種基于debug server scripting
    的頭像 發(fā)表于 06-30 17:01 ?3499次閱讀

    適用于TI mmWave sensor單芯片SOC平臺的連續(xù)波點頻模式設置方法

    適用于TI mmWave sensor單芯片SOC平臺的連續(xù)波點頻模式設置方法
    發(fā)表于 10-28 11:59 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>TI</b> <b class='flag-5'>mmWave</b> <b class='flag-5'>sensor</b>單芯片SOC平臺的連續(xù)波點頻模式設置方法

    適用于TI mmWave sensorCCS在線調試腳本上手指南

    適用于TI mmWave sensorCCS在線調試
    發(fā)表于 10-28 11:59 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>TI</b> <b class='flag-5'>mmWave</b> <b class='flag-5'>sensor</b>的<b class='flag-5'>CCS</b><b class='flag-5'>在線</b><b class='flag-5'>調試</b><b class='flag-5'>腳本</b><b class='flag-5'>上手指南</b>

    適用于TI mmWave sensor平臺的配置隨啟動加載的方式

    適用于TI mmWave sensor平臺的配置隨啟動加載的方式
    發(fā)表于 10-28 11:59 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>TI</b> <b class='flag-5'>mmWave</b> <b class='flag-5'>sensor</b>平臺的配置隨啟動加載的方式

    RT-Thread文檔_正點原子 nano STM32F103 上手指南

    RT-Thread文檔_正點原子 nano STM32F103 上手指南
    發(fā)表于 02-22 18:24 ?5次下載
    RT-Thread文檔_正點原子 nano STM32F103 <b class='flag-5'>上手指南</b>

    RT-Thread文檔_正點原子阿波羅 STM32F429 上手指南

    RT-Thread文檔_正點原子阿波羅 STM32F429 上手指南
    發(fā)表于 02-22 18:25 ?2次下載
    RT-Thread文檔_正點原子阿波羅 STM32F429 <b class='flag-5'>上手指南</b>

    RT-Thread文檔_Nordic BSP 上手指南

    RT-Thread文檔_Nordic BSP 上手指南
    發(fā)表于 02-22 18:26 ?7次下載
    RT-Thread文檔_Nordic BSP <b class='flag-5'>上手指南</b>

    適用于TI mmWave sensor單芯片SOC平臺的連續(xù)波點頻模式設置方法

    TI mmWave sensor是高集成度的毫米波雷達傳感器SOC,在開發(fā)過程中,SDK及TI DEMO均使用靈活的UART接口發(fā)送CLI命令進行射頻參數(shù)配置及相關算法參數(shù)的配置。對于
    的頭像 發(fā)表于 03-15 10:45 ?1789次閱讀
    <b class='flag-5'>適用于</b><b class='flag-5'>TI</b> <b class='flag-5'>mmWave</b> <b class='flag-5'>sensor</b>單芯片SOC平臺的連續(xù)波點頻模式設置方法

    適用于MPLAB X IDE的MPLAB REAL ICE在線仿真器用戶指南

    電子發(fā)燒友網(wǎng)站提供《適用于MPLAB X IDE的MPLAB REAL ICE在線仿真器用戶指南.pdf》資料免費下載
    發(fā)表于 09-25 14:46 ?1次下載
    <b class='flag-5'>適用于</b>MPLAB X IDE的MPLAB REAL ICE<b class='flag-5'>在線</b>仿真器用戶<b class='flag-5'>指南</b>