在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

JLink Script文件基礎及其在IAR下調用方法

strongerHuang ? 來源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2020-11-29 10:12 ? 次閱讀

今天給大家給大家分享一篇由痞子衡整理的文章:JLink Script文件基礎及其在IAR下調用方法。

JLink可以說是MCU開發者最熟悉的調試工具了,相比于其他調試器(比如DAPLink、ST-LINK、I-jet等),JLink除了性能強大之外,還勝在其配套各種軟件小工具相當方便易用。JLink工具玩得熟的老司機一定在J-Link Commander命令行工具(即SEGGERJLink_VxxxJLink.exe)下敲過命令,讀寫內存、下載文件、操控內核無所不能。這個底層工具其實也是JLink精華所在,今天痞子衡要講的JLink Script文件主題其實就是依賴這個工具。

一、JLink Script作用

如果你有腳本語言經驗(比如Python),你應該很熟悉腳本語言那一套規則,腳本語言不同于一般編譯型語言(比如C),編譯型語言經過編譯鏈接生成的二進制機器碼被CPU直接識別執行,但腳本不需要預編譯,它是由配套解釋器動態翻譯執行的,而CPU負責執行的是腳本解釋器。

基于上述概念JLink.exe就是一個解釋器,它能解釋執行JLink Script文件,其命令格式如下,使用-JLinkScriptFile參數指定JLink Script文件路徑便可執行JLink Script文件里的語句。

命令格式:JLink.exe -JLinkScriptFile MyFile.JLinkScript

為什么需要JLink Script文件?有些情況下,需要定制J-Link執行的某些操作,比如J-Link連接順序或者執行復位的方式等,或者一些定制的硬件板需要一些特殊處理,這些動作沒法直接集成到J-Link軟件的通用處理里,因此需要被放在單獨的JLink Script文件里,根據連接的具體目標對象來指定加載執行。

Note:其實除了常見的明文腳本(.JLinkScript)文件之外,JLink Script文件還有另外一種經過預編譯的文件形式(.pex),這種格式是純二進制的,可以保護腳本內容。

二、JLink Script文件基礎

JLink Script這一套東西整體上由五大部分組成:基本語法、全局DLL變量、全局DLL常量、系統API接口、用戶自定義動作集。

2.1 腳本基礎語法

JLink Script并不是一個通用的腳本語言,因此其并不像你熟知的那些Python之類的腳本語言那樣語法完善,它僅是為了配合JLink完成一些必要操作。JLink Script語法跟C語言類似,支持C語言中允許的大多數語句(if else,while,變量聲明,…),但不是所有的語句。

此外,還有一些語句是特定于JLink Script的,JLink Script已經盡可能允許最大的靈活性,因此幾乎任何必要的目標初始化操作都可以得到支持。

語法簡明手冊:https://wiki.segger.com/J-Link_script_files#Script_file_language

2.2 全局DLL常/變量

JLink Script在被解釋執行時,其實是和JLink DLL(即SEGGERJLink_VxxxJLinkARM.dll)聯動的,DLL里存放了JLink各種底層功能集合,同時也默認預定義一些全局變量,這些變量用于DLL配置,需要在JLink Script中被賦值。比如最基礎的變量CPU,用于指示連接的目標內核類型,而支持的全部CPU類型都定義在全局常量里。

變量列表:https://wiki.segger.com/J-Link_script_files#Global_DLL_variables

常量列表:https://wiki.segger.com/J-Link_script_files#Global_DLL_constants

2.3 系統內置的API接口

JLink DLL中實現了很多基礎操作功能,這些功能通過API函數接口形式開放給JLink Script來調用,這些API全部以JLINK_為前綴。舉一個比較常用的API函數JLINK_TARGET_Halt(),這個函數功能就是掛起目標內核。

API接口列表:https://wiki.segger.com/J-Link_script_files#Script_file_API_functions

2.4 用戶可自定義動作集

