學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦硬件知識(shí) > 硬件知識(shí) > J-LINK如何進(jìn)行硬件仿真

J-LINK如何進(jìn)行硬件仿真

時(shí)間: 文輝886 分享

J-LINK如何進(jìn)行硬件仿真

  J-LINK究竟是如何進(jìn)行硬件仿真的呢?以下就是學(xué)習(xí)啦小編做的整理,希望對(duì)你們有用!

  J-LINK進(jìn)行硬件仿真

  代碼比較簡(jiǎn)單,所以不需要硬件調(diào)試,我們直接就一次成功了。如果代碼工程比較大,難免存在一些bug,這時(shí)就有必要通過硬件調(diào)試來解決問題了。

  串口只能下載代碼,并不能實(shí)時(shí)跟蹤調(diào)試,而利用調(diào)試工具,比如JLINK、ULINK、STLINK等就可以實(shí)時(shí)跟蹤程序,從而找到你程序中的bug,使你的開發(fā)事半功倍。這里我們以JLINKV8為例,說說如何在線調(diào)試STM32。

  JLINKV8支持JTAG和SWD,同時(shí)STM32也支持JTAG和SWD。所以,我們有2種方式可以用來調(diào)試,JTAG調(diào)試的時(shí)候,占用的IO線比較多,而SWD調(diào)試的時(shí)候占用的IO線很少,只需要兩根即可。

  JLINKV8的驅(qū)動(dòng)安裝比較簡(jiǎn)單,我們?cè)谶@里就不說了。在安裝了JLINKV8的驅(qū)動(dòng)之后,我們接上JLINKV8,并把JTAG口插到ALIENTEK戰(zhàn)艦STM32開發(fā)板上,打開之前新建的工程,點(diǎn)擊,打開OptionsforTarget選項(xiàng)卡,在Debug欄選擇仿真工具為Cortex-M3

  J-LINK,如圖所示:

  

  上圖中我們還勾選了Runtomain(),該選項(xiàng)選中后,只要點(diǎn)擊仿真就會(huì)直接運(yùn)行到main函數(shù),如果沒選擇這個(gè)選項(xiàng),則會(huì)先執(zhí)行startup_stm32f10x_hd.s文件的Reset_Handler,再跳到main函數(shù)。

  然后我們點(diǎn)擊Settings,設(shè)置J-LINK的一些參數(shù),如圖所示:

  

  我們使用J-LINKV8的SW模式調(diào)試,因?yàn)槲覀僇TAG需要占用比SW模式多很多的IO口,而在ALIENTEK戰(zhàn)艦STM32開發(fā)板上這些IO口可能被其他外設(shè)用到,可能造成部分外設(shè)無法使用。所以,我們建議大家在調(diào)試的時(shí)候,一定要選擇SW模式。MaxClock,可以點(diǎn)擊AutoClk來自動(dòng)設(shè)置,圖4.3.2中我們?cè)O(shè)置SWD的調(diào)試速度為10Mhz,這里,如果你的USB數(shù)據(jù)線比較差,那么可能會(huì)出問題,此時(shí),你可以通過降低這里的速率來試試。

  單擊OK,完成此部分設(shè)置,接下來我們還需要在Utilities選項(xiàng)卡里面設(shè)置下載時(shí)的目標(biāo)編程器,如圖所示:

  

  我們選擇J-LINK來調(diào)試CortexM3,然后點(diǎn)擊Settings,設(shè)置如圖所示:

  

  這里要根據(jù)不同的MCU選擇FLASH的大小,因?yàn)槲覀冮_發(fā)板使用的是STM32F103ZET6,其FLASH大小為512KB,所以我們點(diǎn)擊Add,并在ProgrammingAlgorithm里面選擇512K型號(hào)的STM32。然后選中ResetandRun選項(xiàng),以實(shí)現(xiàn)在編程后自動(dòng)啟動(dòng),其他默認(rèn)設(shè)置即可。設(shè)置完成之后,如上圖3所示。

  在設(shè)置完之后,點(diǎn)擊OK,然后再點(diǎn)擊OK,回到IDE界面,編譯一下工程。再點(diǎn)擊,開始仿真(如果開發(fā)板的代碼沒被更新過,則會(huì)先更新代碼,再仿真,你也可以通過按,只下載代碼,而不進(jìn)入仿真。特別注意:開發(fā)板上的B0和B1都要設(shè)置到GND,否則代碼下載后不會(huì)自動(dòng)運(yùn)行的!),如圖所示:

  

  因?yàn)槲覀冎肮催x了Runtomain()選項(xiàng),所以,程序直接就運(yùn)行到了main函數(shù)的入口處,我們?cè)赿elay_init()處設(shè)置了一個(gè)斷點(diǎn),點(diǎn)擊

  ,程序?qū)?huì)快速執(zhí)行到該處。如圖所示:

  

1688985