在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何編寫ARM處理器的Bootloader

工程師 ? 來源:strongerHuang ? 作者:strongerHuang ? 2020-10-27 11:02 ? 次閱讀

作者 | strongerHuang

微信公眾號 | strongerHuang

之前從應用的角度給大家分享過Bootloader相關的文章,今天從底層原理來給大家描述ARM處理器如何編寫Bootloader。

1關于Bootloader

Bootloader顧名思義就是引導加載程序,是在操作系統或應用程序運行之前的一段程序,是在系統上電后執行的一段程序代碼

BootLoader是嚴重地依賴于硬件而實現的,特別是在嵌入式平臺。因此,在嵌入式平臺里建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們仍然可以對bootloader歸納出一些通用的概念來,以指導用戶特定的BootLoader設計與實現。

---來源百度百科

Bootloader在手機電腦、眾多嵌入式系統中都存在,它的作用有很多,比如:初始化底層應用驅動、加載應用程序、更新應用程序等。

不同的設備,Bootloader可能差異很大,通常來說Bootloader比較依賴底層硬件和實際項目需求。

2如何編寫bootloader

bootloader是一段引導加載程序代碼,它更新用戶的應用程序代碼,可以使用很多硬件下載通道(例如USB、網絡端口)獲得新代碼。

在執行引導ROM之后,將執行bootloader程序,并在需要時進行更新,然后執行最終用戶應用程序。

引導加載程序和用戶應用程序應作為兩個獨立的Project或Object進行編寫和編譯,從而產生兩個獨立且可執行的(bin/hex)文件。

引導加載程序的主要任務是在必要時對用戶應用程序進行重新編程/替換,并跳轉至用戶應用程序以執行該程序,應用程序不一定需要知道引導加載程序的存在。

引導加載程序通常位于芯片閃存基址,下面通過一張圖來描述內存和Flash代碼映射關系:

有很多方法可以引導bootloader進入編程模式,以將用戶應用程序重新編程到Flash中,或者直接跳轉到現有的用戶應用程序來執行。最簡單的方法是檢查GPIO引腳以確定是否應進入編程模式。

大多數芯片供應商為用戶提供了一種方便的方式,例如 ISP 和 IAP 接口,bootloader將使用它們來更新閃存內容。

當Flash內容已更新或已經是最新時,引導加載程序將跳轉到用戶應用程序。在執行用戶應用程序之前,這需要許多步驟:

1.確保CPU處于特權模式。

2.禁用NVIC中所有啟用的中斷。

3.禁用所有可能產生中斷請求的使能外設,并清除這些外設中的所有未使用中斷標志。

4.清除NVIC中所有未使用的中斷請求。

5.禁用SysTick并清除其異常掛起位。

6.如果引導加載程序使用了單個故障處理程序,請禁用它們。

7.如果發現內核當前與PSP一起運行,則激活MSP(由于編譯器可能仍在使用堆棧,因此在此之前需要將PSP復制到MSP)。

8.將用戶應用程序的向量表地址加載到SCB-》 VTOR寄存器中。確保地址符合對齊要求。

9.最后一部分是將MSP設置為用戶應用程序向量表中找到的值,然后將用戶應用程序的重置向量值加載到PC中,也就是跳轉功能。

比如通過調用下面的示例BootJump()這樣的函數來完成此操作:

