18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

單片機(jī)的Bootloader可以實(shí)現(xiàn)用戶(hù)輕松升級(jí)程序

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

掃碼添加小助手

加入工程師交流群

這次出差是為了升級(jí)程序解決Bug,用戶(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)似。

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 };

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ì)了嗎?留言討論一下吧。

-END-

來(lái)源 | 玩轉(zhuǎn)嵌入式

作者 | 劉小舒

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎ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)注

    6072

    文章

    45267

    瀏覽量

    661156
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    58

    文章

    2979

    瀏覽量

    470915
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4927

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    單片機(jī)燒錄原理是怎樣的?輝芒微單片機(jī)燒錄程序詳細(xì)步驟講解

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

    單片機(jī)的儲(chǔ)存優(yōu)點(diǎn)是什么

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

    怎么測(cè)單片機(jī)系統(tǒng)頻率

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

    單片機(jī)怎么驅(qū)動(dòng)電機(jī)?

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

    單片機(jī)怎么燒程序

    單片機(jī)程序是將編寫(xiě)好的程序代碼寫(xiě)入單片機(jī)內(nèi)部存儲(chǔ)單元,讓單片機(jī)按照預(yù)設(shè)邏輯工作的過(guò)程,是單片機(jī)
    的頭像 發(fā)表于 07-23 11:47 ?492次閱讀

    STC單片機(jī)范例程序

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

    2.4寸TFT彩屏配套測(cè)試程序-51單片機(jī)

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

    單片機(jī)各種復(fù)位電路原理

    使用哪種類(lèi)型的單片機(jī),總要涉及到單片機(jī)復(fù)位電路的設(shè)計(jì)。而單片機(jī)復(fù)位電路設(shè)計(jì)的好壞,直接影響到整個(gè)系統(tǒng)工作的可靠性。許多用戶(hù)在設(shè)計(jì)完單片機(jī)系統(tǒng)
    發(fā)表于 05-30 16:53

    單片機(jī)和伺服有什么區(qū)別

    單片機(jī)和伺服的區(qū)別 單片機(jī)(Microcontroller)和伺服(Servo System)是兩種完全不同的技術(shù)概念,分別屬于 控制系統(tǒng)硬件 和 運(yùn)動(dòng)控制執(zhí)行系統(tǒng) 。以下是它們的詳細(xì)對(duì)比和區(qū)別
    的頭像 發(fā)表于 05-26 09:18 ?463次閱讀

    單片機(jī)在智能家居中的應(yīng)用

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

    騰訊ima升級(jí)知識(shí)庫(kù)功能,上線(xiàn)小程序實(shí)現(xiàn)共享與便捷問(wèn)答

    的知識(shí)管理體驗(yàn)。 現(xiàn)在,用戶(hù)可以在ima平臺(tái)上輕松創(chuàng)建知識(shí)庫(kù),并設(shè)置共享權(quán)限,實(shí)現(xiàn)多人同時(shí)使用和編輯。這一功能的增加,極大地提升了團(tuán)隊(duì)協(xié)作的效率,使得知識(shí)信息的共享和傳遞變得更加流暢。
    的頭像 發(fā)表于 12-31 15:32 ?2389次閱讀

    單片機(jī)Debug工具性能對(duì)比 單片機(jī)調(diào)試常用命令

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

    單片機(jī)編程語(yǔ)言有哪些選擇

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

    單片機(jī)系統(tǒng)設(shè)計(jì)流程及注意事項(xiàng)

    單片機(jī)系統(tǒng)設(shè)計(jì)是一個(gè)涉及硬件和軟件的綜合過(guò)程,它要求設(shè)計(jì)者不僅要有扎實(shí)的電子技術(shù)基礎(chǔ),還要具備一定的編程能力和系統(tǒng)分析能力。 單片機(jī)系統(tǒng)設(shè)計(jì)流程 1. 需求分析 明確功能 :確定單片機(jī)系統(tǒng)需要
    的頭像 發(fā)表于 11-01 14:12 ?2359次閱讀

    單片機(jī)調(diào)試常見(jiàn)問(wèn)題與解決方法

    單片機(jī)調(diào)試是嵌入式系統(tǒng)開(kāi)發(fā)中的一個(gè)重要環(huán)節(jié),它涉及到對(duì)單片機(jī)程序的測(cè)試和優(yōu)化,以確保系統(tǒng)能夠正常工作。在調(diào)試過(guò)程中,開(kāi)發(fā)者可能會(huì)遇到各種問(wèn)題。 1. 程序無(wú)法燒錄到
    的頭像 發(fā)表于 11-01 14:11 ?3613次閱讀