日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

STM8單片機為例,如何實現(xiàn)Bootloader?

GReq_mcu168 ? 來源:玩轉(zhuǎn)嵌入式 ? 作者:玩轉(zhuǎn)嵌入式 ? 2021-04-12 09:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

去某新能源大廠出了一次差,這次出差是為了升級程序解決Bug,需要給單片機重新燒錄.hex文件,用戶已經(jīng)將產(chǎn)品封裝起來,無法開蓋,只能使用CAN總線來更新程序,用Bootloader實現(xiàn)。其實就是通過上位機把.bin/hex文件以CAN通訊的方式發(fā)送給單片機并存儲在規(guī)定的Flash中。這個過程與手機端更新APP類似。

238b6f94-9ab6-11eb-8b86-12bb97331649.jpg

STM8單片機為例,該如何實現(xiàn)Bootloader呢?今天和大家分享一下。

01

什么是Bootloader

Bootloader是一段用于更新自身應用軟件并獨立運行的代碼,常被用于升級產(chǎn)品和修復產(chǎn)品bug。STM8單片機如果要下載hex文件的話需要通過STVP和STLINK來實現(xiàn),單片機的引腳SWIM就是下載接口。如果產(chǎn)品在用戶端被封裝好了,無法通過SWIM來下載該怎么辦呢?就使用Bootloader,STM支持CAN和UART實現(xiàn)Bootloader。就是通過CAN通信或者UART通信將數(shù)據(jù)存放在STM8的Flash上。

02

劃分Flash區(qū)間

STM8的中斷向量跳轉(zhuǎn)地址是固定的,會跳轉(zhuǎn)到0x8000對應中斷的偏移地址,所以會把Bootloader存放在0x8000開始的空間內(nèi),比如給Bootloader代碼所劃分的空間為4k,那么空間起始地址為:0x8000-0x8FFF;那么應用代碼的起始地址就可以從0x9000開始。

03

修改中斷向量表

STM8的中斷向量表通過一段特定的代碼來實現(xiàn),并需要根據(jù)前文提到的空間劃分來修改。STM8的應用程序起始地址是0x8400,默認的向量表如下代碼所示:

__root const long reintvec[]@“.intvec”=

{

0x82008080,0x82008404,0x82008408,0x8200840c,

0x82008410,0x82008414,0x82008418,0x8200841c,

0x82008420,0x82008424,0x82008428,0x8200842c,

0x82008430,0x82008434,0x82008438,0x8200843c,

0x82008440,0x82008444,0x82008448,0x8200844c,

0x82008450,0x82008454,0x82008458,0x8200845c,

0x82008460,0x82008464,0x82008468,0x8200846c,

0x82008470,0x82008474,0x82008478,0x8200847c,

};

前文已經(jīng)將應用程序的起始地址修改為0x9000,所以,向量表的的修改方法為:除了第一個元素為,其余的元素將8改為9,修改完后代碼如下:

__root const long reintvec[]@“.intvec”=

{

0x82008080,0x82009404,0x82009408,0x8200940c,

0x82009010,0x82009014,0x82009018,0x8200901c,

0x82009020,0x82009024,0x82009028,0x8200902c,

0x82009030,0x82009034,0x82009038,0x8200903c,

0x82009040,0x82009044,0x82009048,0x8200904c,

0x82009050,0x82009054,0x82009058,0x8200905c,

0x82009060,0x82009064,0x82009068,0x8200906c,

0x82009070,0x82009074,0x82009078,0x8200907c,

};

04

修改ICF文件

ICF文件存放在編程環(huán)境的安裝目錄下,每個型號/系列的單片機都會對應一個ICF文件,需要修改一下ICF文件,這里需要根據(jù)flash空間的劃分來修改,前面將Bootloader的終止地址設置為0x9FFF,所以修改如下:

define region NearFuncCode = [from 0x8000 to 0x8FFF];

define block INTVEC with size = 0x80 { ro section .intvec };

place at start of NearFuncCode { block INTVEC };

23b4c448-9ab6-11eb-8b86-12bb97331649.jpg

05

跳轉(zhuǎn)命令

所謂跳轉(zhuǎn),就是在應用程序中跳轉(zhuǎn)到Boot中去升級;升級完成后需要跳轉(zhuǎn)到應用程序中,所跳轉(zhuǎn)的起始就是起始地址。Bootloader跳轉(zhuǎn)到應用程序的代碼如下:

asm(“LDW X, SP ”);

asm(“LD A, $FF”);

asm(“LD XL, A ”);

asm(“LDW SP, X ”);

asm(“JPF $9000”);

應用程序跳轉(zhuǎn)到Bootloader中的代碼如下

sm(“LDW X, SP ”);

asm(“LD A, $FF”);

asm(“LD XL, A ”);

asm(“LDW SP, X ”);

asm(“JPF $8000”);

06

編寫交互代碼

以上設置好之后,就可以編寫交互代碼了,所以交互代碼其實就是一套協(xié)議,規(guī)定了應用程序如何跳轉(zhuǎn)到Boot,在Boot中如何處理和存儲數(shù)據(jù),這需要上位機的支持。如果只是用于自家的產(chǎn)品,就可以自己定義協(xié)議。也可以使用標準的協(xié)議,比如汽車行業(yè)中的UDS(統(tǒng)一診斷服務)。Bootloader實現(xiàn)之后,就可以使用CAN/UART來實現(xiàn)產(chǎn)品固件的升級了。這就是Bootloader的關鍵內(nèi)容,本文你學會了嗎?留言討論一下吧。

原文標題:單片機的Bootloader,可以實現(xiàn)用戶輕松升級程序

文章出處:【微信公眾號:玩轉(zhuǎn)單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

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

    關注

    6078

    文章

    45591

    瀏覽量

    673978
  • bootloader
    +關注

    關注

    2

    文章

    245

    瀏覽量

    48320