static void BootJump(uint32_t *Address){ //1.確保CPU處于特權模式。 if( CONTROL_nPRIV_Msk & __get_CONTROL()) { /* not in privileged mode */ EnablePrivilegedMode() ; } //2.禁用NVIC中所有啟用的中斷。 Disable_All_Peripherals(); //3.禁用所有可能產生中斷請求的使能外設,并清除這些外設中的所有未使用中斷標志。 NVIC-》ICER[ 0 ] = 0xFFFFFFFF; NVIC-》ICER[ 1 ] = 0xFFFFFFFF; NVIC-》ICER[ 2 ] = 0xFFFFFFFF; NVIC-》ICER[ 3 ] = 0xFFFFFFFF; NVIC-》ICER[ 4 ] = 0xFFFFFFFF; NVIC-》ICER[ 5 ] = 0xFFFFFFFF; NVIC-》ICER[ 6 ] = 0xFFFFFFFF; NVIC-》ICER[ 7 ] = 0xFFFFFFFF; //4.清除NVIC中所有未使用的中斷請求。 NVIC-》ICPR[ 0 ] = 0xFFFFFFFF; NVIC-》ICPR[ 1 ] = 0xFFFFFFFF; NVIC-》ICPR[ 2 ] = 0xFFFFFFFF; NVIC-》ICPR[ 3 ] = 0xFFFFFFFF; NVIC-》ICPR[ 4 ] = 0xFFFFFFFF; NVIC-》ICPR[ 5 ] = 0xFFFFFFFF; NVIC-》ICPR[ 6 ] = 0xFFFFFFFF; NVIC-》ICPR[ 7 ] = 0xFFFFFFFF; //5.禁用SysTick并清除其異常掛起位。 SysTick-》CTRL = 0; SCB-》ICSR |= SCB_ICSR_PENDSTCLR_Msk; //

6.如果引導加載程序使用了單個故障處理程序,請禁用它們。 SCB-》SHCSR &= ~( SCB_SHCSR_USGFAULTENA_Msk | \ SCB_SHCSR_BUSFAULTENA_Msk | \ SCB_SHCSR_MEMFAULTENA_Msk ) ; //7.如果發現內核當前與PSP一起運行,則激活MSP if( CONTROL_SPSEL_Msk & __get_CONTROL()) { /* MSP is not active */ __set_MSP( __get_PSP()) ; __set_CONTROL( __get_CONTROL() & ~CONTROL_SPSEL_Msk); } //8.將用戶應用程序的向量表地址加載到SCB-》 VTOR寄存器中。 SCB-》VTOR = ( uint32_t )Address ; //9.跳轉 BootJumpASM( Address[ 0 ], Address[ 1 ]);}

再次說明bootloader與底層硬件和實際需求有關,以上代碼僅供參考,主要是提供思路,方便大家理解。

責任編輯:haq

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

    關注

    459

    文章

    52253

    瀏覽量

    436949
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9321

    瀏覽量

    375398
  • 程序
    +關注

    關注

    117

    文章

    3824

    瀏覽量

    82498
  • keil
    +關注

    關注

    69

    文章

    1223

    瀏覽量

    169102
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    EE-218:為ADSP-TS201 TigerSHARC處理器編寫高效浮點FFT

    電子發燒友網站提供《EE-218:為ADSP-TS201 TigerSHARC處理器編寫高效浮點FFT.pdf》資料免費下載
    發表于 01-14 16:46 ?0次下載
    EE-218:為ADSP-TS201 TigerSHARC<b class='flag-5'>處理器</b><b class='flag-5'>編寫</b>高效浮點FFT

    ARM處理器的尋址方式

    ARM處理器的尋址方式是處理器在執行指令時,根據指令中給出的地址信息來尋找物理地址的方法。ARM處理器支持多種尋址方式,以滿足不同的編程需求
    的頭像 發表于 10-05 17:08 ?711次閱讀

    ARM處理器和CPU有什么區別

    ARM處理器和CPU(中央處理器)之間的關系及區別,可以從多個維度進行深入探討。首先,需要明確的是,ARM處理器并非一種獨立的CPU類型,而
    的頭像 發表于 09-10 11:24 ?3091次閱讀

    ARM處理器的工作模式和特點

    ARM處理器具有多種工作模式,這些模式根據處理器執行的任務和當前的狀態進行劃分。常見的ARM處理器工作模式包括用戶模式(User Mode)
    的頭像 發表于 09-10 11:22 ?2148次閱讀

    ARM處理器的異常中斷響應過程

    ARM處理器的異常中斷響應是嵌入式系統設計中一個至關重要的環節,它確保了系統在面對內部或外部事件時能夠穩定、可靠地運行。
    的頭像 發表于 09-10 11:18 ?1827次閱讀

    ARM處理器的指令集包括哪些

    ARM處理器的指令集是一個龐大而復雜的系統,它涵蓋了多種類型的指令,用于實現數據處理、程序控制、內存訪問等多種功能。
    的頭像 發表于 09-10 11:15 ?1381次閱讀

    ARM處理器的寄存組織及功能

    ARM處理器的寄存組織是其核心架構的重要組成部分,對于理解ARM處理器的運行機制和性能特點具有重要意義。以下是對
    的頭像 發表于 09-10 11:11 ?2568次閱讀

    ARM處理器和CISC處理器的區別

    ARM處理器和CISC(復雜指令集計算機)處理器在多個方面存在顯著的區別。這些區別主要體現在架構原理、性能與功耗、設計目標、應用領域以及市場生態等方面。
    的頭像 發表于 09-10 11:10 ?911次閱讀

    ARM處理器的結構和特點

    ARM處理器,全稱Advanced RISC Machines,是一種基于精簡指令集(RISC)架構的微處理器。其結構和特點在嵌入式系統、移動設備、物聯網等多個領域具有顯著優勢。以下將詳細闡述
    的頭像 發表于 09-10 11:09 ?3165次閱讀

    ARM處理器概述和發展歷程

    ARM處理器是一種基于RISC(精簡指令集計算機)架構的高性能微處理器,由英國公司ARM(Advanced RISC Machines)開發和授權。它以其低功耗、低成本和高性能的特點,
    的頭像 發表于 09-10 11:07 ?1766次閱讀

    用于PROFIBUS的AM1810 ARM處理器數據表

    電子發燒友網站提供《用于PROFIBUS的AM1810 ARM處理器數據表.pdf》資料免費下載
    發表于 08-08 12:57 ?0次下載
    用于PROFIBUS的AM1810 <b class='flag-5'>ARM</b>微<b class='flag-5'>處理器</b>數據表

    AM1802 ARM處理器數據表

    電子發燒友網站提供《AM1802 ARM處理器數據表.pdf》資料免費下載
    發表于 08-08 12:50 ?0次下載
    AM1802 <b class='flag-5'>ARM</b>微<b class='flag-5'>處理器</b>數據表

    AM1705 ARM處理器數據表

    電子發燒友網站提供《AM1705 ARM處理器數據表.pdf》資料免費下載
    發表于 08-08 11:50 ?0次下載
    AM1705 <b class='flag-5'>ARM</b>微<b class='flag-5'>處理器</b>數據表

    AM1707 ARM處理器數據表

    電子發燒友網站提供《AM1707 ARM處理器數據表.pdf》資料免費下載
    發表于 08-07 11:21 ?0次下載
    AM1707 <b class='flag-5'>ARM</b>微<b class='flag-5'>處理器</b>數據表

    什么是ARM處理器?與x86的比較及其優缺點

    ARM處理器已迅速成為使用最廣泛的處理器之一,每年生產多達數十億臺基于ARM的設備。那么,ARM處理器
    的頭像 發表于 06-26 16:49 ?1409次閱讀
    什么是<b class='flag-5'>ARM</b><b class='flag-5'>處理器</b>?與x86的比較及其優缺點
    主站蜘蛛池模板: 美女免费视频一区二区三区 | 亚洲视频一区二区 | 国产未成女年一区二区 | 欧美夜夜夜 | 国产天堂网 | 色噜噜狠狠成人网 | 欧美另类网 | 天天操天天摸天天干 | 天天操夜夜操视频 | 夜夜春夜夜爽 | 国产一级特黄aa级特黄裸毛片 | 色综合天天综久久久噜噜噜久久〔 | 免费公开视频人人人人人人人 | 一级aaaaaa片毛片在线播放 | 丁香婷婷综合五月六月 | 欧美激情一欧美吧 | 久久97精品久久久久久久看片 | 黄网站免费视频 | 免费黄色福利 | 中文字幕欧美日韩 | 天天色天天干天天 | 婷婷网五月天天综合天天爱 | 黄色一级大片视频 | 五月婷婷影院 | 天天综合色天天桴色 | 欧美一区精品 | 三级黄色短视频 | 男女无遮挡在线完整视频 | 国产精品网址你懂的 | 色婷婷综合激情视频免费看 | 国产伦精品一区二区三区高清 | 国产激情视频一区二区三区 | 男人操女人视频免费 | 亚洲第一区在线 | 六月丁香六月婷婷 | 成人黄色在线 | 色聚网久久综合 | 4438x成人网最大色成网站 | 一级a爰片久久毛片 | 久久99热狠狠色精品一区 | 色老头久久网 |