chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JLink Script文件基礎(chǔ)及其在IAR下調(diào)用方法

strongerHuang ? 來源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2020-11-29 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

一、JLink Script作用

如果你有腳本語言經(jīng)驗(yàn)(比如Python),你應(yīng)該很熟悉腳本語言那一套規(guī)則,腳本語言不同于一般編譯型語言(比如C),編譯型語言經(jīng)過編譯鏈接生成的二進(jìn)制機(jī)器碼被CPU直接識(shí)別執(zhí)行,但腳本不需要預(yù)編譯,它是由配套解釋器動(dòng)態(tài)翻譯執(zhí)行的,而CPU負(fù)責(zé)執(zhí)行的是腳本解釋器。

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

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

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

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

二、JLink Script文件基礎(chǔ)

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

2.1 腳本基礎(chǔ)語法

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

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

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

2.2 全局DLL常/變量

JLink Script在被解釋執(zhí)行時(shí),其實(shí)是和JLink DLL(即SEGGERJLink_VxxxJLinkARM.dll)聯(lián)動(dòng)的,DLL里存放了JLink各種底層功能集合,同時(shí)也默認(rèn)預(yù)定義一些全局變量,這些變量用于DLL配置,需要在JLink Script中被賦值。比如最基礎(chǔ)的變量CPU,用于指示連接的目標(biāo)內(nèi)核類型,而支持的全部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 系統(tǒng)內(nèi)置的API接口

JLink DLL中實(shí)現(xiàn)了很多基礎(chǔ)操作功能,這些功能通過API函數(shù)接口形式開放給JLink Script來調(diào)用,這些API全部以JLINK_為前綴。舉一個(gè)比較常用的API函數(shù)JLINK_TARGET_Halt(),這個(gè)函數(shù)功能就是掛起目標(biāo)內(nèi)核。

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

2.4 用戶可自定義動(dòng)作集

終于要講到JLink Script最關(guān)鍵的部分了,前面都是基礎(chǔ),而JLink Script最核心的功能其實(shí)在用戶自定義動(dòng)作集合里,這些動(dòng)作由JLink預(yù)先定義,但是內(nèi)部具體操作可由用戶來編寫。在IDE在線下載調(diào)試過程中按規(guī)定觸發(fā)條件來調(diào)用執(zhí)行這些動(dòng)作,下表列出了全部動(dòng)作,其中藍(lán)框標(biāo)出的四個(gè)動(dòng)作最常用。

InitTarget():替換J-Link DLL的目標(biāo)CPU自動(dòng)查找過程。對(duì)于默認(rèn)情況下不可訪問且需要執(zhí)行一些特殊步驟才能成功執(zhí)行常規(guī)調(diào)試連接過程的目標(biāo)CPU非常有用。

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

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

AfterResetTarget():在ResetTarget()之后調(diào)用。復(fù)位結(jié)束后,用于初始化一些必要外設(shè)(比如看門狗)。除此之外,對(duì)于某些內(nèi)核類型有必要在復(fù)位后執(zhí)行一些特殊操作,以保證復(fù)位后的設(shè)備功能正常。

自定義動(dòng)作列表:https://wiki.segger.com/J-Link_script_files#Customizable_actions

三、JLink Script在IAR下調(diào)用方法

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

3.1 JLinkDevices.xml中指定

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

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

設(shè)置內(nèi)核為Cortex-M33,即不啟用Device里的NXP MIMXRT685S_CM33設(shè)置

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

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

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

選好MIMXRT685_UFL這個(gè)指定下載算法后,直接在IAR里點(diǎn)擊下載,進(jìn)入正常調(diào)試后,可以在Debug Log里看到iMXRT6xx_CortexM33.JLinkScript確實(shí)被調(diào)用了。

3.2 工程選項(xiàng)Debugger/Extra Options中指定

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

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

再次在IAR里點(diǎn)擊下載,進(jìn)入正常調(diào)試后,可以在Debug Log里看到新的iMXRT6xx_CortexM33.JLinkScript確實(shí)被調(diào)用了。

