国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于STM32F10x處理器如何在IAP中實現設計和應用方案

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:陳峰峰 , 胡毅 , 許 ? 2020-08-12 09:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引 言

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

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

1 STM32F10x處理器

1.1 STM32處理器特點

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

1.2 STM32處理器內存映射

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

基于STM32F10x處理器如何在IAP中實現設計和應用方案

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

啟動模式

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

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

2 IAP功能原理

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

系統上電以后,IAP驅動首先運行,它主要執行如下的操作:

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

②如果不需要更新,則跳轉到④;

③執行更新操作;

④跳轉到第2部分代碼執行。

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

STM3210x處理器IAP驅動的流程

3 IAP功能實現

3.1 硬件電路

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

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

IAP通信管道USART1

按鍵電路

啟動配置電路

3.2 IAP驅動

IAP驅動主要包含如下源文件。

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

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

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

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

3.3 軟件實現

要實現IAP功能,還需做一些準備工作:

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

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

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

#define ApplicationAddress 0x08020000

也可以定義在其他0x08020000地址后的任何位置,只要保證應用程序大小不超過所用處理器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驅動在Keil中編譯、鏈接后,利用ARM公司的RealView ULINK2仿真器將生成的HEX文件燒寫到Flash中。此時Keil自帶的Flash燒寫工具要設置Flash的起始地址為0x08000000。在應用程序中,定義向量表的函數NVIC_SetVectorTabl(NVIC_VectTab_FLASH,0x2000)中的第2個參數,即Flash的偏移量一定要設置成0x2000或更大的數值。同時,Flash燒寫工具也要做相對應的設置。將系統的串口與PC機串口相連,打開已經設置好參數的超級終端。將BOOT0跳線為0,BOOT1為0或1都可以。按住IAP功能選擇按鍵,給系統上電。此時,在超級終端就會顯示IAP功能主界面,如圖7所示。

Flash存儲分配

IAP功能主界面

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

成功下載應用程序

結 語

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    20255

    瀏覽量

    252293
  • FlaSh
    +關注

    關注

    10

    文章

    1748

    瀏覽量

    155527
  • 存儲器
    +關注

    關注

    39

    文章

    7739

    瀏覽量

    171675
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    何在CW32F030上實現IAP功能實現遠程升級?

    區域進行燒寫,目的是為了在產品發布后可以方便地通過預留的通信口對產品的固件程序進行更新升級。 IAP 功能的實現,一般將程序分為兩個部分,即:Bootloader 和 APP。Bootloader
    發表于 12-11 06:15

    使用TFTP實現IAP的方法

    協議非常適合在局域網環境中使用。它基于客戶端/服務架構,在這種架構,客戶端會向服務發出文件傳輸請求(讀取或寫入操作)。 為實現 IAP
    發表于 12-10 07:21

    HXS320F280025C數字信號處理器(DSP)芯片

    HXS320F28025C是中科昊芯自主研發的一款基于 RISC-V 架構的 32 位浮點數字信號處理器(DSP)芯片,基于 H28x 內核,具三角函數單元與 CRC 指令集,增可配置邏輯模塊,支持
    發表于 12-03 09:02

    MD5信息摘要算法實現二(基于蜂鳥E203協處理器

    處理器與E203內核連接,其中狀態跳轉使用卡洛圖進行化簡,assign語句實現。使用一個32x6的寄存堆向MD5協處理器傳輸數據,控制信號
    發表于 10-30 07:54

    基于X-STM32MP-RBT01機器人控制板的技術解析與應用指南

    GPIO連接STM32MP微處理器連接。X-STM32MP-RBT01板可通過高達48V電源和兩個STSPIN948微處理器同時驅動四臺
    的頭像 發表于 10-16 10:18 ?858次閱讀
    基于<b class='flag-5'>X-STM32</b>MP-RBT01機器人控制板的技術解析與應用指南

    AM67x處理器技術文檔總結

    AM67x 可擴展處理器系列基于進化的 Jacinto? 7 架構,面向智能視覺相機和通用計算應用,并建立在 TI 十多年來在視覺處理器市場領導地位積累的廣泛市場知識之上。AM67x
    的頭像 發表于 09-29 10:48 ?2017次閱讀
    AM67<b class='flag-5'>x</b><b class='flag-5'>處理器</b>技術文檔總結

    德州儀器AM68x Jacinto 8處理器技術解析

    應用,基于TI在視覺處理器市場領先十多年豐富的專業知識。AM68x系列適用于工廠自動化、樓宇自動化和其他市場的各種成本敏感型高性能計算應用。
    的頭像 發表于 08-27 15:08 ?1115次閱讀
    德州儀器AM68<b class='flag-5'>x</b> Jacinto 8<b class='flag-5'>處理器</b>技術解析

    AT32 MCU如何使用IAP

    。 AT32微控制IAP功能允許用戶在產品發布后方便地通過預留的通信口對產品的固件程序進行更新升級。要實現IAP功能,需要設計兩個項目
    發表于 08-08 17:13

    STM32F10XXX參考手冊

    電子發燒友網站提供《STM32F10XXX參考手冊.pdf》資料免費下載
    發表于 08-08 15:19 ?20次下載

    AT32 IAP using the USART

    的中斷向量表相應的移動,移動的偏移量為x AT32 USART IAP 快速使用方法 硬件資源 文檔是用 AT-START-AT32F403A 實驗板的硬件條件為例,
    發表于 07-11 10:51

    技術分享 | 如何在2k0300(LoongArch架構)處理器上跑通qt開發流程

    技術分享 | 如何在2k0300開發板(LoongArch架構)處理器上跑通qt開發流程
    的頭像 發表于 05-20 11:05 ?896次閱讀
    技術分享 | 如<b class='flag-5'>何在</b>2k0300(LoongArch架構)<b class='flag-5'>處理器</b>上跑通qt開發流程

    STM32F10xxx硬件開發指南

    官方STM32F10xxx硬件開發指南
    發表于 04-14 14:59 ?3次下載

    STM32F103x8 STM32F103xB單片機數據手冊

    STM32F103x8STM32F103xB單片機數據手冊
    發表于 04-14 14:55 ?8次下載

    STM32F103×8/STM32F103×B MCU手冊

    本文提供了STM32F103x8和STM32F103xB密度高性能系列微控制的訂購信息和機械器件特性。有關整個STMicroelectronics
    發表于 03-18 16:37 ?0次下載

    STM32F407嵌入式SRAM映射為0x20020000,為什么?

    就正常運行,可以實現跳轉了。關于這個問題,后來我查詢了數據手冊,確實有一定的記載,如下所示: 但是我用的芯片為STM32F407VET6,并不是F42和F43系列的,按照手冊上的表示
    發表于 03-10 08:24