0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 IAP 應(yīng)用編程幾個要點

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-08 11:42 ? 次閱讀

我們??吹絀SP、ICP、IAP等縮寫詞組,它們的主要作用就是對程序代碼進行更新(編程)。

下面將介紹關(guān)于編程的基礎(chǔ)知識,以及結(jié)合STM32官方提供的Demo講述一下關(guān)于編程的內(nèi)容。

1關(guān)于ISP、ICP、IAP

1.ISP

ISP:In System Programing,在系統(tǒng)編程。

比如:使用STC-ISP對STC芯片編程,利用Flash loader對STM32編程等。

支持ISP的芯片一般在芯片內(nèi)部固化了一段(用ISP升級的)boot程序。

2.ICP

In Circuit Programing,在電路編程。

ICSP:In-Circuit Serial Programming,在電路串行編程。如:對EEPROM編程等。

ICP編程方式網(wǎng)上各有說法,從字面含義(在電路)來說,所有處于編程的芯片都需要上電,都處于電路中。不嚴格來說利用J-Link、ST-Link、e-Link32等工具進行編程也屬于在電路編程(ICP)。

在維基百科中,在系統(tǒng)編程(ISP),也稱為在電路串行編程(ICSP)。

3.IAP

In applicating Programing,在應(yīng)用編程。

這里是本文說的重點,可以簡單理解為:在程序運行的過程中進行編程(升級程序,更新固件)。

IAP是用戶自己的程序在運行過程中對User Flash的部分區(qū)域進行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預(yù)留的通信口對產(chǎn)品中的固件程序進行更新升級。[來自百度百科]


IAP通信口

IAP的通信口有許多種:UART串口、ETH以太網(wǎng)、I2C、SPI......等。按理說只要能傳輸數(shù)據(jù)的通信口都能實現(xiàn)IAP的功能。

本文結(jié)合STM32官網(wǎng)提供的例程,利用UART在應(yīng)用編程(IAP)。

2ST官網(wǎng)IAP例程

ST官網(wǎng)提供的IAP例程有很多很多,比如:

庫:有使用標(biāo)準外設(shè)庫(SPL)的、有使用硬件抽象層庫(HAL)的;

通信口:有使用USART的,有使用I2C的,有使用ETH的等。

MCU型號:STM8S、STM32F1、F4、L1等幾乎全系列都有。

ST官網(wǎng)提供的各種IAP,其方法和原理其實都類似:就是將程序文件(二進制文件)寫入FLASH。

本文以最簡單的基于(STM32F10x)利用SPL庫+UART的IAP為例來給大家講述一下。(復(fù)雜都是從基礎(chǔ)開始,后續(xù)逐步為大家更新更高級的IAP功能)

STM32F10xxx in-application programming using the USART官方地址:

https://www.stmicroelectronics.com.cn/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32008.html

相關(guān)參考文檔和代碼例程都在這個網(wǎng)址下載,下一章節(jié)針對這里該IAP講述幾點重要內(nèi)容。

我下載后上傳至百度網(wǎng)盤地址:

https://pan.baidu.com/s/1umdwlShsJpL8rLdeb9n6Cw

密碼:2t3j

(提示:該鏈接后期可能會失效,建議到官網(wǎng)下載)

3IAP例程幾個要點

1.例程概要說明

該代碼工程基于STM32F1,使用UART通信口,利用超級終端(上位機)、通過YModem協(xié)議實現(xiàn)代碼程序的數(shù)據(jù)傳輸和寫入Flash。

2.IAP軟件工程

我們解壓(上面)下載好的軟件工程包,進入目錄,通過MDK-ARM(為例),如下圖;

本文以MDK-ARM為例,你也可以通過EWARM、TrueSTUDIO等工具打開。

因該工程代碼是之前用MDK-ARMV4版本建立的,現(xiàn)在用V5版本打開會提示如下信息

只需要點擊“Migrate to Device Pack”即可,V5版本使用了“設(shè)備支持包”,這里大概意思就是使用設(shè)備支持包兼容以前老版本工程。

選擇對應(yīng)的目標(biāo)(我們以F103ZE為例,選擇大容量、小容量在于他們的FLASH頁大小不一樣),選擇10E-EVAL,如下圖:

直接編譯,沒有錯誤警告,此時,如果有對應(yīng)的板卡,可直接下載。

提示:

1.前提:MDK下載、安裝

