在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

什么是IAP?

strongerHuang ? 來(lái)源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2022-10-25 08:54 ? 次閱讀

什么是IAP?

IAP是In Application Programming的首字母縮寫(xiě),IAP是用戶自己的程序在運(yùn)行過(guò)程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫(xiě),目的是為了在產(chǎn)品發(fā)布后可以方便地通過(guò)預(yù)留的通信口對(duì)產(chǎn)品中的固件程序進(jìn)行更新升級(jí)。 在重新編程過(guò)程中可以使用任意類(lèi)型的通信協(xié)議,如UART、I2S、SPI等。這篇筆記分享的是使用UART方式IAP。

串口IAP實(shí)驗(yàn)

先理一理流程(本實(shí)驗(yàn)是以STM32F103ZET6為例): 1、實(shí)驗(yàn)說(shuō)明 做這個(gè)實(shí)驗(yàn)需要準(zhǔn)備兩個(gè)keil工程,一個(gè)工程用于編寫(xiě)IAP程序,另一個(gè)工程用于編寫(xiě)我們的應(yīng)用程序(要實(shí)現(xiàn)某些功能的程序),這里我們以一個(gè)點(diǎn)燈程序?yàn)槔W罱K,兩份工程編譯出來(lái)的可執(zhí)行文件都需要燒寫(xiě)到芯片的FLASH中。只不過(guò)需要燒寫(xiě)到不同的地址,簡(jiǎn)單的示意圖如下: 7a9bdb50-53fd-11ed-a3b6-dac502259ad0.png ? 這里,使用的STM32的型號(hào)為STM32F103ZET6,其FLASH大小是512KB,0x08000000為其FLASH被映射的地址,程序被燒寫(xiě)到的就是這個(gè)地址。此處,我們的IAP程序燒寫(xiě)到這個(gè)地址,根據(jù)IAP程序的大小,我們?cè)趉eil里可以設(shè)置合適的IAP結(jié)束地址。

注意:在沒(méi)有IAP程序的情況下,0x08000000這個(gè)地址就是應(yīng)用程序燒寫(xiě)的地址。

2、工程說(shuō)明 本實(shí)驗(yàn)用到的兩個(gè)工程可按照文末的方式獲取,其中IAP工程移植至ST官方例程。下面對(duì)兩個(gè)工程進(jìn)行簡(jiǎn)單的說(shuō)明 IAP工程: (1)需要在target選項(xiàng)卡里設(shè)置我們IAP程序的起始地址與大小,如: 7ac12360-53fd-11ed-a3b6-dac502259ad0.png ? 這里我們的IAP程序起始地址設(shè)為0x08000000,大小設(shè)為0x3000,即IAP所能用的FLASH空間為12KB。其中IAP所能占的占空間的大小可根據(jù)IAP的實(shí)際大小進(jìn)行修改。 (2)需要修改程序中我們需要跳轉(zhuǎn)到的應(yīng)用程序的地址(即IAP程序的結(jié)束地址): 7ad82736-53fd-11ed-a3b6-dac502259ad0.png ? LED工程: (1)需要在target選項(xiàng)卡里設(shè)置我們LED程序的起始地址與大小,如: 7ae3d176-53fd-11ed-a3b6-dac502259ad0.png ? 這里我們的LED程序起地址設(shè)為0x08003000,大小設(shè)為0x10000,即LED所能用的FLASH空間為64KB。其中結(jié)束地址可根據(jù)LED應(yīng)用程序的實(shí)際大小進(jìn)行修改。 (2)生成對(duì)應(yīng)的.bin文件。這需要在User選項(xiàng)卡里添加如下命令(即編譯后執(zhí)行的命令): 7afbee14-53fd-11ed-a3b6-dac502259ad0.png ? 其中,fromelf.exe是我們keil安裝目錄下的一個(gè)可執(zhí)行程序,可以把.axf文件轉(zhuǎn)換成.bin文件。要在keil中直接調(diào)用fromelf命令,必須要把fromelf.exe所在目錄添加到環(huán)境變量中。添加環(huán)境變量的方法如下(該方法來(lái)自于《【野火】零死角玩轉(zhuǎn)STM32—F429挑戰(zhàn)者V2.pdf》): 本文以 Win7 系統(tǒng)為例添加工具鏈的路徑到 PATH 環(huán)境變量,其它系統(tǒng)是類(lèi)似的。 (1) 右鍵電腦系統(tǒng)的計(jì)算機(jī)圖標(biāo),在彈出的菜單中選擇屬性 ,如圖: 7b004ae0-53fd-11ed-a3b6-dac502259ad0.jpg ? (2) 在彈出的屬性頁(yè)面依次點(diǎn)擊高級(jí)系統(tǒng)設(shè)置 ->環(huán)境變量,在用戶變量一欄中找到名為PATH的變量,若沒(méi)有該變量,則新建一個(gè)。編輯PATH變量,在它的變量值中輸入工具鏈的路徑,如本機(jī)的是;D:workkeil5ARMARMCCin,注意要使用分號(hào);讓它與其它路徑分隔開(kāi),輸入完畢后依次點(diǎn)確定,如圖: 7b11c1f8-53fd-11ed-a3b6-dac502259ad0.jpg ? (3) 打開(kāi) Windows 的命令行,點(diǎn)擊系統(tǒng)的開(kāi)始菜單,在搜索框輸入cmd,在搜索結(jié)果中點(diǎn)擊cmd.exe即可打開(kāi)命令行, 如圖: 7b19b4c6-53fd-11ed-a3b6-dac502259ad0.jpg ? (4) 在彈出的命令行窗口中輸入fromelf回車(chē),若窗口打印出 formelf 的幫助說(shuō)明,那么路徑正常,就可以開(kāi)始后面的工作了;若提示不是內(nèi)部名外部命令,也不是可運(yùn)行的程序…信息,說(shuō)明路徑不對(duì),請(qǐng)重新配置環(huán)境變量,并確認(rèn)該工作目錄下有編譯工具鏈。 這個(gè)過(guò)程本質(zhì)就是讓命令行通過(guò)“PATH”路徑找到fromelf.exe程序運(yùn)行 。 學(xué)會(huì)配置fromelf.exe,也就學(xué)會(huì)配置了MinGW。MinGW是一個(gè)工具集,包含編譯C與C++的gcc、g++,使用它就可以在Windows命令行下編譯C程序。相關(guān)筆記:使用Notepad++來(lái)開(kāi)發(fā)C程序 3、IAP源碼說(shuō)明 (1)主函數(shù)

int main(void)
{
  FLASH_Unlock();/* FLASH解鎖 */
  KEY_Init();/* 按鍵初始化 */
  IAP_Init();/* IAP初始化 */

  /* 按鍵按下則進(jìn)入主菜單開(kāi)始更新程序(注意:需要按下復(fù)位鍵的同時(shí)按下該按鍵觸發(fā)程序更新) */
  if (GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)  == 0x00)
  {
    SerialPutString("
======================================================================");
    SerialPutString("
=              (C) COPYRIGHT 2010 STMicroelectronics                 =");
    SerialPutString("
=                                                                    =");
    SerialPutString("
=     In-Application Programming Application  (Version 3.3.0)        =");
    SerialPutString("
=                                                                    =");
    SerialPutString("
=                                   By MCD Application Team          =");
    SerialPutString("
======================================================================");
    SerialPutString("

");
    Main_Menu ();
  }
  /* 保持運(yùn)行用戶應(yīng)用程序 */
  else
  {
    /* Test if user code is programmed starting from address "ApplicationAddress" */
    if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
    {
      /* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) ApplicationAddress);
      Jump_To_Application();
    }
  }

  while (1){}

  return 0;
}
可見(jiàn),我們按下復(fù)位的同時(shí)按下PE2對(duì)應(yīng)的按鍵即可觸發(fā)應(yīng)用程序更新操作,否則跳轉(zhuǎn)到應(yīng)用程序的起始地址執(zhí)行應(yīng)用程序(斷點(diǎn)重啟也是默認(rèn)執(zhí)行應(yīng)用程序),這里的ApplicationAddress就是我們上面設(shè)置的0x08003000。 (2)主菜單函數(shù)Main_Menu 這個(gè)函數(shù)里就是該IAP程序的功能,根據(jù)其中的打印信息7b4ed61a-53fd-11ed-a3b6-dac502259ad0.png 可以知道,該IAP有三個(gè)功能(分別輸入鍵盤(pán)上的數(shù)字1、2、3進(jìn)行選擇):一是下載程序(電腦->STM32);二是上傳程序(STM32->電腦);三是執(zhí)行新程序(即剛下載完成的程序)。 (3)下載程序功能函數(shù)SerialDownload 首先,上位機(jī)使用Ymodem協(xié)議進(jìn)行數(shù)據(jù)下發(fā),STM32根據(jù)協(xié)議解析數(shù)據(jù),拿到有用的數(shù)據(jù),并把這些數(shù)據(jù)寫(xiě)入FLASH對(duì)應(yīng)的地址中,即ApplicationAddress。關(guān)于Ymodem協(xié)議及SerialDownload函數(shù)這里不展開(kāi)討論。 4、下載驗(yàn)證 (1)下載IAP程序 可以使用J-link等調(diào)試器進(jìn)行下載,也可用串口ISP進(jìn)行下載,我們選用的是串口ISP進(jìn)行下載,借用的工具是FlyMcu7b6b0178-53fd-11ed-a3b6-dac502259ad0.png ? 這里下載的是.hex文件,如果下載.bin文件,則會(huì)提示如下錯(cuò)誤: 7b737f9c-53fd-11ed-a3b6-dac502259ad0.png

程序文件不是0x8000000和0x20000000區(qū)域的 使用ISP方式下載需要進(jìn)行的硬件操作是:BOOT0引腳拉高,BOOT1引腳接地。即系統(tǒng)存儲(chǔ)器被選為啟動(dòng)區(qū)域: 7ba3826e-53fd-11ed-a3b6-dac502259ad0.png 在點(diǎn)擊開(kāi)始編程按鈕后,需要按下板子上的復(fù)位鍵,即可下載程序。 (2)通過(guò)IAP程序引導(dǎo)下載LED程序 上面提到下載程序使用的是Ymodem協(xié)議,所以得選用帶有Ymodem協(xié)議傳輸方式的上位機(jī)軟件來(lái)把應(yīng)用程序下載到板子里。可以選用SecureCRT,也可以選用超級(jí)終端。這里選用的是超級(jí)終端: 7bb4bb9c-53fd-11ed-a3b6-dac502259ad0.png 首先按下數(shù)字鍵1觸發(fā)下載程序操作,此時(shí)會(huì)不斷打印CCCCC...。然后點(diǎn)傳送->發(fā)送文件,選擇要下載的.bin文件及Ymodem協(xié)議。下載完成后按下數(shù)字3即可執(zhí)行新下載得應(yīng)用程序: 7bcae6b0-53fd-11ed-a3b6-dac502259ad0.png ? 終于,LED閃爍起來(lái)了,點(diǎn)燈項(xiàng)目成功。斷電重啟之后默認(rèn)執(zhí)行的是這個(gè)點(diǎn)燈程序,要想下載新的程序,按下復(fù)位的同時(shí)按下PE2所對(duì)應(yīng)的按鍵(需要一定的手速)即可觸發(fā)更新程序操作。
審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    915

    瀏覽量

    40440
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3795

    瀏覽量

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

    關(guān)注

    2

    文章

    164

    瀏覽量

    24392

原文標(biāo)題:?jiǎn)纹瑱C(jī)串口IAP原理

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是IAP,為什么要IAP

    什么是IAP,為什么要IAP?STM32F103ZET6的啟動(dòng)方式有哪幾種呢?如何進(jìn)行對(duì)STM32的Flash進(jìn)行擦除和寫(xiě)入操作呢?
    發(fā)表于 11-01 06:26

    IAP是什么?IAP升級(jí)流程是怎樣的

    IAP是什么?IAP升級(jí)流程是怎樣的?IAP應(yīng)用編程有哪些實(shí)例啊?
    發(fā)表于 12-14 06:53

    TinyM0配套例程 IAP例程

    【TinyM0配套例程】IAP例程IAP例程
    發(fā)表于 11-15 16:52 ?0次下載

    ISP與IAP的區(qū)別

    ISP與IAP的區(qū)別       IAP: in applicatin progr
    發(fā)表于 12-28 11:28 ?1735次閱讀

    IAP編程模式介紹

    IAP編程模式介紹,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-18 17:04 ?21次下載

    IAP-yy文檔

    IAP-yy文檔,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-18 17:05 ?8次下載

    什么是IAP?如何實(shí)現(xiàn)IAP

    IAP是In Application Programming的首字母縮寫(xiě),IAP是用戶自己的程序在運(yùn)行過(guò)程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫(xiě),目的是為了在產(chǎn)品發(fā)布后可以方便地通過(guò)預(yù)留的通信
    發(fā)表于 12-04 16:59 ?1427次閱讀

    IAP編程的流程及IAP的應(yīng)用場(chǎng)所

    IAP是什么 有時(shí)項(xiàng)目上需要遠(yuǎn)程升級(jí)單片機(jī)程序,此時(shí)需要接觸到IAP編程。 IAP即為In Application Programming,解釋為在應(yīng)用中編程,用戶自己的程序在運(yùn)行過(guò)程中對(duì)User
    的頭像 發(fā)表于 08-11 09:27 ?4624次閱讀

    MCU之IAP升級(jí)

    IAP升級(jí)簡(jiǎn)介IAP是In Application Programming的首字母縮寫(xiě),IAP是用戶自己的程序在運(yùn)行過(guò)程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫(xiě),目的是在產(chǎn)品發(fā)布后可以方便地通過(guò)預(yù)留的通信口對(duì)產(chǎn)品中的固件程序進(jìn)
    發(fā)表于 10-25 13:06 ?18次下載
    MCU之<b class='flag-5'>IAP</b>升級(jí)

    關(guān)于STM32的IAP超詳細(xì)圖文解說(shuō)

    IAP是In Application Programming的首字母縮寫(xiě),IAP是用戶自己的程序在運(yùn)行過(guò)程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫(xiě),目的是為了在產(chǎn)品發(fā)布后可以方便地通過(guò)預(yù)留的通信
    發(fā)表于 12-03 15:51 ?14次下載
    關(guān)于STM32的<b class='flag-5'>IAP</b>超詳細(xì)圖文解說(shuō)

    STM32的IAP升級(jí)APP

    STM32的IAP升級(jí)APP什么是IAP?In Application Programming的首字母縮寫(xiě),IAP是用戶自己的程序在運(yùn)行過(guò)程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫(xiě),目的是為了
    發(fā)表于 12-04 12:36 ?11次下載
    STM32的<b class='flag-5'>IAP</b>升級(jí)APP

    STM32單片機(jī)IAP模式不容易進(jìn)入,跟上位機(jī)通訊計(jì)數(shù)很慢,IAP不能連續(xù)刷固件,IAP刷入固件時(shí)間較長(zhǎng)等問(wèn)題

    問(wèn)題: IAP模式不容易進(jìn)入,跟上位機(jī)通訊計(jì)數(shù)很慢,IAP不能連續(xù)刷固件,IAP刷入固件時(shí)間較長(zhǎng)。原因:IAP不容易進(jìn)入和不能連續(xù)IAP的問(wèn)
    發(fā)表于 12-24 19:02 ?6次下載
    STM32單片機(jī)<b class='flag-5'>IAP</b>模式不容易進(jìn)入,跟上位機(jī)通訊計(jì)數(shù)很慢,<b class='flag-5'>IAP</b>不能連續(xù)刷固件,<b class='flag-5'>IAP</b>刷入固件時(shí)間較長(zhǎng)等問(wèn)題

    AN0001 AT32 IAP 使用 USART

    前言對(duì)于AT32 MCU,除了出廠固化的bootloader,用戶也可以在應(yīng)用程序中編寫(xiě)自己的bootloader程序,用于最終產(chǎn)品的固件更新。此功能稱為應(yīng)用程序內(nèi)編程(IAP)。本應(yīng)用筆記的目的
    發(fā)表于 01-14 12:52 ?4次下載
    AN0001 AT32 <b class='flag-5'>IAP</b> 使用 USART

    AN034 基于USBHost的IAP例程

    AN034 基于USBHost的IAP例程
    發(fā)表于 02-27 18:30 ?0次下載
    AN034 基于USBHost的<b class='flag-5'>IAP</b>例程

    什么ISP?什么是IAP

    做單片機(jī)開(kāi)發(fā)的工程師經(jīng)常會(huì)聽(tīng)到兩個(gè)詞:ISP和IAP,但新手往往對(duì)這兩個(gè)概念不是很清楚,今天就來(lái)和大家聊聊什么是ISP,什么是IAP
    的頭像 發(fā)表于 01-28 09:26 ?4624次閱讀
    什么ISP?什么是<b class='flag-5'>IAP</b>?
    主站蜘蛛池模板: 久久久久激情免费观看 | 黄色视屏免费在线观看 | 人人射人人草 | 中文字幕视频一区 | 国产在线观看黄 | 午夜影院在线观看 | 深夜动态福利gif动态进 | 成人综合婷婷国产精品久久免费 | 国产精品久久久久久久久免费hd | 国产黄网站在线观看 | 日韩欧美视频一区 | 欧美三级大片在线观看 | 无人区理论片手机看片 | 免费观看午夜在线欧差毛片 | 六月丁香激情 | 国产欧美视频在线 | 国内精品久久久久影 | 萌白酱香蕉白丝护士服喷浆 | 欧美日韩国产一区二区 | 亚洲综合色丁香婷婷六月图片 | 国产高清一级视频在线观看 | 国产午夜久久影院 | 亚洲h视频在线 | 在线免费视频网站 | 大黄蕉 | 亚洲mm8成为人影院 亚洲qingse中文在线 | 精品久久久久久午夜 | 精品国产一二三区 | 午夜视频高清在线aaa | 久久99热精品免费观看无卡顿 | 东京加勒比 | 老司机51精品视频在线观看 | 天堂网在线看 | 久久国产乱子伦精品免费看 | 一个人看aaaa免费中文 | 午夜视频在线观看一区 | 免费观看理论片毛片 | 日韩在线网 | 欧洲人体超大胆露私视频 | 日本不卡视频在线观看 | 色多多www视频在线观看免费 |