3.3 工程目錄settings文件下指定

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

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

再次在IAR里點(diǎn)擊下載,進(jìn)入正常調(diào)試后,可以在Debug Log里看到hello_world_flash_debug.JLinkScript確實(shí)被調(diào)用了。

責(zé)任編輯:lq

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

    關(guān)注

    147

    文章

    18618

    瀏覽量

    387356
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    400

    瀏覽量

    38346
  • 解釋器
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    6935

原文標(biāo)題:JLink Script文件基礎(chǔ)及其在IAR下調(diào)用方法

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    開發(fā)過程中,有哪些常見的調(diào)試問題及解決方法

    無法連接 JLink 調(diào)試器: 確認(rèn) JLink 驅(qū)動(dòng)已經(jīng)正確安裝。 檢查 USB 連接是否穩(wěn)定,確保沒有連接問題。 EIDE 或 VSCode 中,確認(rèn)正確選擇了連接模式(SWD 或
    發(fā)表于 11-26 06:40

    RVMCU課堂「3」:手把手教你玩轉(zhuǎn)RVSTAR—SEGGER Embedded Studio+JLink調(diào)試器篇

    本教程以板上按鍵控制點(diǎn)亮RV-STAR開發(fā)板上的LED為目標(biāo),從IDE的下載安裝開始詳細(xì)介紹了使用SEGGER Embedded Studio+JLink調(diào)試器進(jìn)行RISC-V嵌入式開發(fā)的方法
    發(fā)表于 10-31 06:42

    RVMCU課堂「5」:手把手教你玩轉(zhuǎn)RV STAR—Nuclei Studio+JLink

    根據(jù)自己的操作系統(tǒng)下載對(duì)應(yīng)的文件即可,IDE不需要安裝,下載后直接解壓縮即可使用; 下一步安裝JLink驅(qū)動(dòng),SEGGER官網(wǎng)下載,其連接如下: https://www.segger.com
    發(fā)表于 10-31 06:08

    調(diào)用jlink script文件沒有輸出打印的信息是怎么回事?

    使用IAR調(diào)用jlinkscript能打印出我編寫的信息,但是IDE里調(diào)試時(shí)log就沒有顯示以下一串的字母,有小伙伴使用過嗎?求解答 `int AfterResetTarget(void
    發(fā)表于 10-20 06:09

    文件系統(tǒng),使用iar編譯報(bào)錯(cuò),gcc可以正常編譯,為什么?

    文件系統(tǒng),使用iar編譯報(bào)錯(cuò),gcc可以正常編譯,為什么?
    發(fā)表于 09-23 06:54

    JLINKIAR I-JET現(xiàn)已官方支持矽力杰SA32D系列MCU

    近日,業(yè)內(nèi)兩大主流開發(fā)工具——JLINK調(diào)試器與IARI-JET仿真器——正式宣布官方支持矽力杰(Silergy)SA32D系列MCU。這一重大更新為采用矽力杰高性能微控制器的開發(fā)者帶來了更流暢、更高效的開發(fā)與調(diào)試體驗(yàn),進(jìn)一步推動(dòng)了SA32D系列芯片在汽車電子領(lǐng)域的應(yīng)用
    的頭像 發(fā)表于 09-17 18:02 ?719次閱讀
    <b class='flag-5'>JLINK</b>與<b class='flag-5'>IAR</b> I-JET現(xiàn)已官方支持矽力杰SA32D系列MCU

    CW32L010 MCUVSCode+GCC+EIDE+JLink下的使用示例

    CW32L010 MCU VSCode+GCC+ EIDE + JLink 下的使用示例: 1、點(diǎn)擊VSCode左邊欄中的Extensions,EXTENSIONS:MARKETPLACE搜索
    的頭像 發(fā)表于 07-01 14:52 ?808次閱讀
    CW32L010 MCU<b class='flag-5'>在</b>VSCode+GCC+EIDE+<b class='flag-5'>JLink</b>下的使用示例

    請(qǐng)問JLink如何取消記住選項(xiàng)的功能?

    各位大佬,請(qǐng)教一個(gè)JLink的問題。如下圖,我選擇了“記住我的選項(xiàng)”,實(shí)際上我的選擇是錯(cuò)誤的。現(xiàn)在我想取消“記住選項(xiàng)”這個(gè)功能,嘗試了各種方法都沒成功,JLink驅(qū)動(dòng)重裝也嘗試了,重啟電腦也試了。有沒有哪位大佬遇到過這個(gè)問題,提
    發(fā)表于 06-20 07:55

    IAR Arm開發(fā)工具鏈中--function_sections編譯選項(xiàng)的使用

    本文主要介紹IAR Arm開發(fā)工具鏈中不修改源代碼的情況下使用??function_sections編譯選項(xiàng)把函數(shù)放到單獨(dú)的section。
    的頭像 發(fā)表于 06-13 13:53 ?1519次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>IAR</b> Arm開發(fā)工具鏈中--function_sections編譯選項(xiàng)的使用

    硬件調(diào)試:JLink 驅(qū)動(dòng)配置與調(diào)試技巧

    摘要: 本文深入探討了 JLink 調(diào)試器嵌入式系統(tǒng)硬件調(diào)試中的應(yīng)用,詳細(xì)闡述了 JLink 驅(qū)動(dòng)配置的方法以及硬件調(diào)試技巧。本文以國科安芯的AS32系列MCU芯片為例,通過分析
    的頭像 發(fā)表于 06-12 23:20 ?1274次閱讀
    硬件調(diào)試:<b class='flag-5'>JLink</b> 驅(qū)動(dòng)配置與調(diào)試技巧

    怎樣使用Jlink (SEGGER) 通過SWD讀寫呢?

    怎樣使用Jlink (SEGGER) 通過SWD讀寫呢?Jlink沒有找到CYPD6125的信號(hào),官方也沒有找到CYPD6125對(duì)應(yīng)的FLM和xml 文件
    發(fā)表于 05-27 06:45

    研發(fā)排查問題的利器:一款方法調(diào)用棧跟蹤工具

    作者:京東物流 郭忠強(qiáng) 導(dǎo)語 本文從日常值班問題排查痛點(diǎn)出發(fā),分析方法復(fù)用的調(diào)用鏈路和上下文業(yè)務(wù)邏輯,通過思考分析,借助棧幀開發(fā)了一個(gè)方法調(diào)用棧的鏈?zhǔn)礁櫣ぞ?,便于展示一次?qǐng)求的
    的頭像 發(fā)表于 05-06 17:24 ?3012次閱讀
    研發(fā)排查問題的利器:一款<b class='flag-5'>方法</b><b class='flag-5'>調(diào)用</b>棧跟蹤工具

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】使用Jlink的RTT來實(shí)現(xiàn)串口打印功能

    使用RTT代替UART,把你的JLink變成串口調(diào)試助手,不知道大家單片機(jī)開發(fā)中是如何打印調(diào)試信息的,大多數(shù)應(yīng)該是用串口調(diào)試打印吧,大多數(shù)的情況下,一般制板和寫代碼時(shí)都會(huì)預(yù)留串口
    發(fā)表于 04-30 12:19

    IAR無法跳轉(zhuǎn)定義,系統(tǒng)庫文件文件名后有[RO]是怎么回事?

    IAR無法跳轉(zhuǎn)定義,系統(tǒng)庫文件文件名后有[RO]
    發(fā)表于 03-10 07:36

    NFS網(wǎng)絡(luò)文件系統(tǒng)深度解析

    NFS:Network File System 網(wǎng)絡(luò)文件系統(tǒng),基于內(nèi)核的文件系統(tǒng)。Sun 公司開發(fā),通過使用 NFS,用戶和程序可以像訪問本地文件一樣訪問遠(yuǎn)端系統(tǒng)上的文件,基于RPC(
    的頭像 發(fā)表于 03-01 14:15 ?1176次閱讀