stm32 iap升级
一、介紹
IAP即為In Application Programming(在應(yīng)用中編程),簡單來說就是程序自己可以讀寫存儲程序的flash空間,在程序上講就是實(shí)現(xiàn)flash讀和flash寫兩個(gè)函數(shù),通過這個(gè)我們可以實(shí)現(xiàn)任意通信方式的燒寫程序,比如網(wǎng)絡(luò)燒寫、can燒寫、spi燒寫等等
升級,指的是燒寫程序,單片機(jī)默認(rèn)燒寫程序的方式
1、isp
2、仿真器燒寫對應(yīng)硬件就是swd和jtag燒寫
默認(rèn)燒寫isp就是廠商芯片內(nèi)部提供的串口燒寫,需要設(shè)置對應(yīng)的boot選項(xiàng),燒寫速度為串口速度11k/s,仿真器燒寫使用的是swd接口或者jtag接口,需要專門的仿真器,每個(gè)廠商都是自己仿真器,下載速度較快一般2M/s以上,重點(diǎn)在于一旦做成產(chǎn)品,產(chǎn)品有外殼封住了不方便升級程序,這個(gè)時(shí)候我們的IAP升級就體現(xiàn)出作用了,比如做成網(wǎng)絡(luò)升級,只需要插一根網(wǎng)線就可以完成下載程序,甚至可以遠(yuǎn)程升級,只要產(chǎn)品連上網(wǎng)絡(luò),我們在幾十公里的遠(yuǎn)端也可以完成升級程序
二、IAP升級的實(shí)現(xiàn)原理
1、實(shí)現(xiàn)方式在程序里面寫入另一個(gè)應(yīng)用程序
這里寫入的地方不能自己程序的位置,只能寫新的位置
我們把程序分成兩個(gè),一個(gè)負(fù)責(zé)包含flash讀寫的燒寫的啟動(dòng)程序,我們成為bootloader
另一個(gè)就是我們平時(shí)做的應(yīng)用功能程序app
bootloader里面我們要實(shí)現(xiàn)
1、接收通信接口傳過來的燒寫文件
2、將接收的燒寫文件寫入flash
3、寫入完成跳轉(zhuǎn)到應(yīng)用程序的地址
app程序的實(shí)現(xiàn)
就是我們正常的功能程序,不需要其他的變化
燒寫,默認(rèn)燒寫都是在0地址開始,所以我們需要修改編譯選項(xiàng)中的兩個(gè)程序?qū)?yīng)的地址
bootloader的燒寫需要用燒寫器或者isp燒寫
app直接iap燒寫就行
第二,單獨(dú)的程序里面是有中斷向量表的,中斷向向量表保存的就是中斷函數(shù)的地址,兩個(gè)程序的中斷函數(shù)都是獨(dú)立的,但是程序運(yùn)行的時(shí)候并不知道,所以我們要修改兩個(gè)程序的中斷向量表
//待更新
總結(jié)
以上是生活随笔為你收集整理的stm32 iap升级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开启Windows7快速启动栏
- 下一篇: 富媒体消息和传统短信有何区别?