曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

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

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

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

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

GReq_mcu168 ? 來(lái)源:玩轉(zhuǎn)嵌入式 ? 作者:玩轉(zhuǎn)嵌入式 ? 2021-04-12 09:48 ? 次閱讀

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

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

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

01

什么是Bootloader

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

02

劃分Flash區(qū)間

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

03

修改中斷向量表

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

__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)將應(yīng)用程序的起始地址修改為0x9000,所以,向量表的的修改方法為:除了第一個(gè)元素為,其余的元素將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)境的安裝目錄下,每個(gè)型號(hào)/系列的單片機(jī)都會(huì)對(duì)應(yīng)一個(gè)ICF文件,需要修改一下ICF文件,這里需要根據(jù)flash空間的劃分來(lái)修改,前面將Bootloader的終止地址設(shè)置為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),就是在應(yīng)用程序中跳轉(zhuǎn)到Boot中去升級(jí);升級(jí)完成后需要跳轉(zhuǎn)到應(yīng)用程序中,所跳轉(zhuǎn)的起始就是起始地址。Bootloader跳轉(zhuǎn)到應(yīng)用程序的代碼如下:

asm(“LDW X, SP ”);

asm(“LD A, $FF”);

asm(“LD XL, A ”);

asm(“LDW SP, X ”);

asm(“JPF $9000”);

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

sm(“LDW X, SP ”);

asm(“LD A, $FF”);

asm(“LD XL, A ”);

asm(“LDW SP, X ”);

asm(“JPF $8000”);

06

編寫(xiě)交互代碼

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

原文標(biāo)題:?jiǎn)纹瑱C(jī)的Bootloader,可以實(shí)現(xiàn)用戶(hù)輕松升級(jí)程序

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

責(zé)任編輯:haq

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

    關(guān)注

    6060

    文章

    44835

    瀏覽量

    645285
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    238

    瀏覽量

    46387

