• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • TRACE32——AMP多核調試

    標簽: 車載  汽車

    TRACE32——AMP多核調試

    之前有一篇文章介紹過芯片的SMP多核調試,適用于同架構的內核運行同一套操作系統的場景。例如英飛凌的TC275TF芯片的三個TriCore核以SMP的方式運行著AutoSar操作系統。

    但隨著芯片的使用場景越來越復雜,芯片廠商推出的SoC可能會同時集成不同架構的內核用于不同的功能。

    例如TI公司推出的TDA4VM芯片含有Cortex-M3、Cortex-R5、Cortex-A72、C66x DSP、C7x DSP等不同架構的內核。

    不同架構的內核有不同的指令集、有不同的代碼空間、運行不同的操作系統,所以也需要不同的TRACE32窗口(GUI)來進行調試。但此時TRACE32 GUI之間共享一個勞特巴赫設備以及一個JTAG調試接口:

    圖片

    傳統方式調試AMP

    如果是在Windows PC機上,我們可以使用TRACE32 Start程序進行配置AMP調試環境。根據需要調試的內核架構,添加相應的配置項即可。

    圖片

    配置好后,只需在Configuration名字處(圖中是TDA4的位置)或者1:PodBus Device Chain處右鍵,點擊Start,便會自動打開所有核的調試窗口。

    圖片

    關于TRACE32 Start的使用方法可以參考app_t32start.pdf

    由于AMP多核調試時,可能會使用Trace(跟蹤)功能,為了便于TRACE32更好地處理多核之間的Trace數據,建議在各個GUI中,執行如下命令

    System.config
    

    在每個GUI中修改此處的參數:

    圖片

    對于絕大部分情況,此處參數的配置原則為:

    core:任意數字,各個GUI之間不重復即可。

    推薦按窗口順序填寫:

    即第一個GUI的值寫1. 第二個GUI的值寫2.以此類推

    chip:各個GUI之間保持為相同值

    推薦都寫1.

    有時候,AMP多核調試時,可能會希望主核開始運行時,其他從核也能同步運行起來。此時,可以執行Synch命令進行相應的同步配置:

    圖片

    注意:使用Synch功能的前提是,每個GUI都打開了InterCom Port。具體操作方法可以參考文檔:

    • general_ref_s.pdf的Synch章節
    • ide_ref.pdf的InterCom章節

    新方法調試AMP

    如果在Linux PC上使用TRACE32,可能沒有TRACE32 Start。因此TRACE32推出了更高效更通用的方法(需要2020年以后的TRACE32版本),主要為下面兩個命令組

    //用于打開新的GUI、查看已經打開的GUI
    TargetSystem  
    
    //用于GUI之間的通信、跨GUI之間執行命令
    InterCom  
    

    以TI芯片TDA4VM為例,AMP相關調試方法如下:

    按照正常方式啟動第一個TRACE32 GUI用于第一個內核/子系統的調試

    例如,TDA4VM的MCU域的R5 SMP 多核子系統

    圖片

    在調試過程中,如果需要同時調試其他內核/子系統,可以使用這條命令再啟一個TRACE32 GUI:

    TargetSystem.NewInstance <新窗口名字> /ARCH <新窗口架構>
    // 其中新窗口名字,可以任意取名
    // 架構名可選的有:
    // - ARM:所有ARM核
    // - ARM64:2022年開始的TRACE32版本不區分ARM和ARM64,任選一個即可
    // - Tricore: 英飛凌Tricore核
    // - C6000 
    // - C7000
    // - 等等,更多的架構可以在TRACE32命令行下方的提示欄中進行選取
    

    例如希望調試TDA4VM MAIN0域的R5 SMP子系統,新打開的GUI調試的架構,和當前GUI調試的架構一樣時,/ARCH參數可省略

    // 新GUI名字任意選取,例如 main0TargetSystem.NewInstance main0
    

    這條命令會:

    • 打開當前GUI的Intercom Port(如果未打開)
    • 克隆當前GUI使用的配置文件(config.t32)
    • 并將配置文件的Intercom Port加1后,供新打開的GUI使用

    當然上面的操作是TRACE32底層自動做的,一般用戶可以不用關心。只需要記住新打開的GUI的名字。

    圖片

    如果用戶習慣使用用鼠標操作,可仍然按照以前的習慣,在新打開的GUI中:

    • 選擇要調試的內核/芯片/子系統名字
    • 進行Attach操作,連上內核后開始調試

    也有用戶習慣使用CMM腳本操作TRACE32,通過這種方法調試AMP多核的優勢是,可以使用一個CMM腳本,控制所有多核窗口。示意圖如下:

    圖片

    單個CMM腳本能夠控制所有窗口的操作,主要用了如下命令:

    Intercom.execute <窗口名字> <命令>
    //命令可簡寫成如下格式
    IC <窗口名字> <命令>
    

    本例子中,我們的腳本可以這樣寫:

    //第一個GUI:MCU-R5
    System.cpu TDA4VM-CR5-MCU
    core.assign 1,2  //MCU域是一個R5 SMP子系統
    System.attach 
    Break
    List /core 0
    List /core 1
    
    //*******打開第二個GUI:MAIN0-R5**********
    TargetSystem.NewInstance main0
    IC main0 System.cpu TDA4VM-CR5-MAIN0
    IC main0 System.CONFIG.CORE 2. 1. 
    IC main0 core.assign 1,2  //MAIN0域是一個R5 SMP子系統
    IC main0 System.attach 
    IC main0 Break
    IC main0 List /core 0
    IC main0 List /core 1
    

    同理,我們也可以用類似的方法,打開其他核的調試窗口,例如TDAVM芯片中的DSP C66x

    圖片

    當打開的GUI比較多后,除了可以使用*IC <窗口名字> <命令>*的方法來對指定GUI進行操作。還可以使用ALLOTRHERS,來進行多個GUI的同時操作:

    //對所有已經打開的GUI,執行命令
    IC ALL <命令>
    
    //除了當前GUI,對其他所有窗口執行命令
    IC OTHERS <命令>
    

    命令示意圖如下:

    IC ALL Go

    圖片

    IC Others Go

    圖片

    綜合更多的內核和命令,CMM腳本功能更新如下:

    //script.cmm 在第一個GUI中執行
    //第一個GUI:MCU-R5
    System.cpu TDA4VM-CR5-MCU
    core.assign 1,2  //MCU域是一個R5 SMP子系統
    System.attach 
    Break
    List /core 0
    List /core 1
    
    //打開第二個GUI:MAIN0-R5
    TargetSystem.NewInstance main0
    IC main0 System.cpu TDA4VM-CR5-MAIN0
    IC main0 System.CONFIG.CORE 2. 1. 
    IC main0 core.assign 1,2  //MAIN0域是一個R5 SMP子系統
    IC main0 System.attach 
    IC main0 Break
    IC main0 List /core 0
    IC main0 List /core 1
    
    //打開第三個GUI:C66X
    TargetSystem.NewInstance c66x
    IC c66x System.cpu TDA4VM-C66X
    IC c66x System.CONFIG.CORE 3. 1. 
    IC c66x System.attach 
    IC c66x Break
    IC c66x List
    
    //多個GUI之間的同步控制
    Go Os_Init //控制MCU-R5運行到斷點處
    Wait !RUN()
    IC All Go //控制所有GUI一起運行程序
    wait 5.s
    IC Others Break
    
    ENDDO
    

    回顧下整個AMP多核調試環境,其中包含了若干個SMP多核子系統。使用一個CMM腳本進行調試,操作和維護都更方便。

    圖片

    也可以執行如下命令后查看當前AMP多核調試環境中,各個GUI以及各個Core的狀態:

    TargetSystem All
    

    圖片

    關于TargetSystem命令的更多介紹可以參考:

    • general_ref_t.pdf的 TargetSystem章節

    多核調試更多參考信息

    • 文檔:

    debugger_.pdf 中的多核調試章節

    例如 debugger_armv8v9.pdfQuick Start for Multicore Debugging

    • 腳本:

    demo\<arch>\hardware\文件夾下提供了一些常見的開發板可用的多核調試參考腳本

    例如\demo\arm\hardware\s32g2\s32g-vnp-evb\s32g-vnp-evb-m7-a53-amp\s32g-vnp-evb_amp_sram.cmm

    版權聲明:本文為weixin_48120109原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_48120109/article/details/126187243

    智能推薦

    react-native--03開發環境&amp;真機調試

    IDE -> WebStorm 目前市面上的IDE,有知名的Sublime和jetbrains,其中jetbrains有一系列的IDE支持多種語言,如JAVA(IntelliJ IDEA)、Python(Pycharm)、Ruby(RubyMine)、Javascript/html/css(WebStorm),由于我本人長期開發Python,采用的是Pycharm,因此我個人傾向與采用Web...

    單GDB調試RISC-V CPU 多核時,continue 命令行為解析

    1 背景 前兩天軟件同事反應在使用單GDB調試我們四核CPU(RISC-V,64位)時,對設置軟斷點后再continue后的行為不太理解,和以前調試單核CPU的行為不太一致,因此我在ZEBU平臺做下復現工作,然后結合行為和波形分析Debug Module。 2 現象 2.1 openocd配置 下面是使用的openocd配置文件。 上面需要注意的是第23行的openocd命令: 查詢官方的open...

    C#學習筆記:程序調試——使用Trace和日志文件

    參考書目:C#6.0學習筆記——從第一行C#代碼到第一個項目設計(作者周家安)P240 學習內容:程序調試方法——使用Trace和日志文件 運行結果1:在調試窗口 在debug文件夾中,產生日志文件        ...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