2.什么是目標(biāo)?簡述工作空間、工程、目標(biāo)

3.說明

這個程序只是IAP程序,放在以0x0800 0000為起始的地址。而IAP程序的作用是將應(yīng)用程序(二進制文件)下載到應(yīng)用程序?qū)?yīng)的地址。

因此,我們會將FLASH劃分我兩個區(qū)域:IAP程序區(qū)域,APP程序區(qū)域。

這里IAP程序有兩個作用:1.對APP程序編程; 2.引導(dǎo)程序跳轉(zhuǎn)至應(yīng)用程序。所以,這段APP程序也叫BootLoader。

為防止IAP程序不被(第一部分代碼)不被意外破壞,一般建議對IAP程序進行“寫保護”。

這個APP地址0x0800 3000是怎樣來的呢?

見IAP程序代碼:

所以,我們APP應(yīng)用程序的其起始地址就必須對應(yīng)為0x0800 3000才行。不然,跳轉(zhuǎn)之后沒有應(yīng)用程序,則會出錯。

提示:

它這里是通過按鍵方式選擇執(zhí)行IAP,還是執(zhí)行APP;一般建議通過倒計時(比如5s):5s之內(nèi)通過串口選擇下載,否則自動跳轉(zhuǎn)到APP程序執(zhí)行。這里就需要自己根據(jù)情況修改代碼。

Demo里程可以通過選擇3跳轉(zhuǎn)到APP程序,初學(xué)者可以直接不使用按鍵判斷,進行測試,如下圖,修改一下:

4APP代碼和地址問題

上一章節(jié)是講述的IAP程序,本節(jié)講APP程序修改地址的問題。

1.添加代碼

在代碼開始設(shè)置向量表偏移:

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000);

0x3000代表偏移量

2.修改配置

project -> Options

3.生成Bin

具體可以參看我另外一篇文章:

MDK-ARM如何生產(chǎn)Bin文件

4.APP程序代碼

為方便大家學(xué)習(xí),我提供在按照上面修改過的APP代碼工程給大家下載,地址和上面一樣:

https://pan.baidu.com/s/1umdwlShsJpL8rLdeb9n6Cw

密碼:2t3j

5超級終端安裝,程序下載

1.超級終端下載、安裝

官方提供的文檔是HyperTerminal超級終端下載程序,這個可以百度谷歌搜索下載安裝。我這后面一直使用SecureCRT這款終端,這終端屬于商業(yè)軟件,但在網(wǎng)上可以找到很多po解的辦法。

為方便大家調(diào)試,我這里提供下載鏈接

https://pan.baidu.com/s/13yjA9q0Eltfer4oLPbGceQ

密碼:5r5m

(提示:該鏈接后期可能會失效,建議到官網(wǎng)下載)

2.程序下載

硬件連接好,將生成的程序文件(Demo.bin)指定位置(為方便測試下載,我拷貝到桌面)-> 打開終端 ->鍵盤按1 ->選擇文件 ->下載完成 ->鍵盤按3執(zhí)行程序。

