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

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

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

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

基于STM32F10x處理器如何在IAP中實現(xiàn)設(shè)計和應(yīng)用方案

電子設(shè)計 ? 來源:單片機與嵌入式系統(tǒng)應(yīng)用 ? 作者:陳峰峰 , 胡毅 , 許 ? 2020-08-12 09:21 ? 次閱讀

引 言

Cortex-M3是首款基于ARMv7-M體系結(jié)構(gòu)的32位標準處理器RISC結(jié)構(gòu),包含高效靈活的Thumb-2指令集,擁有杰出的低功耗特性,為微控制器系統(tǒng)、汽車車身控制系統(tǒng)工業(yè)控制系統(tǒng)和無線網(wǎng)絡(luò)嵌入式應(yīng)用量身設(shè)計。ST公司推出基于Cortex-M3內(nèi)核的STM32系列處理器,憑借其出眾的性能、創(chuàng)新的外設(shè)、優(yōu)越的功耗控制,得到眾多工程師的青睞。

針對嵌入式應(yīng)用的特點,STM32處理器提供功能強大的硬件調(diào)試接口——JTAG接口和串行接口,極大方便了設(shè)計,縮短了產(chǎn)品的開發(fā)周期。不僅如此,STM32處理器內(nèi)嵌的閃存存儲器允許在電路編程(In-Circuit Pro-gramming,ICP)和在應(yīng)用中編程(In-Application Program-ming,IAP)。利用在應(yīng)用中編程,僅需通過一根串口線,就可以完成產(chǎn)品固件的更新。本文對STM32處理器的在應(yīng)用中編程進行了詳細的分析,結(jié)合硬件和驅(qū)動給出了IAP的具體實現(xiàn)方法,稍加修改,便可應(yīng)用于STM32處理器的所有系列產(chǎn)品。

1 STM32F10x處理器

1.1 STM32處理器特點

STM32全系列處理器具有腳對腳、外設(shè)及軟件的高度兼容性。這給應(yīng)用帶來很好的靈活性,易于將應(yīng)用升級到不同存儲空間或不同封裝的平臺。STM32處理器的產(chǎn)品全系列兼容,使得項目之間的代碼重用和移植很方便。

1.2 STM32處理器內(nèi)存映射

Cortex-M3的存儲系統(tǒng)采用統(tǒng)一編址的方式,程序存儲器、數(shù)據(jù)存儲器、寄存器被組織在4 GB的線性地址空間內(nèi),以小端格式(little-endian)存放。內(nèi)存映射如圖1所示。

基于STM32F10x處理器如何在IAP中實現(xiàn)設(shè)計和應(yīng)用方案

在代碼區(qū),0x00000000地址為啟動區(qū)。上電以后,CPU從這個地址開始執(zhí)行代碼0x08000000為用戶Flash的起始地址,0x1FFFF000為系統(tǒng)存儲器(system memory)的起始地址。對于STM32處理器,可以通過配置BOOT0和BOOT1兩個引腳來選擇不同的啟動模式,如表1所列。CPU在時鐘信號的第4個上升沿鎖存BOOT引腳的值,根據(jù)兩個引腳的值將對應(yīng)的存儲器物理地址映射到啟動區(qū)。

啟動模式

系統(tǒng)存儲器也稱為“大信息塊”,有2 KB的容量。所有上市的STM32處理器,在出廠前已經(jīng)燒寫進去自舉模式下的啟動程序(Bootloader),并且將之鎖定防止用戶擦寫。通過配置BOOT0和BOOT1選擇系統(tǒng)存儲器啟動,相應(yīng)的啟動程序在復(fù)位后得以執(zhí)行,配合PC端的通信軟件,通過USART1口允許用戶將程序燒寫到用戶Flash區(qū)。之后,將BOOT0和B00T1重新配置為用戶Flash存儲器啟動,進入正常的應(yīng)用程序。

上述的自舉模式類似于ISP編程,相比其他燒寫方式方便許多,但真正方便靈活的是在應(yīng)用中編程(IAP),只需一根串口線就可以載入程序,復(fù)位后立即執(zhí)行新的應(yīng)用程序。

2 IAP功能原理