終于要講到JLink Script最關鍵的部分了,前面都是基礎,而JLink Script最核心的功能其實在用戶自定義動作集合里,這些動作由JLink預先定義,但是內部具體操作可由用戶來編寫。在IDE在線下載調試過程中按規定觸發條件來調用執行這些動作,下表列出了全部動作,其中藍框標出的四個動作最常用。

InitTarget():替換J-Link DLL的目標CPU自動查找過程。對于默認情況下不可訪問且需要執行一些特殊步驟才能成功執行常規調試連接過程的目標CPU非常有用。

SetupTarget():在InitTarget()以及JLink常規調試連接序列之后被調用,通常用于更高級別的CPU調試設置,如寫入某些內存位置、初始化PLL以加快下載速度等。

ResetTarget():替換DLL的復位策略。無論在DLL中選擇了什么復位類型,如果存在此函數,將調用它而不是DLL內部復位。

AfterResetTarget():在ResetTarget()之后調用。復位結束后,用于初始化一些必要外設(比如看門狗)。除此之外,對于某些內核類型有必要在復位后執行一些特殊操作,以保證復位后的設備功能正常。

自定義動作列表:https://wiki.segger.com/J-Link_script_files#Customizable_actions

三、JLink Script在IAR下調用方法

單純的JLink Script沒有意義,需要和工具鏈配合使用才能發揮最大作用,除了SEGGER工具之外(Embedded Studio、Ozone、SystemView),JLink Script還可以和常見的IDE環境(IAR/Keil/Eclipse)一起工作,痞子衡以IAR為例介紹三種調用JLink Script的方法(使用的是恩智浦i.MXRT685-EVK開發板做的測試)。

3.1 JLinkDevices.xml中指定

第一種方法是在 SEGGERJLink_VxxxJLinkDevices.xml 文件中指定,如果你對這個文件不了解,可先回顧下痞子衡之前寫的文章 《串行NOR Flash下載算法(J-Link工具篇)》。

給板卡通上電,連上J-Link調試器,隨便打開一個測試工程(SDK_xxx_EVK-MIMXRT685oardsevkmimxrt685demo_appshello_worldiar),選擇flash_debug,將其工程選項做如下更改:

設置內核為Cortex-M33,即不啟用Device里的NXP MIMXRT685S_CM33設置

調試器選擇J-Link/J-Trace,且不要勾選Use flash loader(s)

這么做是為了在IAR下載時不用NXP MIMXRT685S_CM33默認指定的JLink下載算法,而彈出一個框讓用戶主動選擇合適的JLink下載算法,我們修改JLinkDevices.xml如下:

Note:SEGGERJLink_VxxxDevicesNXPiMXRT6xx_UFLiMXRT6xx_CortexM33.JLinkScript便是我們要測試的JLink Script,在里面我們可以加一句JLINK_SYS_Report("J-Link script: This UFL script comes from Segger package"); 便于檢查調用結果。

選好MIMXRT685_UFL這個指定下載算法后,直接在IAR里點擊下載,進入正常調試后,可以在Debug Log里看到iMXRT6xx_CortexM33.JLinkScript確實被調用了。

3.2 工程選項Debugger/Extra Options中指定

在上一小節測試基礎上,將JLinkDevices.xml里的 JLinkScriptFile="Devices/NXP/iMXRT6xx_UFL/iMXRT6xx_CortexM33.JLinkScript" 這一句去掉,即不在下載算法里直接調用JLink Script。然后將iMXRT6xx_CortexM33.JLinkScript文件拷貝一份放到SDK_xxx_EVK-MIMXRT685oardsevkmimxrt685demo_appshello_worldiar目錄下,并在IAR工程選項中做如下設置:

Note:SDK_xxx_EVK-MIMXRT685oardsevkmimxrt685demo_appshello_worldiariMXRT6xx_CortexM33.JLinkScript便是我們要測試的JLink Script,在里面我們可以加一句JLINK_SYS_Report("J-Link script: This UFL script comes from Extra Option"); 便于檢查調用結果。

再次在IAR里點擊下載,進入正常調試后,可以在Debug Log里看到新的iMXRT6xx_CortexM33.JLinkScript確實被調用了。