原文標題:單片機的Bootloader,可以實現(xiàn)用戶輕松升級程序

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    探索COP8SA系列8單片機:特點、性能與應用優(yōu)勢

    單片機憑借其卓越的特性,工程師們提供了一個頗具吸引力的選擇。 文件下載: COP8SAA716M7.pdf 一、COP8SA系列概述 COP8
    的頭像 發(fā)表于 04-19 09:05 ?139次閱讀

    Infineon XC866 8單片機:特性、功能與應用解析

    單片機就是其中的佼佼者,它融合了高性能、豐富的外設和靈活的配置,工程師們提供了強大的設計工具。本文將深入探討XC866的特性、功能和應用,幫助電子工程師更好地了解和應用這款單片機。 文件下載: XC8661FRIABKXUM
    的頭像 發(fā)表于 03-30 16:30 ?215次閱讀

    Infineon XC886/888CLM 8單片機:特性與應用詳解

    Infineon XC886/888CLM 8單片機:特性與應用詳解 在電子設計領域,單片機作為核心部件,其性能和功能直接影響著整個系統(tǒng)的表現(xiàn)。英飛凌(Infineon)的 XC886
    的頭像 發(fā)表于 03-30 14:40 ?762次閱讀

    Infineon XC87xCLM 8單片機:功能特性與設計要點解析

    Infineon XC87xCLM 8單片機:功能特性與設計要點解析 在電子設計領域,單片機作為核心部件,其性能和特性對整個系統(tǒng)的穩(wěn)定性和功能實現(xiàn)起著關鍵作用。今天,我們就來深入探討
    的頭像 發(fā)表于 03-30 14:40 ?286次閱讀

    瑞薩8單片機740族:技術剖析與設計指南

    瑞薩8單片機740族:技術剖析與設計指南 在當今的電子設計領域,單片機以其小巧靈活、功能強大等特點,成為了眾多工程師的首選。瑞薩電子的8單片機
    的頭像 發(fā)表于 03-17 15:15 ?312次閱讀

    瑞薩 8單片機 740 族指令系統(tǒng)與設計要點解析

    瑞薩 8單片機 740 族指令系統(tǒng)與設計要點解析 在電子工程領域,單片機的應用廣泛且至關重要。瑞薩 8單片機 740 族以其獨特的指
    的頭像 發(fā)表于 02-09 16:40 ?327次閱讀

    浮思特 | 電子溫度計單片機如何選型?ABOV單片機提供幾點很關鍵!

    一個優(yōu)秀的電子溫度計,其核心往往在于內(nèi)部單片機(MCU)的性能與匹配度。如何選擇一款合適的單片機,實現(xiàn)精準、穩(wěn)定、低功耗的溫度測量與交互,是產(chǎn)品開發(fā)中的重要課題。本文將從技術維度,
    的頭像 發(fā)表于 12-15 09:43 ?797次閱讀
    浮思特 | 電子溫度計<b class='flag-5'>單片機</b>如何選型?ABOV<b class='flag-5'>單片機</b>提供幾點很關鍵!

    單片機位數(shù)的思考(8位、16位、32位)

    8位、16位、32位是指單片機的“字長”,也就是一次運算中參與運算的數(shù)據(jù)長度,這個位是指二進制位。以8,
    發(fā)表于 11-21 08:31

    Bootloader固件升級的步驟

    一、Bootloader 概念及用處 1、BootLoader 是一段引導式程序,就是單片機啟動時候運行的一段小程序,這段程序負責單片機固件的更新,也就是
    發(fā)表于 11-19 07:41

    浮思特 | 如何通過現(xiàn)代(ABOV)8單片機實現(xiàn)智能家居與工業(yè)控制的升級

    8單片機。作為現(xiàn)代(ABOV)的合作代理商,我們(浮思特科技)深知這些單片機智能家居和工業(yè)應用帶來的卓越價值,致力于將這類高性價比方案推向市場,
    的頭像 發(fā)表于 09-09 10:07 ?1005次閱讀
    浮思特 | 如何通過現(xiàn)代(ABOV)<b class='flag-5'>8</b>位<b class='flag-5'>單片機</b><b class='flag-5'>實現(xiàn)</b>智能家居與工業(yè)控制的升級

    怎么測單片機系統(tǒng)頻率

    單片機系統(tǒng)頻率是指單片機工作時的時鐘頻率,它直接影響單片機的運行速度和處理能力,準確測量系統(tǒng)頻率對單片機應用開發(fā)、程序調(diào)試和性能優(yōu)化具有重要意義。測量
    的頭像 發(fā)表于 07-25 11:39 ?1105次閱讀

    單片機怎么驅(qū)動電機?

    在各類自動化設備和智能裝置中,電機是重要的執(zhí)行部件,而單片機作為控制核心,需要通過特定的方式驅(qū)動電機運轉(zhuǎn)。單片機驅(qū)動電機并非直接連接即可,而是要根據(jù)電機類型和功率,搭配合適的驅(qū)動電路,才能實現(xiàn)穩(wěn)定
    的頭像 發(fā)表于 07-25 09:31 ?1350次閱讀

    STM8 C語言精品編程100

    今天來分享一下關于STM8單片機的相關資料文檔,感興趣的網(wǎng)友可以自行下載。單片機是芯片開發(fā)的基礎,相信從中會獲得您意想不到的知識。 獲取完整文檔資料可下載附件哦!?。?! 如果內(nèi)容有幫助可以關注、點贊、評論支持一下哦~
    發(fā)表于 07-17 16:08

    你們還在用8單片機嗎?

    最近在公司接手了個挺讓人撓頭的活兒 —— 給一塊老板子換 MCU。說起來這板子還是近五年的產(chǎn)品,用的 STM8 單片機,功能掰著手指頭都能數(shù)過來,估摸著稍微加點復雜度這 8就扛不
    的頭像 發(fā)表于 05-15 11:04 ?754次閱讀
    你們還在用<b class='flag-5'>8</b>位<b class='flag-5'>單片機</b>嗎?

    基于Keil開發(fā)瑞薩RA8單片機

    這兩年單片機行業(yè)也開始卷起來了,各大廠商紛紛推出各種高性能的單片機
    的頭像 發(fā)表于 05-07 10:33 ?1646次閱讀
    基于Keil開發(fā)瑞薩RA<b class='flag-5'>8</b><b class='flag-5'>單片機</b>
    大城县| 永宁县| 乳源| 洪江市| 台前县| 周宁县| 安庆市| 高邮市| 庆城县| 建瓯市| 奉新县| 罗定市| 伊宁市| 大余县| 苏尼特左旗| 宁明县| 健康| 建宁县| 颍上县| 伊川县| 兰州市| 常宁市| 仁布县| 正安县| 科尔| 宜宾市| 沁阳市| 德格县| 西城区| 石首市| 泰和县| 白水县| 长海县| 连江县| 水城县| 包头市| 北宁市| 陕西省| 武穴市| 昌黎县| 广元市|