在應(yīng)用中編程(IAP)使得用戶可以在程序運行時重新對Flash進行編程。簡單地說,IAP的編程工作是:下載編譯好的二進制文件數(shù)據(jù)到RAM;將數(shù)據(jù)重新編程到特定的Flash區(qū)。這兩個工作是由IAP驅(qū)動程序完成的。使用IAP功能后,系統(tǒng)的固件由2部分組成:第1部分是IAP驅(qū)動,不執(zhí)行通常的功能,而是通過微控制器支持的任一種通信管道(如USB、USART、SPI等,本文使用USART)接收數(shù)據(jù),并執(zhí)行對第2部分代碼的更新;第2部分是真正的應(yīng)用程序代碼,實現(xiàn)具體的功能。這兩部分代碼共同燒寫在Flash中。要注意的是,這兩部分代碼不能重疊,否則無法實現(xiàn)IAP功能。

系統(tǒng)上電以后,IAP驅(qū)動首先運行,它主要執(zhí)行如下的操作:

①根據(jù)硬件信號或軟件條件判斷是否需要對第2部分代碼進行更新;

②如果不需要更新,則跳轉(zhuǎn)到④;

③執(zhí)行更新操作;

④跳轉(zhuǎn)到第2部分代碼執(zhí)行。

STM3210x處理器IAP驅(qū)動的流程如圖2所示。圖中顯示IAP主界面是利用超級終端實現(xiàn)的,傳輸協(xié)議用的是Ymodem協(xié)議。需要注意的是,由于IAP驅(qū)動占用了用戶Flash區(qū)的一段起始空間,因此Flash的可編程最大空間要把這部分除去。[page]

STM3210x處理器IAP驅(qū)動的流程

3 IAP功能實現(xiàn)

3.1 硬件電路

采用STM32F10x型處理器作為核心。該處理器可全速工作在72 MHz,擁有3個USART接口,內(nèi)嵌128 KB Flash和20 KB SRAM。Flash是以頁的形式組織的,擦除1頁的時間約為20~40 ms;在整個工作范圍內(nèi)其擦除次數(shù)可達10 000次,經(jīng)10 000次擦除后,在+55℃的保存環(huán)境中數(shù)據(jù)保存期限仍可達20年。用戶完全不必擔心使用了IAP功能后對產(chǎn)品造成不良影響。

IAP驅(qū)動使用USART1口作為通信管道,PB口的第9引腳作為IAP判斷是否進入IAP功能的信號線。引出一個按鍵,作為IAP功能選擇按鍵,只要在上電或復(fù)位時按住此鍵就會進入IAP功能主界面,否則直接執(zhí)行正常應(yīng)用程序。BOOT0和BOOT1是啟動配置跳線。相應(yīng)的硬件電路分別如圖3、圖4和圖5所示。

IAP通信管道USART1

按鍵電路

啟動配置電路

3.2 IAP驅(qū)動

IAP驅(qū)動主要包含如下源文件。

main.c:完成Flash解鎖、按鍵端口初始化、按鍵判斷、USART1的初始化以及處理器的始終初始化,另外還初始化指針和跳轉(zhuǎn)到應(yīng)用程序處語句。然后從common.c執(zhí)行主菜單。

common.c:顯示主菜單。主菜單上顯示一系列操作,如加載二進制文件、執(zhí)行應(yīng)用程序以及禁止寫保護(如果事先Flash被寫保護)。

download.c:等待用戶選擇傳送文件操作,或者放棄操作以及一些提示信息,但真正實現(xiàn)傳送的是ymodem.c源文件。

ymodem.c:負責(zé)從超級終端接收數(shù)據(jù)(使用Ymodem協(xié)議),并將數(shù)據(jù)加載到內(nèi)部RAM中。如果接收數(shù)據(jù)正常,則將數(shù)據(jù)編程到Flash中;如果發(fā)生錯誤,則提示出錯。

3.3 軟件實現(xiàn)

要實現(xiàn)IAP功能,還需做一些準備工作:

①要準備BIN類型的代碼文件。開發(fā)環(huán)境使用的是Keil,默認情況下Keil生成HEX類型的編譯文件。利用Keil自帶的fromelf.exe工具,就可以生成二進制文件。

②對超級終端進行設(shè)置。IAP驅(qū)動中對USART1的設(shè)置為:波特率為115 200 kb/s,8位數(shù)據(jù)位,1位停止位,無校驗位和硬件控制。超級終端也必須保持相同設(shè)置。

IAP驅(qū)動和應(yīng)用程序代碼需要分配在Flash的合適位置。圖6是2部分代碼在Flash中的存儲情況。由于IAP驅(qū)動代碼占用8 KB的空間,故而將Flash最初的8 KB劃出來,應(yīng)用程序是從0x08020000地址處開始存放的。這是通過在common.h頭文件中語句定義的:[page]

#define ApplicationAddress 0x08020000