以上所有內(nèi)容就是關(guān)于IAP的基礎(chǔ)知識和例程說明,更多的IAP在線升級功能講解敬請等待。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2262

    文章

    10846

    瀏覽量

    353661
  • IAP
    IAP
    +關(guān)注

    關(guān)注

    2

    文章

    163

    瀏覽量

    24183
  • ICP
    ICP
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    12739
收藏 人收藏

    評論

    相關(guān)推薦

    stm32單片機用什么軟件編程

    STM32單片機是一種廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域的微控制器,具有高性能、低功耗、豐富的外設(shè)接口等特點。要對STM32單片機進行編程,需要選擇合適的軟件工具。 概述 STM32單片機
    的頭像 發(fā)表于 09-02 10:16 ?578次閱讀

    STM32F1 IAP操作讀保護選項字節(jié)設(shè)置,APP使用系統(tǒng)復(fù)位跳轉(zhuǎn)后無法運行IAP的原因?

    最近調(diào)試一個程序,是基于STM32F1做的IAP,升級前后需要修改選項字節(jié),F(xiàn)LASH_EraseOptionBytes函數(shù)內(nèi)OB->RDP=RDP_Key語句實現(xiàn)讀保護的解除,如果我
    發(fā)表于 05-13 08:09

    IAP跳轉(zhuǎn)APP開始可以,如果從APP跳回IAP后再跳到APP失敗的原因?

    IAP 跳轉(zhuǎn)APP 開始可以,但如果從APP跳回IAP后,再跳到APP失敗。 我是按照 下面ST官方文檔來的: AN4657 Application note STM32
    發(fā)表于 04-23 07:24

    SiC驅(qū)動電源設(shè)計要點(變壓器部分)

    在設(shè)計SiC(碳化硅)驅(qū)動電源時,需要考慮以下幾個關(guān)鍵要點
    的頭像 發(fā)表于 03-18 18:02 ?1424次閱讀
    SiC驅(qū)動電源設(shè)計<b class='flag-5'>要點</b>(變壓器部分)

    什么ISP?什么是IAP

    做單片機開發(fā)的工程師經(jīng)常會聽到兩個詞:ISP和IAP,但新手往往對這兩個概念不是很清楚,今天就來和大家聊聊什么是ISP,什么是IAP?
    的頭像 發(fā)表于 01-28 09:26 ?4100次閱讀
    什么ISP?什么是<b class='flag-5'>IAP</b>?

    STM32F10xxx微控制器的閃存存儲器燒寫手冊

    編程手冊介紹了如何燒寫STM32F101xx、STM32F102xx和STM32F103xx微控制器的閃存存儲器。為方便起見,在本文中除特別說明外,統(tǒng)稱它們?yōu)?/div>
    發(fā)表于 11-28 15:16 ?2次下載

    如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中編程(IAP)

    如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中編程(IAP)
    的頭像 發(fā)表于 11-07 17:20 ?1548次閱讀
    如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中<b class='flag-5'>編程</b>(<b class='flag-5'>IAP</b>)

    AT32 IAP using the USART

    IAP(In Application Programming)即在應(yīng)用編程IAP 是用戶自己的程序在運行過程中對 UserFlash 的部分區(qū)域進行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預(yù)留
    發(fā)表于 11-06 17:28 ?0次下載

    分享一種STM32F407的鎖相環(huán)PLL重新配置方法

    老農(nóng)最近搞基于STM32F407的IAP升級固件升級功能,遇到了這樣一個問題:IAP引導(dǎo)程序和APP程序都是基于STM32CUBEMX的程序模板生成,單獨調(diào)試運行APP功能也都正常,但
    的頭像 發(fā)表于 10-30 17:30 ?1881次閱讀
    分享一種<b class='flag-5'>STM32</b>F407的鎖相環(huán)PLL重新配置方法

    51單片機有哪些型號可以使用IAP編程模式?

    51單片機中的P89V51RD2可以使用IAP編程模式其它的還有那些?
    發(fā)表于 10-27 06:55

    STM32串口中斷及DMA接收常見的幾個問題

    STM32串口中斷及DMA接收常見的幾個問題
    的頭像 發(fā)表于 10-26 16:41 ?3274次閱讀
    <b class='flag-5'>STM32</b>串口中斷及DMA接收常見的<b class='flag-5'>幾個</b>問題

    使用CAN的AT32 IAP

    對于AT32 MCU,除了出廠固化的bootloader,用戶也可以在應(yīng)用程序中編寫自己的bootloader程序,用于最終產(chǎn)品的固件更新。此功能稱為應(yīng)用程序內(nèi)編程IAP)。本應(yīng)用筆記的目的是提供
    發(fā)表于 10-26 06:39

    如何使用AT32F437以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中編程(IAP)的解決方案

    本應(yīng)用筆記專為使用AT32F437微控制器的開發(fā)人員編寫。它提供了如何使用AT32F437以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中編程(IAP)的解決方案。有兩種基于LwIP TCP/IP協(xié)議棧的解決方案:? 使用TFTP(簡單文件傳輸協(xié)議)的IAP
    發(fā)表于 10-25 07:41

    STM32速成筆記(15)—串口IAP

    IAP,英文全稱In Application Programming,在應(yīng)用中編程。很好理解,就是在程序運行過程中我們進行程序的燒寫,或者叫升級。
    的頭像 發(fā)表于 10-24 17:19 ?2890次閱讀
    <b class='flag-5'>STM32</b>速成筆記(15)—串口<b class='flag-5'>IAP</b>

    如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中編程(IAP)的解決方案

    AT32F407 IAP using the EMAC提供了如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應(yīng)用中編程(IAP)的解決方案。
    發(fā)表于 10-24 07:35