日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构

發(fā)布時(shí)間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是飛思卡爾Kinetis MCU開發(fā)板板載OpenSDA調(diào)試器(上篇)。

  眾所周知,嵌入式軟件開發(fā)幾乎離不開調(diào)試器,因?yàn)閷懸粋€(gè)稍有代碼規(guī)模(5K行以上)的嵌入式應(yīng)用程序一般不可能一次性搞定,沒(méi)有任何bug,出了bug并不可怕,只要我們能盡快定位bug并修復(fù)即可,調(diào)試器就是定位bug的利器,有了調(diào)試器我們便可以進(jìn)入系統(tǒng)主控芯片內(nèi)部一窺究竟,控制芯片執(zhí)行代碼的動(dòng)作,實(shí)時(shí)查看芯片內(nèi)部狀態(tài),輔以各種調(diào)試技巧讓bug無(wú)處藏身。
  飛思卡爾Kinetis MCU屬于ARM Cortex-M系列芯片,因此本文主要介紹的Cortex-M系列芯片調(diào)試器,目前市面上Cortex-M調(diào)試器種類(這里主要指的是硬件生產(chǎn)商)非常多,主要分為如下兩大陣營(yíng):

  • 第三方公司出品:SEGGER的J-Link、IAR的I-jet、ARM的ULINK、開源項(xiàng)目OpenJTAG等
  • 半導(dǎo)體廠商出品:Freescale的OpenSDA、NXP的LPC-Link、ST的ST-LINK、TI的Stellaris ICDI、Nuvoton的Nu-Link等。

  本文要講的主角OpenSDA屬于陣營(yíng)里的后者,其一般不單獨(dú)存在,都是附著在飛思卡爾Kinetis官方開發(fā)板上,你可以理解為OpenSDA調(diào)試器是專為Kinetis芯片設(shè)計(jì)的(但其實(shí)其firmware設(shè)計(jì)是可以做到通用于所有Cortex-M芯片的),今天痞子衡就為大家介紹OpenSDA項(xiàng)目的來(lái)龍去脈,讓大家對(duì)OpenSDA項(xiàng)目有一個(gè)整體認(rèn)識(shí)。

一、OpenSDA項(xiàng)目背景

  OpenSDA全稱是Open-standard Serial and Debug Adapter,從名字上來(lái)看,這個(gè)項(xiàng)目是要做一個(gè)開放標(biāo)準(zhǔn)的串口與調(diào)試適配器,該項(xiàng)目主要是為了Kinetis芯片配套官方開發(fā)板而設(shè)計(jì)的,直接板載在Kinetis官方開發(fā)板上,用于取代傳統(tǒng)的第三方仿真器(比如J-Link)+開發(fā)板的開發(fā)調(diào)試模式。
  眾所周知,ARM公司于2010年2月正式發(fā)布Cortex-M4內(nèi)核,飛思卡爾于2010年8月推出其第一款A(yù)RM Cortex-M內(nèi)核芯片Kinetis K60,這也是業(yè)界一款Cortex-M4內(nèi)核的芯片。OpenSDA項(xiàng)目并不是從Kinetis誕生之初便存在的,不信你可以查看最早的Kinetis Tower開發(fā)板 TWR-K60D100M 原理圖(該板通用于Kinetis K10、K20、K60芯片),早期的Kinetis開發(fā)板板載調(diào)試器為OSBDM/OSJTAG,這是一種早已普遍應(yīng)用于飛思卡爾HCS12、DSC、PowerPC系列芯片開發(fā)板上的調(diào)試器,OSBDM/OSJTAG調(diào)試器主芯片為MC9S08JM60CLD(S08JM系列)。

  隨著Kinetis芯片的不斷推出,OpenSDA項(xiàng)目逐漸醞釀成熟,尤其是2012年隨著飛思卡爾Cortex-M0+內(nèi)核Kinetis L系列芯片的走紅,OpenSDA調(diào)試器開始大面積應(yīng)用于Kinetis L系列芯片配套的Freedom開發(fā)板上,從此取代OSBDM/OSJTAG成為Kinetis開發(fā)板上的標(biāo)準(zhǔn)調(diào)試器,大家可以看一下下面這款經(jīng)典的 FRDM-KL25Z 原理圖,其板載調(diào)試器即為OpenSDA調(diào)試器(V1),OpenSDA調(diào)試器主芯片選用的MK20DX128VFM5(Kinetis K20系列)。

二、OpenSDA硬件電路

  概括來(lái)說(shuō),OpenSDA調(diào)試器主要由硬件和軟件兩部分組成,其中硬件主要分為主芯片和外圍接口電路,下面痞子衡分別為大家介紹OpenSDA的主芯片和外圍接口電路。

2.1 不可撼動(dòng)的男主(MK20DX128VFM5)

  對(duì)于一個(gè)調(diào)試器項(xiàng)目來(lái)說(shuō),主芯片的選用至關(guān)重要,這直接決定了調(diào)試器的性能。OpenSDA調(diào)試器主芯片選用的是MK20DX128VFM5,這是一款Cortex-M4內(nèi)核,主頻50MHz,16KB SRAM,160KB ROM(128KB Flash,32KB FlexNVM(最大2KB EEPROM)),內(nèi)置1個(gè)USBFS控制器,QFN32封裝的芯片。
  為何選擇Kinetis芯片作為調(diào)試器主控?當(dāng)然是為了進(jìn)一步推廣Kinetis系列的知名度,畢竟飛思卡爾的Cortex-M芯片推出較晚。那么為何選擇Kinetis K2x系列芯片呢?這要從下面Kinetis K系列的特性表里才能找到答案,從下表可以我們看出K2x系列是支持USB接口的入門芯片,而調(diào)試器主控是必須要支持USB接口的。

  為何選擇型號(hào)為MK20DX128VFM5的K2x芯片呢?雖然這款芯片屬于K2x系列里最低配型號(hào)(考慮到調(diào)試器將隨著開發(fā)板大面積推廣,成本也是一個(gè)不可忽略的因素),但是其外設(shè)(USBFS, UART, SPI)與存儲(chǔ)(16KB RAM,160KB ROM)方面是滿足調(diào)試器項(xiàng)目要求的。有人可能會(huì)問(wèn),50MHz主頻會(huì)不會(huì)有點(diǎn)低,從而影響調(diào)試器性能?痞子衡可以明確地告訴你,性能是夠的,作為對(duì)比SEGGER J-Link V7/V8里的主控是Atmel AT91SAM7S64(ARM7TDMI內(nèi)核, 55MHz主頻)。

2.2 幾經(jīng)搬遷的行宮(V1/V2/V2.1/V2.2)

  確定了調(diào)試器主芯片,下一步便是設(shè)計(jì)調(diào)試器外圍接口電路,實(shí)際上外圍電路發(fā)展至今不止一個(gè)版本,我們可以在飛思卡爾官網(wǎng) OpenSDA項(xiàng)目主頁(yè) 里的Download – OpenSDA Bootloader and Application下面找到如下各版本典型的開發(fā)板:

  不過(guò)這些版本主要都是硬件設(shè)計(jì)細(xì)節(jié)方面的小改動(dòng),而對(duì)于調(diào)試器軟件開發(fā)而言其實(shí)并沒(méi)有變化,因?yàn)榻涌赑inout并沒(méi)有改變,痞子衡將上述各開發(fā)板原理圖里的OpenSDA電路仔細(xì)查看對(duì)比整理出了如下通用的OpenSDA硬件原理簡(jiǎn)圖:

  從上面原理簡(jiǎn)圖我們可以看出,OpenSDA電路其實(shí)非常簡(jiǎn)潔,除了電源、晶振、主芯片K20自身的調(diào)試接口外,其他跟OpenSDA調(diào)試器功能相關(guān)的主要有五部分電路:

  • 藍(lán)色LED: 指示OpenSDA調(diào)試器工作狀態(tài),主要有兩種狀態(tài),一種是常亮(正常運(yùn)行模式),另一種是閃爍(自身Firmware更新模式)。
  • Boot按鍵: 用于輔助進(jìn)入OpenSDA調(diào)試器自身Firmware更新模式(也叫MSD Bootloader模式),電路上電前按下Boot按鍵不放即可進(jìn)入MSD Bootloader模式(可在PC里看到新增名為BOOTLOADER的磁盤),往磁盤里拷貝相應(yīng)調(diào)試器Firmware文件即可完成更新。
  • USB接口: 與上位機(jī)PC連接,完成后續(xù)USB轉(zhuǎn)串口(可到PC設(shè)備管理器看到新增串口設(shè)備), SWD調(diào)試交互功能。
  • UART接口: 與目標(biāo)MCU連接。
  • SWD接口: 與目標(biāo)MCU連接。
  • 三、OpenSDA軟件設(shè)計(jì)

      隨著OpenSDA項(xiàng)目的不斷迭代,目前(2018年9月)OpenSDA調(diào)試器版本已經(jīng)更新到V2.2,飛思卡爾官網(wǎng)有 OpenSDA項(xiàng)目主頁(yè),在主頁(yè)上我們可以看到如下OpenSDA項(xiàng)目版本對(duì)比:

    3.1 軟件架構(gòu)

      不管是哪個(gè)版本的OpenSDA,其軟件架構(gòu)是一致的,如下圖所示,OpenSDA軟件主要由兩部分組成:MSD Bootloader、OpenSDA Application(Firmware),其中MSD Bootloader占據(jù)調(diào)試器主控K20芯片內(nèi)部Flash的上半?yún)^(qū),K20芯片上電永遠(yuǎn)先執(zhí)行MSD Bootloader程序,MSD Bootloader功能比較單一,就是用來(lái)更新OpenSDA Firmware,這樣使得調(diào)試器軟件升級(jí)比較容易。
      OpenSDA Firmware則是調(diào)試器的核心,調(diào)試器的主要功能(SWD調(diào)試、USB轉(zhuǎn)串口)均是這個(gè)應(yīng)用程序?qū)崿F(xiàn)的,OpenSDA Firmware占據(jù)K20芯片內(nèi)部Flash的下半?yún)^(qū),其本身不能上電自動(dòng)執(zhí)行,必須由MSD Bootloader引導(dǎo)執(zhí)行。

    3.2 后宮佳麗有三個(gè)(軟件服務(wù)商)

      說(shuō)到OpenSDA Firmware的供應(yīng)商,主要有三個(gè),分別是P&EMicro、ARM Mbed、SEGGER,且聽痞子衡一一道來(lái):

    3.2.1 原配P&E Micro

      P&EMicro公司是OpenSDA項(xiàng)目最早的Firmware軟件服務(wù)商,其Firmware軟件專為OpenSDA設(shè)計(jì),我們可以從下面網(wǎng)站下載到其開發(fā)的Firmware和配套上位機(jī)驅(qū)動(dòng):

    • P&EMicro OpenSDA主頁(yè): http://www.pemicro.com/opensda/

      不過(guò)比較遺憾的是P&EMicro公司并不開源其開發(fā)的Firmware源碼,而在OpenSDA這個(gè)立志要開源的調(diào)試器項(xiàng)目里,Firmware不開源是一件比較奇怪的事,因此P&EMicro版本的Firmware逐漸沒(méi)落。

      ARM公司(Mbed)是OpenSDA項(xiàng)目第二個(gè)Firmware軟件服務(wù)商,雖然ARM官方已經(jīng)設(shè)計(jì)了自己的ULINK調(diào)試器(ULINK主控為Cypress增強(qiáng)8051內(nèi)核芯片AN2131QC、ULINK2主控為NXP公司ARM7內(nèi)核芯片LPC2148FB064,ULINKpro主控為Xilinx VIRTEX FPGA),但為了ARM芯片的開放生態(tài),其也同時(shí)主導(dǎo)了DAPLink項(xiàng)目(早期叫CMSIS-DAP項(xiàng)目,后來(lái)更名為DAPLink),下面是其官網(wǎng):

    • ARMMbed CMSIS-DAP主頁(yè): https://os.mbed.com/handbook/cmsis-dap-interface-firmware
    • ARMMbed CMSIS-DAP源碼: https://github.com/mbedmicro/CMSIS-DAP
    • ARMMbed DAPLink主頁(yè): https://os.mbed.com/handbook/DAPLink
    • ARMMbed DAPLink源碼: https://github.com/ARMmbed/DAPLink

      DAPLink項(xiàng)目是完全開源的,目前支持的主控芯片主要有5款:K20DX, KL26, LPC11U35, LPC4322, SAM3U2C,其中K20DX即是應(yīng)用于OpenSDA的主控,另外4款芯片分別用于其他類型的調(diào)試器,此處不再展開。DAPLink版Firmware因其開放的生態(tài)使其大受歡迎,是目前的主流。

      SEGGER公司是OpenSDA項(xiàng)目第三個(gè)Firmware軟件服務(wù)商,雖然SEGGER設(shè)計(jì)已久的通用型J-Link調(diào)試器是目前市場(chǎng)上最流行的,但SEGGER并沒(méi)有因此固步自封,SEGGER看到OpenSDA調(diào)試器在Kinetis開發(fā)板上大面積推廣,想到了一個(gè)非常聰明的策略,那便是免費(fèi)為OpenSDA設(shè)計(jì)一個(gè)與J-Link軟件兼容的Firmware,使OpenSDA搖身一變成為一個(gè)簡(jiǎn)配版J-Link。

    • SEGGER OpenSDA主頁(yè): https://www.segger.com/products/debug-probes/j-link/models/other-j-links/opensda-sda-v2/

      由于SEGGER公司是個(gè)靠軟件服務(wù)收費(fèi)的商業(yè)公司,因此SEGGER版Firmware并不開源,并且調(diào)試功能上也受一定限制,但這并不影響SEGGER版Firmware的流行,因此J-Link調(diào)試器實(shí)在是太普及了,J-Link上位機(jī)軟件功能(J-Link Commander等)也非常強(qiáng)大。

      至此,飛思卡爾Kinetis MCU開發(fā)板板載OpenSDA調(diào)試器(上篇)痞子衡便介紹完畢了,掌聲在哪里~~~

    歡迎訂閱

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

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

    總結(jié)

    以上是生活随笔為你收集整理的痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。