J-LINK如何進行硬件仿真
J-LINK如何進行硬件仿真
J-LINK究竟是如何進行硬件仿真的呢?以下就是學習啦小編做的整理,希望對你們有用!
J-LINK進行硬件仿真
代碼比較簡單,所以不需要硬件調(diào)試,我們直接就一次成功了。如果代碼工程比較大,難免存在一些bug,這時就有必要通過硬件調(diào)試來解決問題了。
串口只能下載代碼,并不能實時跟蹤調(diào)試,而利用調(diào)試工具,比如JLINK、ULINK、STLINK等就可以實時跟蹤程序,從而找到你程序中的bug,使你的開發(fā)事半功倍。這里我們以JLINKV8為例,說說如何在線調(diào)試STM32。
JLINKV8支持JTAG和SWD,同時STM32也支持JTAG和SWD。所以,我們有2種方式可以用來調(diào)試,JTAG調(diào)試的時候,占用的IO線比較多,而SWD調(diào)試的時候占用的IO線很少,只需要兩根即可。
JLINKV8的驅(qū)動安裝比較簡單,我們在這里就不說了。在安裝了JLINKV8的驅(qū)動之后,我們接上JLINKV8,并把JTAG口插到ALIENTEK戰(zhàn)艦STM32開發(fā)板上,打開之前新建的工程,點擊,打開OptionsforTarget選項卡,在Debug欄選擇仿真工具為Cortex-M3
J-LINK,如圖所示:
上圖中我們還勾選了Runtomain(),該選項選中后,只要點擊仿真就會直接運行到main函數(shù),如果沒選擇這個選項,則會先執(zhí)行startup_stm32f10x_hd.s文件的Reset_Handler,再跳到main函數(shù)。
然后我們點擊Settings,設(shè)置J-LINK的一些參數(shù),如圖所示:
我們使用J-LINKV8的SW模式調(diào)試,因為我們JTAG需要占用比SW模式多很多的IO口,而在ALIENTEK戰(zhàn)艦STM32開發(fā)板上這些IO口可能被其他外設(shè)用到,可能造成部分外設(shè)無法使用。所以,我們建議大家在調(diào)試的時候,一定要選擇SW模式。MaxClock,可以點擊AutoClk來自動設(shè)置,圖4.3.2中我們設(shè)置SWD的調(diào)試速度為10Mhz,這里,如果你的USB數(shù)據(jù)線比較差,那么可能會出問題,此時,你可以通過降低這里的速率來試試。
單擊OK,完成此部分設(shè)置,接下來我們還需要在Utilities選項卡里面設(shè)置下載時的目標編程器,如圖所示:
我們選擇J-LINK來調(diào)試CortexM3,然后點擊Settings,設(shè)置如圖所示:
這里要根據(jù)不同的MCU選擇FLASH的大小,因為我們開發(fā)板使用的是STM32F103ZET6,其FLASH大小為512KB,所以我們點擊Add,并在ProgrammingAlgorithm里面選擇512K型號的STM32。然后選中ResetandRun選項,以實現(xiàn)在編程后自動啟動,其他默認設(shè)置即可。設(shè)置完成之后,如上圖3所示。
在設(shè)置完之后,點擊OK,然后再點擊OK,回到IDE界面,編譯一下工程。再點擊,開始仿真(如果開發(fā)板的代碼沒被更新過,則會先更新代碼,再仿真,你也可以通過按,只下載代碼,而不進入仿真。特別注意:開發(fā)板上的B0和B1都要設(shè)置到GND,否則代碼下載后不會自動運行的!),如圖所示:
因為我們之前勾選了Runtomain()選項,所以,程序直接就運行到了main函數(shù)的入口處,我們在delay_init()處設(shè)置了一個斷點,點擊
,程序?qū)焖賵?zhí)行到該處。如圖所示: