国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32/GD32 BootLoader升級 IAP升級

這篇具有很好參考價值的文章主要介紹了STM32/GD32 BootLoader升級 IAP升級。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

如果我們的App 程序起始地址在0x08006000 ,并且App 的中斷向量表在起始地址,那么BootLoader 程序下載App 后,為了App 程序能正確運行,開始App 程序的運行后第一步,就要把中斷向量表重定位到0x08006000 那里。

跳轉(zhuǎn)到新程序運行

我們的BootLoader下載App程序后,App程序就需要做同樣的事情。主要有三個步驟,其中BootLoader程序需要做的是:

  • 跳轉(zhuǎn)到復位向量

App需要做的是:

  • 重定位中斷向量表
  • 設置棧指針

STM32/GD32 BootLoader升級 IAP升級

?文章來源地址http://www.zghlxwxcb.cn/news/detail-502641.html

根據(jù)上圖分析加入IAP后的起動和運行過程

  1. STM32復位后,還是從0X08000004地址取出復位中斷向量的地址,并跳轉(zhuǎn)到復位中斷服務程序,在運行完復位中斷服務程序之后跳轉(zhuǎn)到IAP的main函數(shù),如將IAP看作是一個APP的話,那么此部分和正常起動是一樣的。(此步=執(zhí)行復位中斷服務程序+跳轉(zhuǎn)main,即將正常運行的①和②合并了)。
  2. ?在執(zhí)行完IAP以后(固件升級或直接跳轉(zhuǎn)),跳轉(zhuǎn)至APP的復位向量表(APP的復位中斷向量起始地址為0X08000004+N+M)。
  3. ?取出APP的復位中斷向量的地址,并跳轉(zhuǎn)執(zhí)行新程序的復位中斷服務程序,隨后跳轉(zhuǎn)至APP的main函數(shù)(此步=執(zhí)行復位中斷服務程序+跳轉(zhuǎn)main)
  4. ?同樣main函數(shù)為一個超循環(huán),并且注意到此時STM32的FLASH,在不同位置上,共有兩個中斷向量表。在main函數(shù)執(zhí)行過程中,如果CPU得到一個中斷請求,PC指針仍強制跳轉(zhuǎn)到地址0X08000004中斷向量表處,而不是APP程序的中斷向量表。
  5. ?程序再根據(jù)我們設置的中斷向量表偏移量,跳轉(zhuǎn)到對應中斷源的APP的中斷服務程序中,
  6. 在執(zhí)行完中斷服務程序后,程序返回main函數(shù)繼續(xù)運行。

gd32的啟動文件:

STM32/GD32 BootLoader升級 IAP升級

升級bootloader調(diào)試記錄

目前boot的實現(xiàn)方式有兩種

  1. 一直是boot里面只做文件拷貝、版本對比與跳轉(zhuǎn)。這種方法的好處是不需要在boot中添加通訊協(xié)議及相關的通訊功能。但是升級需要外部有一個備份區(qū)來進行存儲升級數(shù)據(jù),占用空間較大,但是升級失敗后,依然可以運行之前的app,保證機器能一直有app可以使用。
  2. 另外一種是在boot里面增加通訊功能,讓其具備接收數(shù)據(jù)、并將數(shù)據(jù)寫到指定位置的特性。使用這種方式可以實現(xiàn)不要備份區(qū)升級、以此來滿足小容量單片機的需求。每次進行升級都會對app區(qū)進行擦寫。這樣就會導致一個問題,當升級失敗后,會一直停留在boot等待再一次升級,直到升級成功后,才能去運行app。

升級app調(diào)試記錄

如果使用了bootloader后需要調(diào)試app應用需要做一下操作

1、修改ROM1起始位置及大小

STM32/GD32 BootLoader升級 IAP升級

?

2、修改啟動文件(.s)中的NVIC中斷向量表的偏移。比如,我的app其中地址的偏移為

#define VECT_TAB_OFFSET (uint32_t)0x1E00 /* vector table base offset */

在SystemInit中會用到

3、修改debug的app堆棧指針的偏移,這里使用外部加載ini文件的方式。

文件內(nèi)容

SP = _RDWORD(0x08001E00); // Setup Stack Pointer

PC = _RDWORD(0x08001E04); // Setup Program Counter

STM32/GD32 BootLoader升級 IAP升級

?

4、到這里你就可以開心的調(diào)試自己的代碼了。

STM32/GD32 BootLoader升級 IAP升級

?

到了這里,關于STM32/GD32 BootLoader升級 IAP升級的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32 ——bootloader IAP

    STM32 ——bootloader IAP

    本文使用單片機型號:STM32F104xx IAP(In Application Programming) 是用戶自己的程序在運行過程中對 User Flash 的部分區(qū)域進行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預留的通信口對產(chǎn)品中的固件程序進行更新升級。為了實現(xiàn) IAP 功能,系統(tǒng)將分為 bootloader 和 app 兩部分。bo

    2023年04月09日
    瀏覽(20)
  • GD32F4XX IAP升級

    GD32F4XX IAP升級

    這里使用的是GD32F405RG,flash 為1M(0x08000000 - 0x080FFFFF),具體參考官方手冊 因為每個芯片的falsh大小不一樣,地址劃分根據(jù)實際flash大小和自己的設計去分配就好,?自己的址劃分如下 : BOOT_ADDRESS:0x08000000 - 0x08003FFF? ? ?16k(扇區(qū)0) APP_ADDRESS:0x08004000 - 0x0807FFFF? ? ?512k-16

    2024年02月12日
    瀏覽(22)
  • STM32 IAP應用開發(fā)——自制BootLoader

    STM32 IAP應用開發(fā)——自制BootLoader

    什么是IAP? IAP(In-Application Programming) 指MCU可以在系統(tǒng)中獲取新代碼并對自己重新編程,即可用程序來改變程序。在應用編程(IAP)是用戶的應用代碼對片內(nèi)Flash存儲器進行擦除/編程的方法。這種方式的典型應用就是用一小段代碼來實現(xiàn)程序的下載,實際上單片機的ISP功能就

    2024年02月13日
    瀏覽(23)
  • stm32 在線升級程序 bost IAP程序 + app程序

    機器內(nèi) bootloader程序 啟動默認程序 默認程序有 串口判斷 是否收到 升級命令 收到升級命令后 接受串口發(fā)送過來的 更新程序 接受完成后 跳轉(zhuǎn)到新程序位置開始執(zhí)行 https://www.zhihu.com/people/lian-zhu-50 首先arm單片機控制程序運行是通過PC指針完成的,PC指到哪里,程序就運行到哪里

    2024年02月10日
    瀏覽(24)
  • STM32F407串口IAP遠程升級程序

    STM32F407串口IAP遠程升級程序

    相關代碼和工程文件鏈接:https://pan.baidu.com/s/1wN4THWJwqzjjIe7e2TENBA?pwd=o86o 提取碼:o86o ????????STM32代碼燒錄主要有三種:ICP、ISP、IAP。 ????????ICP(In Circuit Programing),在電路編程,通過JTAG或者SWD接口進行程序的燒錄,就是平時利用ST-Link或者J-Link燒錄程序; ??????

    2024年02月10日
    瀏覽(59)
  • STM32之Bootloader、USB、IAP/DFU下載

    STM32 IAP應用開發(fā)——通過內(nèi)置DFU實現(xiàn)USB升級(方式2) STM32 IAP應用開發(fā)——通過內(nèi)置DFU實現(xiàn)USB升級(方式1) STM32程序下載4:通過STM32CubePro-USB下載 STM32程序下載3:通過STM32CubePro-UART下載 STM32程序下載2:通過STM32CubePro-ST-Link下載 如何使用串口來給STM32下載程序 通過STM32內(nèi)置的U

    2024年02月02日
    瀏覽(26)
  • 國民技術N32G430開發(fā)筆記(9)- IAP升級 Bootloader的制作

    國民技術N32G430開發(fā)筆記(9)- IAP升級 Bootloader的制作

    1、上節(jié)提到Flash的分區(qū),0x8000000-0x8004000為Boot分區(qū),我們的bootloader就燒錄到此分區(qū)。 Bootloader很簡單,新建一個普通的工程, 也不用初始化外部設備,開機后,直接跳轉(zhuǎn)到 App分區(qū)所在的地址即可, 當然App的分區(qū)程序也要提前燒錄進去, 否則也是跳不過去的。 代碼 開機延時

    2024年02月02日
    瀏覽(51)
  • 使用STM32F103的串口實現(xiàn)IAP程序升級功能

    使用STM32F103的串口實現(xiàn)IAP程序升級功能

    ??IAP程序燒錄全過程演示: ?這幾天折騰IAP升級功能,狂補了很多相關BootLoader相關的知識。本來最想實現(xiàn)IAP升級程序的方式是,基于SPI通訊的SD卡,借助掛載的FatFS文件系統(tǒng),來實現(xiàn)對目標stm32芯片的自身程序的升級,奈何沒有實現(xiàn),只能求其次,先來通過官方現(xiàn)有的串口實

    2024年02月10日
    瀏覽(21)
  • 單片機(STM32,GD32,NXP等)中BootLoader的嚴謹實現(xiàn)詳解

    單片機(STM32,GD32,NXP等)中BootLoader的嚴謹實現(xiàn)詳解

    Bootloader( 引導加載程序 )的主要任務是引導加載并運行應用程序,我們的軟件升級邏輯也一般在BootLoader中實現(xiàn)。本文將詳細介紹BootLoader在單片機中的實現(xiàn),包括 STM32、GD32、NXP Kinetis 等等的所有單片機,因為無論是什么樣的芯片,它實現(xiàn)的邏輯都是一樣的。 注意,本篇文章主

    2024年02月02日
    瀏覽(73)
  • STM32 ICP、ISP、IAP、Bootloader、SWD、JTAG究竟是什么?它們之間有什么關系?

    STM32 ICP、ISP、IAP、Bootloader、SWD、JTAG究竟是什么?它們之間有什么關系?

    從代碼寫入單片機的方式上去區(qū)分主要分為3種:ICP、ISP、IAP 一、 ICP(In Circuit Programing) :在電路編程,可通過CPU的Debug Access Port 燒錄代碼,比如ARM Cortex的Debug Interface主要是SWD(Serial Wire Debug)或JTAG(Joint Test Action Group); ICP 主要通過CPU的DAP(Debug Access Port) 燒錄代碼,下面以ARM Cor

    2024年02月04日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包