打印

STM32编程方式,BOOT模式,JTAG总结

[复制链接]
354|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
スモモ|  楼主 | 2018-7-27 08:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的内容从网上资料整合的,先前一直对ISP、IAP、stm32的BOOT模式、JTAG的概念不清晰,现在清楚一点了,整理下来,希望对大家有些帮助。有问题欢迎指出。ps:这些内容是针对stm32来说的。


        单片机在线编程


        在线编程目前有两种方式:在系统编程(ISP),在应用编程(IAP)


        在系统编程(ISP)


        系统一般指电路系统。ISP一般是通过单片机专用的编程接口(一般是串口)对单片机内部的Flash存储器进行编程,ISP的实现一般需要很少的外部电路辅助实现。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。


        在应用编程(IAP)


        IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序(boot)时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。IAP的实现更加灵活,通过专门设计的固件程序来编程内部存储器,通常可利用单片机的串行口接到计算机的RS232口,也可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。


        程序需要由两部分组成:1.bootloader;2.应用程序


        bootloader:负责更新程序的拷贝和跳转到应用程序;


        应用程序:运行程序要实现的功能和更新程序的下载、保存。


        第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。


        首先,开机时运行bootloader,bootloader检测片内Flash(或者片外Flash或者FRAM)“程序更新标志”是否置位,如果没有,则直接跳转到应用程序。应用程序运行时检测无线模块收到的数据命令,如果有updata命令,则接收程序,并保存到片内Flash的靠后的代码段(或者片外Flash),接收保存完数据后,片内Flash(或者片外Flash或者FRAM)“程序更新标志”置位,然后重启MCU。MCU重新运行bootloader,此时bootloader检测到有程序更新标志,则将片内Flash的靠后的代码段(或者片外Flash)的更新代码拷贝回应用程序代码段,并复位更新程序标志,然后跳转到应用程序,至此程序更新完毕。


        ISP与JTAG


        在stm32里,所说的 ISP一般指的是通过SPI接口进行的在系统编程(ISP),此时stm32的BOOT模式设置为系统存储器启动(BOOT0 = 1,BOOT1 = 0),表示启动内部的ISP程序。


        JTAG编程,也是在系统编程(ISP)的一种。JTAG则是通过JTAG接口进行的在系统编程(ISP)。JTAG除了可以烧写程序以外,还可以进行调试。


        ISP是一种编程方式,JTAG、串口(SPI接口)是一种编程接口。


        BOOT模式与JTAG


        BOOT模式说的是系统上电启动后,程序从哪里加载,运行。在启动前设置好,启动时起作用。BOOT模式有三种,从系统存储器启动,从Flash启动,从Ram启动。


        JTAG编程,JTAG口是单片机的内核,通过它可以控制CPU,来达到烧写程序,调试的功能。它是在系统启动后起作用,与BOOT模式无关。


        但如果你用JTAG下载程序到Flash里,想要运行你的程序,你的BOOT模式必须设置为Flash启动。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

458

主题

484

帖子

1

粉丝