国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于arduino-due,jlink以及OpenOCD的zephyr調試平臺的搭建

2019-11-09 18:49:23
字體:
來源:轉載
供稿:網友

前文講到zephyr內核編譯后在stm32-f411re nucleo平臺上運行以及調試,其實除了上文提到的這款st平臺,最新的zphyer sdk已經支持很多種開源硬件開發板,arduino-due就是其中的另一塊.不過與st平臺不同的是,arduino-due并沒有st-link那樣的板載調試器供開發調試,所以調試時需要連接調試器進行調試,本文就介紹如何使用jlink和openOCD來調試運行zephyr內核的arduino-due平臺.    開發環境:  Ubuntu-14.04, kernel 4.4.0  arduino-due開發板  segger j-link adaptor. (固件v9.4, clone版某寶采購),支持swd+jtag  OpenOCD v1.0版

步驟  如何下載zephyr內核代碼,準備開發環境前文有講述,這里不再詳細敘述,直接進編譯步驟.

step 1: 編譯運行于arduino_due開發版的zephyr內核

   執行完環境變量初始化步驟后, 進入到zephyr/samples/hello_world目錄,執行 make BOARD=arduino_due    這里寫圖片描述

./outdir/arduino_due/zephyr.bin就是要燒寫進Flash的二進制文件.

step2: 燒寫:     連接host PC和arduino平臺, Micro-B口連接到目標板的PRograming port, 也就是距離電源口近的那個口.    連接后,如果一切順利,/dev/目錄下會生成 /dev/ttyACM0,這個是usb虛擬的串口設備節點.    這里寫圖片描述     接著執行下面的命令,設置 ttyACM0設備的波特率為1200, 根據平臺手冊,1200波特率為執行erase flash必須的參數配置. stty -F /dev/ttyACM0 speed 1200 cs8 -cstopb -parenb 這里寫圖片描述

波特率配置成功后,在hello_Word目錄下,執行命令     bossac -p ttyACM0 -e -w -v -b ./outdir/arduino_due/zephyr.bin      進行平臺燒錄, bossac是用于arduion_due的開源燒錄工具, 其代碼可以到github下載:  git clone https://github.com/shumatech/BOSSA.git

 經過簡單的./configure, make,install后,即可使用.    下圖展示的是燒寫過程:  這里寫圖片描述

燒寫完成后,新開一個shell會話,執行 sudo minicom -D /dev/ttyACM0 -o命令連接串口, 然后按平臺復位鍵對平臺進行復位, 便可以在串口終端看到內核的打印輸出: 這里寫圖片描述