也可以定義在其他0x08020000地址后的任何位置,只要保證應(yīng)用程序大小不超過所用處理器Flash的容量。在platform_config.h頭文件中有定義Flash的語句:

#define PAGE_SIZE(0x400) //Flash頁大小為1 KB

#define FLASH_SIZE(0x20000)//Flash容量為128 KB

STM32F10x處理器有2種Flash頁的大小:1 KB和2 KB。通過以上語句即可定義頁大小。

在platform_config.h頭文件中還定義了進入IAP功能選擇按鍵映射引腳:

程序

IAP驅(qū)動在Keil中編譯、鏈接后,利用ARM公司的RealView ULINK2仿真器將生成的HEX文件燒寫到Flash中。此時Keil自帶的Flash燒寫工具要設(shè)置Flash的起始地址為0x08000000。在應(yīng)用程序中,定義向量表的函數(shù)NVIC_SetVectorTabl(NVIC_VectTab_FLASH,0x2000)中的第2個參數(shù),即Flash的偏移量一定要設(shè)置成0x2000或更大的數(shù)值。同時,F(xiàn)lash燒寫工具也要做相對應(yīng)的設(shè)置。將系統(tǒng)的串口與PC機串口相連,打開已經(jīng)設(shè)置好參數(shù)的超級終端。將BOOT0跳線為0,BOOT1為0或1都可以。按住IAP功能選擇按鍵,給系統(tǒng)上電。此時,在超級終端就會顯示IAP功能主界面,如圖7所示。

Flash存儲分配

IAP功能主界面

在鍵盤上按1選擇待載入二進制文件,界面上會出現(xiàn)提示語。在“傳送”菜單中選擇傳送文件后,只需幾秒鐘可以將6 KB左右的文件燒寫到Flash。下載完后,在鍵盤上按2或復(fù)位就可以直接執(zhí)行應(yīng)用程序了,如圖8所示。雖然IAP功能使用的是USART1口,但進入應(yīng)用程序后就可以正常使用USART1口。隨時可以通過復(fù)位后按住IAP功能選擇鍵來進行IAP方式燒寫應(yīng)用程序。

成功下載應(yīng)用程序

結(jié) 語

STM32F10x處理器性能出眾,已被廣泛應(yīng)用于各種場合。其IAP功能給用戶帶來了極大方便,使得產(chǎn)品的固件更新快捷、簡單。本文闡述了IAP的基本原理,并詳細描述了如何在STM32F10x處理器平臺中實現(xiàn)IAP功能,并在所設(shè)計的系統(tǒng)中進行了IAP實驗。實驗證明,該款處理器的IAP功能可靠、快捷。

責(zé)任編輯:gt

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

    關(guān)注

    68

    文章

    19383

    瀏覽量

    230487
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1640

    瀏覽量

    148302
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7518

    瀏覽量

    164083