3.3 工程目錄settings文件下指定

在上一小節測試基礎上,不勾選IAR工程選項Extra Options中Use command line options。然后將iMXRT6xx_CortexM33.JLinkScript文件拷貝一份放到SDK_xxx_EVK-MIMXRT685oardsevkmimxrt685demo_appshello_worldiarsettings目錄下,需要重命名JLink Script文件與測試工程名一致:

Note:SDK_xxx_EVK-MIMXRT685oardsevkmimxrt685demo_appshello_worldiarsettingshello_world_flash_debug.JLinkScript便是我們要測試的JLink Script,在里面我們可以加一句JLINK_SYS_Report("J-Link script: This UFL script comes from settings"); 便于檢查調用結果。

再次在IAR里點擊下載,進入正常調試后,可以在Debug Log里看到hello_world_flash_debug.JLinkScript確實被調用了。

責任編輯:lq

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

    關注

    146

    文章

    17205

    瀏覽量

    351937
  • IAR
    IAR
    +關注

    關注

    5

    文章

    354

    瀏覽量

    36729
  • 解釋器
    +關注

    關注

    0

    文章

    103

    瀏覽量

    6546

原文標題:JLink Script文件基礎及其在IAR下調用方法

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何獲取入口函數不是__iar_program_start的Program entry的stack使用情況

    問題 IAR中默認的入口函數是__iar_program_start,使能stack usage analysis之后: 生成的map文件中STACK USAGE章節里面會包含Program
    的頭像 發表于 11-25 16:23 ?309次閱讀
    如何獲取入口函數不是__<b class='flag-5'>iar</b>_program_start的Program entry的stack使用情況

    TLV320AIC3106335板子wince系統下調用playsound接口播放wav格式聲音總是有雜音,怎么解決?

    TLV320AIC3106335板子wince系統下調用playsound接口播放wav格式聲音總是有雜音,同一塊板子如果用播放器播放音頻 是沒有雜音的。 我用用飛思卡爾的某個ce系統板子,用
    發表于 10-25 08:00

    實踐JLink 7.62手動增加新MCU型號支持新方法

    大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是實踐JLink 7.62手動增加新MCU型號支持新方法
    的頭像 發表于 08-08 15:25 ?791次閱讀
    實踐<b class='flag-5'>JLink</b> 7.62手動增加新MCU型號支持新<b class='flag-5'>方法</b>

    CYT4BF8CEDQ0AESGS使用IAR9.32進行編譯運行了freertos,jlink仿真后程序會在vPortStartFirstTask 的svc 0卡死的原因?

    我現在在用CYT4BF8CEDQ0AESGS這一款芯片,使用IAR9.32進行編譯,運行了freertos,但是碰見了一個問題,程序在用自己做的串口BootLoader升級是可以正常運行的,但是
    發表于 05-29 07:36

    用malloc和calloc功能來實現DAQ,調試模式下調用calloc和malloc函數時似乎卡住了,為什么?

    我正在使用 malloc 和 calloc 功能來實現 DAQ。 我使用的是 TLE9893 系列芯片。 代碼編譯良好,但在調試模式下調用 calloc 和 malloc 函數時似乎卡住了。 我嘗試
    發表于 05-27 08:29

    IAR中生成庫文件并被應用工程調用的參考流程(上)

    通常來說,針對RA的開發,瑞薩對于第三方IDE的支持(如IAR EW for ARM)均通過RASC(Renesas RA Smart Configurator)實現。
    的頭像 發表于 05-22 14:36 ?2249次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>IAR</b>中生成庫<b class='flag-5'>文件</b>并被應用工程<b class='flag-5'>調用</b>的參考流程(上)

    STM32F334上使用IAR開發環境和jlink的SWD接口調試,怎么設置才可以使用IAR的code coverage功能?

    如題,STM32F334上使用IAR開發環境和jlink的SWD接口調試,這種情況下怎么設置才可以使用IAR的code coverage功能啊,謝謝各位!!!
    發表于 04-24 06:08

    怎么IAR一個工程里面配置不同的文件包含關系?

    請問哪位朋友知道,怎么IAR中,一個工程里面配置不同的文件包含關系。 如在A工程中,有兩種配制,一種編譯a.c,另一種編譯b.c。
    發表于 04-23 07:54

    STM8用IAR編輯器調用串口2函數報錯的原因?

    新手入門STM8,資料是用眾拳的,,新手求助,為什么STM8使用IAR編輯器,程序是網上眾拳的教程,為什么修改不了庫函數的c文件文件在編輯器的上面有個鎖呢?還是我用的是STM8S105,只有串口2
    發表于 04-17 08:23

    STVP燒錄stm8的hex文件不運行,但在IAR for stm8下調試正常,為什么?

    請教各位高手一個問題,我用IAR for stm8調試模式下一切正常的程序,但是變成release模式下生成hex文件以后,用STVP燒錄卻不能運行,應該說是大部分時候不能運行,偶爾極少數情況下
    發表于 04-10 08:17

    IAR FOR ARM和IAR FOR STM8無法共存怎么解決?

    Files (x86)IAR SystemsEmbedded Workbench 8.1文件夾里 安裝完后,FOR STM8C:Program Files (x86)IAR
    發表于 04-07 07:39

    為什么我的IAR for msp 7.12.1的Debugger選項只有FET和simulator仿真,沒有JLINK選項?

    如題,為什么我的IAR for msp 7.12.1的Debugger選項只有FET和simulator仿真,沒有JLINK選項,已經重新下載過了,還是不行,上網找也沒人出現我這種情況的,有沒有老哥
    發表于 03-15 07:34

    eclipse調用jlinkscript不能打印出編寫的信息是為什么?

    使用IAR調用jlinkscript能打印出我編寫的信息,但是放到eclipse里調試時控制臺就沒有顯示以下一串的字母,有小伙伴使用過嗎? int AfterResetTarget(void
    發表于 03-11 06:23

    jlink調試器的工作原理

    我們平時使用的jlink調試器就是使用JTAG接口,JTAG以前是用于測試芯片的一種通信方式,現在部分ARM或者DSP等都存在JTAG接口,這樣我們就可以通過JTAG接口訪問CPU以及其內部狀態信息等。
    的頭像 發表于 03-08 12:32 ?3253次閱讀
    <b class='flag-5'>jlink</b>調試器的工作原理

    Jlink.exe(Jlink commander)的常用命令

    前面有給大家分享過如何通過Jlink查看GD32芯片跑飛后程序死在哪里?里面用到了Jlink.exe(Jlink commander),今天再來介紹下這個工具下的幾個常用命令。
    的頭像 發表于 02-27 09:31 ?6134次閱讀
    <b class='flag-5'>Jlink</b>.exe(<b class='flag-5'>Jlink</b> commander)的常用命令
    主站蜘蛛池模板: 丝袜美女被c| 亚洲精品在线视频| 亚洲视频在线网| 国产一区二区三区波多野吉衣| 国产精品美乳在线观看| 日本黄色免费大片| 亚洲福利在线视频| 天天成人| jiuma和我啪啪| 看毛片的网站| 日本黄色一级大片| 男人天堂伊人网| 欧美午夜影视| 四虎现在的网址入口| 成人毛片一区二区三区| 在线视频亚洲一区| 啪啪免费视频网站| 黄色录像欧美| 能看的黄网| 女bbbbxxxx毛片视频| 天天综合欧美| 午夜无遮挡怕怕怕免费视频| 福利社91| 国产片翁熄系列乱在线视频| 久久综合九色婷婷97| 国产吧在线视频| 天堂网站| 奇米影视四色7777久久精品| 天天色综合1| 午夜精| 亚洲午夜一级毛片| 4hc44www四虎永久| 夜夜春夜夜夜夜猛噜噜噜噜噜| 手机看片1024在线观看| 午夜影院黄| 中文字幕在线观看一区二区| 91中文在线观看| 亚洲一区二区三区免费观看| 中文字幕11页| 一级特黄aa毛片免费观看| 2级毛片|