注意: 使用usb串口看打印,執行燒寫命令時候必須關閉minicom和/dev/ttyACM0的連接,否則會有干擾導致燒錄失敗(“SAM-BA Operation failed”,要避免此問題可以使用usb轉串口的板卡跳線到平臺tx0,gnd,miniCOM連接/dev/ttyUSBx即可(原因可能是原理圖上tx0和 ATMEGA16U2-MU tx是同一個網絡,有沖突)

debug環境搭建:

本文介紹的調試鏈路示意圖如下所示: 這里寫圖片描述

先上圖: 這里寫圖片描述

關于跳線連接,按照arduino-due原理圖和jlink引腳排布圖逐一連接 tms, tck, tdi, tdo四條線, due的jtag口非常小, 要注意跳線焊接處不要短路. 這里寫圖片描述 openOCD自帶的jlink.cfg無法直接使用,報錯大部分是因為腳本漏掉某些配置,google了老半天,再加上自己的一些理解, 修改成下面這樣子: 這里寫圖片描述 OpenOCD tcl目錄自帶的配置文件jlink.cfg原本只有一行(第7行),一開始時openOCD報告很多error 和warning,后來幾經周折,逐個的去google, baidu找答案,CPU tap配置時考慮到due使用的是sam3x8e主控,看了一下只有target/at91sam3XXX.cfg比較靠譜, 一步步的修改成上圖的樣子,過程不再贅述.

修改完畢后,執行 命令 openocd -f ./interface/jlink.cfg, 如下圖所示,無錯誤無警告, 表示連接成功 這里寫圖片描述

新開一個shell, 執行gdb會話, 如下圖的命令序列. 這里寫圖片描述

ok,gdb和目標平臺連接成功,此時可以執行基本的gdb命令調試zephyr內核了, 是不是很爽?

arduino_due平臺有上的自帶10 pin的mini jtag connector公口,國內很難找到與之對應的connector, 所以試驗的時候跳了線, swd口和jtag口是復用pin的,本試驗原本打算使用jtag口功能,所以拉了四根主要信號線(TMS,TDO,TDI, TCK),  對應jlink.cfg文件   transport select jtag 后面在gdb調試的時候, 發現jtag連接不是很穩定,openOCD與gdb的連接經常掉線,于是就改jlink.cfg為swd模式嘗試,沒想到這一試結果非常滿意. #transport select jtag transport select swd 現在還不清楚jtag模式為什么不穩定,猜測或許是有些線沒有接上,比如jtag規定的reset, vcc, gnd等等,這也要看tap, 有些主控僅僅接上面4條線即可. swd模式下,需要的引腳數目比jtag要少,主要有兩條 MCU的JTMS/SWDIO接JTAG口的TMS; MCU的JTCK/SWCLK接JTAG口的TCK。 jtag和swd接口這樣的定義,無論是配置采用swd或者jtag模式,都不需要重新跳線,兩種模式切換不依賴硬件電路,非常方便.

發現jlink腳本只要對jlink.cfg稍作修改,注明調試接口,其他配置用 -f 選項再次導入文件.

列表內容

執行openOCD時候,用-f選項后跟配置文件, 即可在jlink.cfg文件的基礎上再導入額外配置, 變成 openocd -f interface/jlink.cfg -f target/at91sam3XXX.cfg (或者openocd -f interface/jlink.cfg -f board/atmel_sam3x_ek.cfg 導入板級配置文件也可)

這里寫圖片描述

openOCD -f 選項可以多次使用,可以使多個的配置文件生效.

openOCD連接成功后,默認情況下并不復位CPU,直接gdb登錄3333端口連接,會出現”WARNING! The target is already running. >All changes GDB did to registers will be discarded! Waiting for target to halt.”警告, 如果想從_reset處從頭開始debug, 可以給利用 >openOCD的 -c 選項發送復位命令給處理器,完整的命令是 openocd -f ./tcl/interface/jlink.cfg -f ./tcl/target/at91sam3XXX.cfg -c >’init’ -c ‘reset halt’, 如果是attach模式,只執行 init, halt 兩個命令就可以了.

ok ,done. J-link接口定義

仿真器端口 連接目標板 備注
VCC MCU電源VCC VCC
VCC MCU電源VCC VCC
TRST TRST Test ReSeT/ pin
GND GND或懸空
TDI TDI Test Data In pin
GND GND或懸空
TMS SWIO TMS, SWIO JTAG:Test Mode State pin ; SWD: Data I/O pin
GND GND或懸空
TCLK SWCLK TMS, SWCLK JTAG: Test Clock pin ; SWD: Clock pin
GND GND或懸空
RTCK RTCK
GND GND或懸空
TDO TDO Test Data Out pin
GND GND或懸空
RESET RESET RSTIN pin
GND GND或懸空
NC NC
GND GND或懸空
NC NC
GND GND或懸空

segger jlink引腳排列:

這里寫圖片描述這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 房山区| 梁平县| 阿勒泰市| 尉犁县| 闸北区| 泗阳县| 基隆市| 息烽县| 达日县| 琼结县| 安义县| 绥化市| 延庆县| 镇雄县| 仙游县| 宣化县| 高邑县| 望都县| 芷江| 沂水县| 富蕴县| 桦甸市| 扶余县| 沾益县| 静海县| 普兰店市| 苍溪县| 和平区| 拜城县| 承德市| 密云县| 梁平县| 宾阳县| 祁门县| 石台县| 那坡县| 桂林市| 那坡县| 布拖县| 龙里县| 科技|