收藏 人收藏

    評論

    相關(guān)推薦

    STM32F101x8/STM32F101xB手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F101x8/STM32F101xB手冊.pdf》資料免費下載
    發(fā)表于 12-06 15:45 ?8次下載

    STM32F103x8/STM32F103xB規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《STM32F103x8/STM32F103xB規(guī)格書.pdf》資料免費下載
    發(fā)表于 12-06 15:43 ?1次下載

    做ADS131E08的數(shù)據(jù)采集,板子是STM32F10X系列的,按技術(shù)手冊上配置寄存采集到的數(shù)據(jù)全為0,為什么?

    現(xiàn)在在做ADS131E08的數(shù)據(jù)采集,板子是STM32F10X系列的,按技術(shù)手冊上配置寄存采集到的數(shù)據(jù)全為0,有沒有參考程序可以參考一下?
    發(fā)表于 12-06 07:42

    將TMS320F280x DSP配置為I2C主處理器或從處理器

    電子發(fā)燒友網(wǎng)站提供《將TMS320F280x DSP配置為I2C主處理器或從處理器.pdf》資料免費下載
    發(fā)表于 10-15 09:34 ?0次下載
    將TMS320<b class='flag-5'>F280x</b> DSP配置為I2C主<b class='flag-5'>處理器</b>或從<b class='flag-5'>處理器</b>

    利用Sitara AM57x處理器上的處理器SDK實現(xiàn)工業(yè)機器視覺的2D物體識別

    電子發(fā)燒友網(wǎng)站提供《利用Sitara AM57x處理器上的處理器SDK實現(xiàn)工業(yè)機器視覺的2D物體識別.pdf》資料免費下載
    發(fā)表于 10-10 09:36 ?0次下載
    利用Sitara AM57<b class='flag-5'>x</b><b class='flag-5'>處理器</b>上的<b class='flag-5'>處理器</b>SDK<b class='flag-5'>實現(xiàn)</b>工業(yè)機器視覺的2D物體識別

    何在STM32上運行AI應(yīng)用

    1.X-Linux-AI概述X-LINUX-AI是STM32MPUOpenSTLinux擴展包,面向STM32MP1和STM32MP2系列微
    的頭像 發(fā)表于 09-30 08:00 ?2614次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>STM32</b>上運行AI應(yīng)用

    【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列

    GD32F30x 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制,與 STM32F10x 系列 MCU 保持高度兼容。本文主要從以下三個方面進行介
    的頭像 發(fā)表于 09-07 09:57 ?894次閱讀
    【GD32 MCU 移植教程】9、從 <b class='flag-5'>STM32F10x</b> 系列移植到 GD32<b class='flag-5'>F30x</b> 系列

    TMS320F280x、TMS320C280x、TMS320F2801x數(shù)字信號處理器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMS320F280x、TMS320C280x、TMS320F2801x數(shù)字信號處理器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-03 09:34 ?0次下載
    TMS320<b class='flag-5'>F280x</b>、TMS320C280<b class='flag-5'>x</b>、TMS320<b class='flag-5'>F2801x</b>數(shù)字信號<b class='flag-5'>處理器</b>數(shù)據(jù)表

    TMS320F280x、TMS320C280x、TMS320F2801x數(shù)字信號處理器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMS320F280x、TMS320C280x、TMS320F2801x數(shù)字信號處理器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-03 09:28 ?0次下載
    TMS320<b class='flag-5'>F280x</b>、TMS320C280<b class='flag-5'>x</b>、TMS320<b class='flag-5'>F2801x</b>數(shù)字信號<b class='flag-5'>處理器</b>數(shù)據(jù)表

    TMS320F281x數(shù)字信號處理器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMS320F281x數(shù)字信號處理器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-03 09:24 ?0次下載
    TMS320<b class='flag-5'>F281x</b>數(shù)字信號<b class='flag-5'>處理器</b>數(shù)據(jù)表

    使用STM32F407ZGT6的設(shè)備無法連接到AMD處理器的電腦上,怎么處理

    使用貴公司的STM32芯片,型號:STM32F407ZGT6。CAN總線轉(zhuǎn)串口,可以正常連接到英特爾處理器的電腦上;但是無法連接到AMD處理器的電腦上。請問怎么
    發(fā)表于 07-23 07:58

    STM32F10x標準外設(shè)庫參考手冊

    STM32F10x標準外設(shè)庫參考手冊
    發(fā)表于 06-24 09:26 ?12次下載

    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

    STM32F103RE只有掛調(diào)試IAP程序才能正常跳轉(zhuǎn)嗎?

    最近在開發(fā)一款基于STM32F103RET6的產(chǎn)品,要求支持固件升級,目前是基于USART1的IAP,Toolchain是IAR。 IAP的程序是參考官方的例程做的,大體沒變,只是BSP方面改了一下
    發(fā)表于 04-25 07:03

    何在STM32F10X里面標準庫找STM32F103的官方例程?

    我是一個小白,想看一下STM32F103的例程里面的代碼學(xué)習(xí)學(xué)習(xí),
    發(fā)表于 03-19 07:37
    主站蜘蛛池模板: 亚洲欧美国产五月天综合| 天堂中文在线网| 日日摸人人拍人人澡| 欧美不卡视频在线观看| 国产在线精品香蕉综合网一区| 亚洲操图| 天天干天天玩| 18女人毛片| 国产欧美一区二区三区观看| 欧美a免费| 三级理论在线观看| 女人张开腿 让男人桶个爽 免费观看| 免费观看黄色网址| 人成网站在线观看| 深爱婷婷网| 夜夜春宵翁熄性放纵古代| 3344a毛片在线看| 操操操干干干| 二级特黄绝大片免费视频大片| 奇米四色7777| 深夜视频在线免费| 天天夜夜久久| 亚洲午夜视频在线观看| 成人sese| 97人人爱| 亚洲第一视频网| 久久美女精品| 国产成人综合亚洲怡春院| 欧美午夜性春猛xxxx| 黄色网址视频在线观看| 婷婷亚洲五月琪琪综合| 456成人网| 乱色伦短篇小说| 一区二区三区四区精品| 亚洲精品国产美女在线观看| 夜色福利久久久久久777777| 在线播放你懂| 亚洲第九页| 欧美日韩国产在线一区| 六月婷婷久久| 国产日本在线播放|