精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

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

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

此方法適用器件型號: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) 集成開發環境(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的部分,提供一種腳本用于自動加載,節省用戶操作的時間,本文涉及的腳本覆蓋部分如上表描述。

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在線調試的自動連接及固件加載。

腳本包含由幾個部分:

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

使用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);

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

設置文件工作路徑及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 路徑,修改部分在如下代碼示例中高亮。

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

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

var CCS_TARGET_CONFIGURATION_FILE = "IWR6843.ccxml";

獲取ScriptingEnvironment對象的句柄

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

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. 關于更多追蹤細節,請參考文檔的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類支持目標執行的方法(例如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.");

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

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

結束日志文件追蹤并使用腳本環境的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

使用函數名設置斷點:在MmwDemo_initTask函數調用處設置斷點

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腳本使用方法

將上文創建的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用戶指南獲得更多進階功能的介紹。

審核編輯:郭婷

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

    關注

    2548

    文章

    50664

    瀏覽量

    751941
  • dsp
    dsp
    +關注

    關注

    552

    文章

    7962

    瀏覽量

    348252
  • 毫米波雷達
    +關注

    關注

    106

    文章

    1029

    瀏覽量

    64237
收藏 人收藏

    評論

    相關推薦

    ModelSim快速上手指南

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

    資料推薦:nRF51822上手指南

    nRF51822上手指南
    發表于 06-12 13:48

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

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

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

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

    ModelSim快速上手指南

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

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

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

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

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

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

    適用于TI mmWave sensor單芯片SOC平臺的連續波點頻模式設置方法
    發表于 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平臺的連續波點頻模式設置方法

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

    適用于TI mmWave sensorCCS在線調試
    發表于 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平臺的配置隨啟動加載的方式
    發表于 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文檔_正點原子阿波羅 STM32F429 上手指南

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

    RT-Thread文檔_Nordic BSP 上手指南

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

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

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

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

    電子發燒友網站提供《適用于MPLAB X IDE的MPLAB REAL ICE在線仿真器用戶指南.pdf》資料免費下載
    發表于 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>

    TI mmWave Radar sensor硬件外設設計參考

    電子發燒友網站提供《TI mmWave Radar sensor硬件外設設計參考.pdf》資料免費下載
    發表于 09-27 11:06 ?0次下載
    <b class='flag-5'>TI</b> <b class='flag-5'>mmWave</b> Radar <b class='flag-5'>sensor</b>硬件外設設計參考