大家知道什么是硬件仿真吗?究竟如何利用J-LINK来进行硬件仿真的呢?以下就是899电脑网小编做的整理,希望对你们有用!
知识点:什么是硬件仿真和软件仿真
硬件仿真:使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步,全速,查看资源断点等。硬件仿真是开发过程中所必须的。
软件仿真:这种方法主要是使用计算机软件来模拟运行,实际的单片机运行因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最终的设计..
J-LINK进行硬件仿真的方法
代码比较简单,所以不需要硬件调试,我们直接就一次成功了。如果代码工程比较大,难免存在一些bug,这时就有必要通过硬件调试来解决问题了。
串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如JLINK、ULINK、STLINK等就可以实时跟踪程序,从而找到你程序中的bug,使你的开发事半功倍。这里我们以JLINKV8为例,说说如何在线调试STM32。
JLINKV8支持JTAG和SWD,同时STM32也支持JTAG和SWD。所以,我们有2种方式可以用来调试,JTAG调试的时候,占用的IO线比较多,而SWD调试的时候占用的IO线很少,只需要两根即可。
JLINKV8的驱动安装比较简单,我们在这里就不说了。在安装了JLINKV8的驱动之后,我们接上JLINKV8,并把JTAG口插到ALIENTEK战舰STM32开发板上,打开之前新建的工程,点击,打开OptionsforTarget选项卡,在Debug栏选择仿真工具为Cortex-M3
J-LINK,如图所示:
上图中我们还勾选了Runtomain(),该选项选中后,只要点击仿真就会直接运行到main函数,如果没选择这个选项,则会先执行startup_stm32f10x_hd.s文件的Reset_Handler,再跳到main函数。
然后我们点击Settings,设置J-LINK的一些参数,如图所示:
我们使用J-LINKV8的SW模式调试,因为我们JTAG需要占用比SW模式多很多的IO口,而在ALIENTEK战舰STM32开发板上这些IO口可能被其他外设用到,可能造成部分外设无法使用。所以,我们建议大家在调试的时候,一定要选择SW模式。MaxClock,可以点击AutoClk来自动设置,图4.3.2中我们设置SWD的调试速度为10Mhz,这里,如果你的USB数据线比较差,那么可能会出问题,此时,你可以通过降低这里的速率来试试。
单击OK,完成此部分设置,接下来我们还需要在Utilities选项卡里面设置下载时的目标编程器,如图所示:
我们选择J-LINK来调试CortexM3,然后点击Settings,设置如图所示:
这里要根据不同的MCU选择FLASH的大小,因为我们开发板使用的是STM32F103ZET6,其FLASH大小为512KB,所以我们点击Add,并在ProgrammingAlgorithm里面选择512K型号的STM32。然后选中ResetandRun选项,以实现在编程后自动启动,其他默认设置即可。设置完成之后,如上图3所示。
在设置完之后,点击OK,然后再点击OK,回到IDE界面,编译一下工程。再点击,开始仿真(如果开发板的代码没被更新过,则会先更新代码,再仿真,你也可以通过按,只下载代码,而不进入仿真。特别注意:开发板上的B0和B1都要设置到GND,否则代码下载后不会自动运行的!),如图所示:
因为我们之前勾选了Runtomain()选项,所以,程序直接就运行到了main函数的入口处,我们在delay_init()处设置了一个断点,点击
,程序将会快速执行到该处。如图所示: