娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月08日(星期日)

2021年09月08日 | 以STM8單片機為例,該如何實現(xiàn)Bootloader呢?

發(fā)布者:TranquilSmile 來源: elecfans關(guān)鍵字:STM8  單片機  Bootloader 手機看文章 掃描二維碼
隨時隨地手機看文章

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

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


01

什么是Bootloader

Bootloader是一段用于更新自身應(yīng)用軟件并獨立運行的代碼,常被用于升級產(chǎn)品和修復(fù)產(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對應(yīng)中斷的偏移地址,所以會把Bootloader存放在0x8000開始的空間內(nèi),比如給Bootloader代碼所劃分的空間為4k,那么空間起始地址為:0x8000-0x8FFF;那么應(yīng)用代碼的起始地址就可以從0x9000開始。


03

修改中斷向量表

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


__rootconstlongreintvec[]@".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,所以,向量表的的修改方法為:除了第一個元素為,其余的元素將8改為9,修改完后代碼如下:

__rootconstlongreintvec[]@".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)境的安裝目錄下,每個型號/系列的單片機都會對應(yīng)一個ICF 文件,需要修改一下ICF文件,這里需要根據(jù)flash空間的劃分來修改,前面將Bootloader的終止地址設(shè)置為0x9FFF,所以修改如下:

defineregionNearFuncCode=[from0x8000to0x8FFF];defineblockINTVECwithsize=0x80{rosection.intvec};place at start of NearFuncCode { block INTVEC };

05

跳轉(zhuǎn)命令

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

asm("LDW X, SP ");asm("LDA,$FF");asm("LDXL,A");asm("LDWSP,X");asm("JPF$9000");應(yīng)用程序跳轉(zhuǎn)到Bootloader中的代碼如下

sm("LDW X, SP ");asm("LDA,$FF");asm("LDXL,A");asm("LDWSP,X");asm("JPF$8000");


06

編寫交互代碼

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

關(guān)鍵字:STM8  單片機  Bootloader 引用地址:以STM8單片機為例,該如何實現(xiàn)Bootloader呢?

上一篇:基于STM8主控的物美價廉的毫歐表設(shè)計
下一篇:SIM868的參考設(shè)計接口的靜電防護

推薦閱讀

  汽車制造商,軟件開發(fā)商和技術(shù)公司正在引領(lǐng)汽車行業(yè)的徹底轉(zhuǎn)型。他們正在改進和重新定義現(xiàn)有技術(shù),并引入新的概念,如人工智能和聯(lián)網(wǎng)汽車,為我們提供了一種駕駛體驗,就像我們所知道的一樣。  完全自動駕駛的汽車將乘客運送到目的地而無需駕駛員監(jiān)督。車內(nèi)就是所有的娛樂,信息,以及與家人,辦公室甚至是咖啡店等有關(guān)的所有地方。從室內(nèi)溫度到窗戶...
不知如何選 遇到客戶問題不知怎么辦 市面上的車型那么多 偏偏沒有想要的那一款 大廠定制不給做 小廠定制不靠譜 仙知機器人 一站式移動機器人方案專家 幫您統(tǒng)統(tǒng)解決~ SRC系列核心控制器 適配多種車型 由于每個工廠車間的布局都不相同,產(chǎn)線對接與物流運輸需求也不一樣,導(dǎo)致沒有一款產(chǎn)品可以滿足所有工廠的需求。另外,即便在同一個工廠,產(chǎn)線...
單片機的應(yīng)用場景時常涉及到模擬信號。我們已經(jīng)會使用ADC把模擬信號轉(zhuǎn)換成數(shù)字信號,本講中我們要學(xué)習(xí)使用DAC把數(shù)字信號轉(zhuǎn)換成模擬信號。我們還將搭建一個簡單的功率放大器電路,用DAC通過揚聲器播放音樂。SPI總線集成DAC的單片機不多,ATmega系列就不在此列。我們將要使用的10位ADC是通過SPI總線通信的,因此我們先來學(xué)習(xí)SPI總線。SPI是一種同步串行通信...
水下機器人也稱無人遙控潛水器,是一種工作于水下的極限作業(yè)機器人。水下環(huán)境惡劣危險,人的潛水深度有限,所以水下機器人已成為開發(fā)海洋的重要工具。無人遙控潛水器主要有:有纜遙控潛水器和無纜遙控潛水器兩種,其中有纜遙控潛水器又分為水中自航式、拖航式和能在海底結(jié)構(gòu)物上爬行式三種。水下機器人的結(jié)構(gòu)功能典型的遙控潛水器是由水面設(shè)備(包括操縱控...

史海拾趣

問答坊 | AI 解惑

語音控制小車

本帖最后由 paulhyde 于 2014-9-15 08:59 編輯 1.1 功能簡介 語音控制小車是凌陽科技教育推廣中心推出的基于凌陽 16 位單片機 SPCE061A 的典型應(yīng)用,在產(chǎn)品 設(shè)計上充分利用了 SPCE061A的眾多資源,打破了傳統(tǒng)教學(xué)中單片機學(xué)習(xí)枯燥和低效的現(xiàn)狀 ...…

查看全部問答∨

高速PCB設(shè)計EMI規(guī)則探討(一)

隨著,信號上升沿時間的減小,信號頻率的提高,電子產(chǎn)品的EMI問題,也來越受到電子工程師的光注。高速PCB設(shè)計的成功,對EMI的貢獻越來越受到重視,幾乎60%的EMI問題可以通過高速PCB來控制解決。做了,4年的EMI設(shè)計,一些心得和大家交流、交流。 ...…

查看全部問答∨

DBT Warning 00135:Cannot set breakpoints in literal pools

又來麻煩大家了,我的平臺是S3C2442,在用AXD和JTAG仿真調(diào)試bootloader時,遇到如題問題;用的代理是H-JTAG。 同時反匯編后:         b   ResetHandler [0xffffffff]   dci   &nb ...…

查看全部問答∨

關(guān)于EVC通過ActiveSync在線調(diào)試目標(biāo)板的問題

我想我的開發(fā)板應(yīng)該已經(jīng)和ActiveSync成功通訊上了,因為我可以通過ActiveSync看到目標(biāo)板上的文件,并且可以將文件COPY進去,但我還是無法用EVC在線調(diào)試,每次都會出現(xiàn)SERVER IS STARTED然后出現(xiàn)CONNECTING的進程條并不停的等待. 問題困擾我好長時間了, ...…

查看全部問答∨

仿真可以,脫機運行出錯!

5416的USB的接口設(shè)備,在連接仿真器的情況下,識別成功,傳輸數(shù)據(jù)也成功 但是BOOT后單獨上電系統(tǒng)就無法識別了,BOOT應(yīng)該是成功了,我在多處都加了閃燈程序也運行了,應(yīng)該是DSP寫描述符時候出錯了,主機得到的描述符不對,所以枚舉失敗 奇怪的是把 ...…

查看全部問答∨

【下載】基于STM32的μC/OSⅡ移植例程

資料大小:1583K(本論壇限制,傳不上來)資料說明:1.改移植和模板工程不包括操作系統(tǒng)核ucosⅡ的源代碼,如需使用請向操作系統(tǒng)的供應(yīng)商聯(lián)系或者網(wǎng)上下載免費的源代碼。2.本移植使用的是 ucosⅡ 2.83版本,需要在OS文件夾下添加的操 ...…

查看全部問答∨

學(xué)信號的不知道奧本海姆你就OUT了,這次見到真人了~~~

在西安進行的2011 TI教育者年會上,有幸見到了這位大師級的人物,同時也被這么執(zhí)著于技術(shù)的前輩感動著。TI 首席科學(xué)家方進與奧本海姆…

查看全部問答∨

msp430學(xué)習(xí)

大學(xué)時用msp430做過畢業(yè)設(shè)計,現(xiàn)在希望進一步學(xué)習(xí),不知道這個TI MSP-EXP430FR5739實驗板套件是否可以滿足學(xué)習(xí)要求?…

查看全部問答∨

開發(fā)一個A/D采集系統(tǒng)

 開發(fā)一個A/D采集系統(tǒng)        對板卡采集到的2個通道的開關(guān)量信號進行實時顯示控制,對板卡采集到的A/D數(shù)據(jù)保存到存儲器,然后對采集的數(shù)據(jù)回放顯示分析。 上位機主要完成:1. 向下位機發(fā)送命 ...…

查看全部問答∨

有需要壓力傳感器價格技術(shù)參數(shù)和介紹的留下郵箱。

有需要壓力傳感器價格技術(shù)參數(shù)和介紹的留下郵箱。…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 湖州市| 柘荣县| 宜阳县| 巨野县| 密云县| 万年县| 周至县| 利津县| 禄丰县| 汉沽区| 宝丰县| 咸丰县| 普兰县| 西城区| 平昌县| 尼勒克县| 康定县| 岗巴县| 军事| 香港| 阿尔山市| 南丹县| 边坝县| 壤塘县| 新密市| 盖州市| 万荣县| 尚义县| 娱乐| 互助| 龙川县| 平顶山市| 高安市| 阳谷县| 九台市| 沙雅县| 永昌县| 博客| 饶平县| 九江市| 迁安市|