原文標(biāo)題:?jiǎn)纹瑱C(jī)的Bootloader,可以實(shí)現(xiàn)用戶(hù)輕松升級(jí)程序

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    瑞薩RA8D1單片機(jī)IO中斷配置實(shí)現(xiàn)方法

    本文結(jié)合瑞薩e2 studio工具,以及CPKCOR_RA8D1B評(píng)估板,給大家講述瑞薩RA8D1單片機(jī)IO中斷配置實(shí)現(xiàn)的方法。
    的頭像 發(fā)表于 04-09 15:05 ?692次閱讀
    瑞薩RA<b class='flag-5'>8</b>D1<b class='flag-5'>單片機(jī)</b>IO中斷配置<b class='flag-5'>實(shí)現(xiàn)</b>方法

    瑞薩Cortext-M85內(nèi)核RA8系列單片機(jī)的串口輸出實(shí)現(xiàn)方法

    串口是最常見(jiàn)的通信方式之一,也是單片機(jī)調(diào)試最常見(jiàn)的通信接口,也是現(xiàn)在的單片機(jī)必備的通信接口,目前(2024-05)最新、最強(qiáng)的Cortext-M85內(nèi)核的RA8系列單片機(jī)也不例外。
    的頭像 發(fā)表于 03-21 09:58 ?826次閱讀
    瑞薩Cortext-M85內(nèi)核RA<b class='flag-5'>8</b>系列<b class='flag-5'>單片機(jī)</b>的串口輸出<b class='flag-5'>實(shí)現(xiàn)</b>方法

    STM8S003F的作用是什么,如何編寫(xiě)單片機(jī)程序去控制?

    下STM8S003F的作用是什么,軟件控制那幾個(gè)部分,哪些是不需要軟件控制的,該如何編寫(xiě)單片機(jī)程序去控制? 如何實(shí)現(xiàn)STM8 單片機(jī)與其他芯
    發(fā)表于 11-05 07:46

    基于51單片機(jī)的手動(dòng)數(shù)字時(shí)鐘

    具體實(shí)現(xiàn)功能由51單片機(jī)+8位共陰數(shù)碼管+獨(dú)立按鍵構(gòu)成。具體功能:(1)利用數(shù)碼管顯示時(shí)分秒,顯示格式“時(shí)-分-秒”;(2)利用6個(gè)按鍵控制時(shí)、分、秒,設(shè)定好后自動(dòng)開(kāi)始時(shí)鐘顯示;(3
    的頭像 發(fā)表于 10-22 14:12 ?470次閱讀
    基于51<b class='flag-5'>單片機(jī)</b>的手動(dòng)數(shù)字時(shí)鐘

    如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)的串行通信

    51單片機(jī)與PC機(jī)的串行通信是一種常見(jiàn)的通信方式,它允許單片機(jī)通過(guò)串行接口與PC機(jī)進(jìn)行數(shù)據(jù)交換。這種通信方式在嵌入式系統(tǒng)、工業(yè)控制、物聯(lián)網(wǎng)等領(lǐng)域有著廣泛的應(yīng)用。以下是
    的頭像 發(fā)表于 10-21 11:35 ?2160次閱讀

    性?xún)r(jià)比高的8單片機(jī)有哪些?

    ,尤其適用于需要Motorola MC68HC11兼容性的場(chǎng)合。此外,華芯微還提供了NuMicro系列單片機(jī),其中包含一些基于8051內(nèi)核的8位產(chǎn)品,用戶(hù)提供了更多選擇。 5. 其他高性?xún)r(jià)比選擇
    發(fā)表于 09-27 14:27

    低功耗8單片機(jī):技術(shù)特性與應(yīng)用前景!

    不必要的能耗。 優(yōu)化指令集:通過(guò)高效的指令集設(shè)計(jì),減少執(zhí)行任務(wù)所需的時(shí)鐘周期,從而降低能耗。 2. 8位數(shù)據(jù)總線(xiàn) 8單片機(jī)的數(shù)據(jù)總線(xiàn)寬度8
    發(fā)表于 09-26 14:09

    8單片機(jī),32位單片機(jī)編程和應(yīng)用優(yōu)勢(shì)

    的微型計(jì)算機(jī)系統(tǒng),英銳恩科技的電子工程師小編老唐將從靈活性、成本效益、開(kāi)發(fā)效率、應(yīng)用廣泛性等方面進(jìn)行詳細(xì)闡述8單片機(jī),32位單片機(jī)編程和應(yīng)用優(yōu)勢(shì)。 一、靈活性高: 單片機(jī)編程的最大
    發(fā)表于 09-26 11:45

    MCU前沿市場(chǎng)趨勢(shì):8單片機(jī)和32位單片機(jī)

    盡管32位單片機(jī)(MCU)在單片機(jī)開(kāi)發(fā)中的普及度持續(xù)上升,但最近的MCU市場(chǎng)趨勢(shì)顯示8單片機(jī)的復(fù)合增長(zhǎng)率接近其32位單片機(jī)的復(fù)合增長(zhǎng)率。
    發(fā)表于 09-24 17:47

    8單片機(jī)為何不會(huì)被高端單片機(jī)取代?

    )應(yīng)用:8單片機(jī)應(yīng)用廣泛,包括汽車(chē)電子、家用電器、醫(yī)療設(shè)備、工業(yè)自動(dòng)化和消費(fèi)電子產(chǎn)品。它們通常是低成本、低功耗和實(shí)時(shí)控制應(yīng)用的首選。 8單片機(jī)為何不會(huì)被高端
    發(fā)表于 09-24 16:51

    8單片機(jī),32位單片機(jī)就找英銳恩!

    深圳市英銳恩科技有限公司創(chuàng)立于 2008 年,是一家從事單片機(jī)及模擬器件電路芯片應(yīng)用、設(shè)計(jì)研發(fā)、銷(xiāo)售一體的國(guó)家高新技術(shù)半導(dǎo)體企業(yè)。 英銳恩科技公司憑著自身在半導(dǎo)體電子行業(yè)MCU(8單片機(jī)、32位
    的頭像 發(fā)表于 09-23 10:32 ?566次閱讀

    單片機(jī)SPI通信實(shí)現(xiàn)

    在深入探討單片機(jī)(如基于STM32、AVR、PIC等)如何通過(guò)SPI(Serial Peripheral Interface)進(jìn)行通信之前,我們先概述SPI通信的基本原理,隨后以STM32微控制器,詳細(xì)解釋如何配置SPI接口
    的頭像 發(fā)表于 09-09 17:00 ?1267次閱讀

    藍(lán)牙模塊如何實(shí)現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳

    藍(lán)牙模塊實(shí)現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳的過(guò)程可以分為以下幾個(gè)步驟: 硬件準(zhǔn)備 : 確保你有一個(gè)支持藍(lán)牙通信的單片機(jī)開(kāi)發(fā)板,如Arduino、Raspberry Pi等。 準(zhǔn)備一個(gè)兼容的藍(lán)牙模塊,如
    的頭像 發(fā)表于 07-24 17:59 ?4671次閱讀
    藍(lán)牙模塊如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>單片機(jī)</b>和手機(jī)端數(shù)據(jù)互傳

    請(qǐng)問(wèn)stm8單片機(jī)上電后PC的變化是怎樣的?

    請(qǐng)問(wèn)一下stm8單片機(jī)上電后,PC的變化是怎樣的?
    發(fā)表于 05-15 08:04

    STM8S如何用VC++編寫(xiě)上位機(jī)程序?

    使用STM8S單片機(jī),編譯環(huán)境使用IAR.問(wèn)題如下: 1:如何用VC++編寫(xiě)上位機(jī)程序,實(shí)現(xiàn):可將燒錄hex或bin文件的數(shù)據(jù)讀取,然后加上包頭碼,長(zhǎng)度和校驗(yàn)和等字節(jié)后通過(guò)串口發(fā)送。哪
    發(fā)表于 05-13 06:44