<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      痞子衡嵌入式:JLink Script文件基礎(chǔ)及其在IAR下調(diào)用方法


        大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是JLink Script文件基礎(chǔ)及其在IAR下調(diào)用方法

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

        如果你有腳本語(yǔ)言經(jīng)驗(yàn)(比如Python),你應(yīng)該很熟悉腳本語(yǔ)言那一套規(guī)則,腳本語(yǔ)言不同于一般編譯型語(yǔ)言(比如C),編譯型語(yǔ)言經(jīng)過(guò)編譯鏈接生成的二進(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文件里的語(yǔ)句。

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

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

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

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

      2.1 腳本基礎(chǔ)語(yǔ)法

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

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

      2.2 全局DLL常/變量

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

      2.3 系統(tǒng)內(nèi)置的API接口

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

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

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

      • InitTarget():替換J-Link DLL的目標(biāo)CPU自動(dòng)查找過(guò)程。對(duì)于默認(rèn)情況下不可訪問(wèn)且需要執(zhí)行一些特殊步驟才能成功執(zhí)行常規(guī)調(diào)試連接過(guò)程的目標(biāo)CPU非常有用。
      • SetupTarget():在InitTarget()以及JLink常規(guī)調(diào)試連接序列之后被調(diào)用,通常用于更高級(jí)別的CPU調(diào)試設(shè)置,如寫(xiě)入某些內(nèi)存位置、初始化PLL以加快下載速度等。
      • ResetTarget():替換DLL的復(fù)位策略。無(wú)論在DLL中選擇了什么復(fù)位類型,如果存在此函數(shù),將調(diào)用它而不是DLL內(nèi)部復(fù)位。
      • AfterResetTarget():在ResetTarget()之后調(diào)用。復(fù)位結(jié)束后,用于初始化一些必要外設(shè)(比如看門(mén)狗)。除此之外,對(duì)于某些內(nèi)核類型有必要在復(fù)位后執(zhí)行一些特殊操作,以保證復(fù)位后的設(shè)備功能正常。

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

      3.1 JLinkDevices.xml中指定

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

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

      1. 設(shè)置內(nèi)核為Cortex-M33,即不啟用Device里的NXP MIMXRT685S_CM33設(shè)置
      2. 調(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: \SEGGER\JLink_Vxxx\Devices\NXP\iMXRT6xx_UFL\iMXRT6xx_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-MIMXRT685\boards\evkmimxrt685\demo_apps\hello_world\iar目錄下,并在IAR工程選項(xiàng)中做如下設(shè)置:

      • Note: \SDK_xxx_EVK-MIMXRT685\boards\evkmimxrt685\demo_apps\hello_world\iar\iMXRT6xx_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-MIMXRT685\boards\evkmimxrt685\demo_apps\hello_world\iar\settings目錄下,需要重命名JLink Script文件與測(cè)試工程名一致:

      • Note: \SDK_xxx_EVK-MIMXRT685\boards\evkmimxrt685\demo_apps\hello_world\iar\settings\hello_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)用了。

        至此,JLink Script文件基礎(chǔ)及其在IAR下調(diào)用方法痞子衡便介紹完畢了,掌聲在哪里~~~

      歡迎訂閱

      文章會(huì)同時(shí)發(fā)布到我的 博客園主頁(yè)CSDN主頁(yè)知乎主頁(yè)微信公眾號(hào) 平臺(tái)上。

      微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機(jī)上第一時(shí)間看了哦。

      posted @ 2020-11-19 23:40  痞子衡  閱讀(4630)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲色一色噜一噜噜噜| 亚洲一卡2卡三卡四卡精品| 秭归县| 夜夜躁日日躁狠狠久久av| 国产欧美日韩精品丝袜高跟鞋| 好男人官网资源在线观看| 国产精品揄拍100视频| 亚洲成年av天堂动漫网站| 亚洲一区二区乱码精品| 成人无码精品免费视频在线观看| 甘泉县| 日韩理伦片一区二区三区| 欧洲国产成人久久精品综合| 国产精品无遮挡猛进猛出| 国产日韩综合av在线| 日韩激情无码av一区二区| 2021国产精品视频网站| 久久国产一区二区三区| 污污网站18禁在线永久免费观看| 999福利激情视频| 久久综合色最新久久综合色 | 最新精品国偷自产在线美女足| 国产精品自在拍首页视频8| 性欧美老人牲交xxxxx视频| 一区二区三区四区精品黄| 国产粉嫩高中无套进入| 中文字幕久久人妻熟人妻| 欧美寡妇xxxx黑人猛交| 自拍偷拍视频一区二区三区| 亚洲成人av在线综合| 中文字幕人乱码中文| 亚洲综合小综合中文字幕| 久久国产精品老人性| 国产欧美丝袜在线二区| 欧美xxxx黑人又粗又大| 久久国产精品成人免费| 延庆县| 国产美女遭强高潮免费| 国产一区二区三区导航| 安义县| 亚洲精品区二区三区蜜桃|