chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

單片機的Bootloader可以實現(xiàn)用戶輕松升級程序

工程師 ? 來源:玩轉嵌入式 ? 作者: 劉小舒 ? 2020-10-23 16:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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的中斷向量跳轉地 址是固定的,會 跳轉到0x8000對應中斷的偏移地址,所以會把Bootloader存放在0x8000開始的空間內,比如給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 };

05

跳轉命令

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

asm(“LDW X, SP ”);asm(“LD A, $FF”);asm(“LD XL, A ”);asm(“LDW SP, X ”);asm(“JPF $9000”);

應用程序跳轉到Bootloader中的代碼如下

sm(“LDW X, SP ”);asm(“LD A, $FF”);asm(“LD XL, A ”);asm(“LDW SP, X ”);asm(“JPF $8000”);

06

編寫交互代碼

以上設置好之后,就可以編寫交互代碼了,所以交互代碼其實就是一套協(xié)議,規(guī)定了應用程序如何跳轉到Boot,在Boot中如何處理和存儲數(shù)據(jù),這需要上位機的支持。如果只是用于自家的產(chǎn)品,就可以自己定義協(xié)議。也可以使用標準的協(xié)議,比如汽車行業(yè)中的UDS(統(tǒng)一診斷服務)。

Bootloader實現(xiàn)之后,就可以使用CAN/UART來實現(xiàn)產(chǎn)品固件的升級了。這就是Bootloader的關鍵內容,本文你學會了嗎?留言討論一下吧。

-END-

來源 | 玩轉嵌入式

作者 | 劉小舒

責任編輯:haq

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

    關注

    6071

    文章

    45256

    瀏覽量

    660098
  • CAN
    CAN
    +關注

    關注

    58

    文章

    2976

    瀏覽量

    470453
  • 代碼
    +關注

    關注

    30

    文章

    4922

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    單片機燒錄原理是怎樣的?輝芒微單片機燒錄程序詳細步驟講解

    燒錄(Programming)就是把 .hex/.bin 文件里的機器碼搬運進單片機片內 Flash 的過程。輝芒微(FMD)單片機內部有一塊 自舉 BootROM,上電時會先跑這段程序;如果檢測
    的頭像 發(fā)表于 09-17 16:14 ?525次閱讀
    <b class='flag-5'>單片機</b>燒錄原理是怎樣的?輝芒微<b class='flag-5'>單片機</b>燒錄<b class='flag-5'>程序</b>詳細步驟講解

    單片機的儲存優(yōu)點是什么

    單片機作為嵌入式系統(tǒng)的核心,其儲存系統(tǒng)是實現(xiàn)數(shù)據(jù)存儲與程序運行的關鍵部分。與獨立存儲芯片相比,單片機的儲存單元在集成度、功耗、可靠性等方面具備獨特優(yōu)勢,這些優(yōu)點使其能適應從消費電子到工
    的頭像 發(fā)表于 07-31 10:09 ?385次閱讀

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

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

    單片機怎么驅動電機?

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

    單片機怎么燒程序

    單片機程序是將編寫好的程序代碼寫入單片機內部存儲單元,讓單片機按照預設邏輯工作的過程,是單片機
    的頭像 發(fā)表于 07-23 11:47 ?464次閱讀

    STC單片機范例程序

    電子發(fā)燒友網(wǎng)站提供《STC單片機范例程序.zip》資料免費下載
    發(fā)表于 06-04 16:27 ?7次下載

    2.4寸TFT彩屏配套測試程序-51單片機

    如題,2.4寸TFT彩屏配套測試程序-51單片機
    發(fā)表于 06-04 16:26 ?0次下載

    單片機在智能家居中的應用

    。 智能照明系統(tǒng) :單片機可以控制家中的燈光,根據(jù)環(huán)境光線、時間和用戶習慣自動調節(jié)燈光的亮度和顏色。通過手機APP或語音助手,用戶可以遠程控
    的頭像 發(fā)表于 01-13 14:36 ?1845次閱讀

    單片機Debug工具性能對比 單片機調試常用命令

    單片機(Microcontroller Unit, MCU)調試是嵌入式開發(fā)中的一個重要環(huán)節(jié),它幫助開發(fā)者發(fā)現(xiàn)和修復代碼中的錯誤,優(yōu)化程序性能。不同的單片機和開發(fā)環(huán)境可能使用不同的調試工具和命令
    的頭像 發(fā)表于 12-19 09:56 ?1920次閱讀

    單片機編程語言有哪些選擇

    單片機(Microcontroller Unit,MCU)編程是指為單片機編寫程序的過程,這些程序控制單片機的行為和功能。單片機廣泛應用于嵌
    的頭像 發(fā)表于 11-01 14:13 ?3309次閱讀

    基于51單片機的手動數(shù)字時鐘

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

    基于51單片機的遙控開關仿真(雙機通信)

    靈活、高效的解決方案。本設計所使用的芯片可兼容以下所有的51系列單片機(包括AT系列和STC系列)。資料內容仿真實現(xiàn)(protues8.7)本設計利用protues8.7軟件實現(xiàn)仿真設計,具體如圖。
    的頭像 發(fā)表于 10-22 14:12 ?1014次閱讀
    基于51<b class='flag-5'>單片機</b>的遙控開關仿真(雙機通信)

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

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

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機和開發(fā)環(huán)境 : 確定項目需求,選擇合適的單片機型號。 安裝相應的開發(fā)環(huán)境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機連接到開發(fā)板或
    的頭像 發(fā)表于 10-21 11:21 ?3023次閱讀

    單片機的中斷機制

    單片機的中斷機制是一種重要的處理方式,它允許單片機在執(zhí)行主程序的過程中,能夠暫停當前任務,轉而處理外部或內部緊急事件。這種機制極大地提高了系統(tǒng)的響應速度和處理能力,使得單片機在各種應用
    的頭像 發(fā)表于 10-17 18:03 ?2242次閱讀