精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

Bootloader 萬能實現邏輯

RTThread物聯網操作系統 ? 來源:未知 ? 2023-04-20 04:55 ? 次閱讀

倉庫地址:

https://github.com/loogg/agile_upgrade_mcu_demos

一般 Bootloader 實現的邏輯如下:

5a93a02c-def4-11ed-bfe3-dac502259ad0.png

這種方式適合于簡單的裸機程序或可控的 OS 程序(即所有外設硬件都可把控),在準備環境的時候將其全部關閉。

但對于一些復雜的或者 OS 中輪子已造好的程序,有一些因素不花時間研究無法把控,在準備環境時很可能就會遺漏一些未關閉導致出各種各樣的問題。

這里提供一種 萬能 方法:

- 利用芯片中的不受軟件復位影響的可供用戶使用的寄存器 (如 STM32 中的備份寄存器)。

- 在需要跳入 APP 運行時將該寄存器賦值然后軟件復位。

- 在 OS 還沒初始化時判斷該寄存器值,如果需要跳轉只需要簡單的準備環境即可跳轉。

5ab3e9e0-def4-11ed-bfe3-dac502259ad0.png

該方法可以使 Bootloader 就作為一個 OS 應用程序開發,需要跳轉的時候就操作一下寄存器并軟件復位即可。

該倉庫下所有的 Bootloader 例子均使用此方法。

以正點原子探索者開發板的 STM32F4 為例,將 system_stm32f4xx.c 文件的 SystemInit 函數修改:

1voidboot_start_application(void);
2voidSystemInit(void)
3{
4boot_start_application();

boot_start_application的實現為:

 1typedefvoid(*boot_app_func)(void);
 2voidboot_start_application(void){
 3__HAL_RCC_PWR_CLK_ENABLE();
 4HAL_PWR_EnableBkUpAccess();
 5RTC_HandleTypeDefRTC_Handler={0};
 6RTC_Handler.Instance=RTC;
 7uint32_tbkp_data=HAL_RTCEx_BKUPRead(&RTC_Handler,BOOT_BKP);
 8HAL_RTCEx_BKUPWrite(&RTC_Handler,BOOT_BKP,0);
 9if(bkp_data!=0xA5A5)return;
10boot_app_funcapp_func=NULL;
11uint32_tapp_addr=BOOT_APP_ADDR;
12if(((*(__IOuint32_t*)(app_addr+4))&0xff000000)!=0x08000000)return;
13/*棧頂地址在128KRAM間*/
14if(((*(__IOuint32_t*)app_addr)-0x20000000)>=(STM32_SRAM_SIZE*1024))return;
15app_func=(boot_app_func)*(__IOuint32_t*)(app_addr+4);
16/*Configuremainstack*/
17__set_MSP(*(__IOuint32_t*)app_addr);
18/*jumptoapplication*/
19app_func();
20}

		
設置寄存器并軟件復位的實現為:
1staticvoidboot_app_enable(void){
2__disable_irq();
3RTC_HandleTypeDefRTC_Handler={0};
4RTC_Handler.Instance=RTC;
5HAL_RTCEx_BKUPWrite(&RTC_Handler,BOOT_BKP,0xA5A5);
6HAL_NVIC_SystemReset();
7}

版權聲明:本文為RT-Thread論壇用戶「Cfly」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://club.rt-thread.org/ask/article/08aa702381dd4310.html

———————End———————

RT-Thread線下入門培訓

5月 - 成都、武漢、西安

1.免費2.動手實驗+理論3.主辦方免費提供開發板4.自行攜帶電腦,及插線板用于筆記本電腦充電5.參與者需要有C語言單片機ARM Cortex-M核)基礎,請提前安裝好RT-Thread Studio 開發環境

5ace1a72-def4-11ed-bfe3-dac502259ad0.png

立即掃碼報名

(4月-青島、北京 就在本周六)

報名鏈接

https://jinshuju.net/f/UYxS2k

巡回城市:青島、北京、西安、成都、武漢、鄭州、杭州、深圳、上海、南京

你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進RT-Thread官方微信交流群!

點擊閱讀原文,進入RT-Thread創意創客大賽


	


原文標題:Bootloader 萬能實現邏輯

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。


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

    關注

    31

    文章

    1274

    瀏覽量

    39938

原文標題:Bootloader 萬能實現邏輯

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    萬能轉換開關的基本結構、工作原理及性能特點

    萬能轉換開關是一種廣泛應用于工業自動化、電力系統、電氣設備等領域的電氣開關設備。它具有結構簡單、操作方便、性能穩定等特點,能夠實現對電路的快速切換和控制。 一、萬能轉換開關的基本結構 外殼
    的頭像 發表于 08-20 10:20 ?2386次閱讀

    萬能轉換開關的作用有哪些

    萬能轉換開關是一種廣泛應用于工業自動化、電力系統、機械設備等領域的電氣元件。它具有多種功能和優點,能夠實現對電路的控制、保護和轉換。 電路控制功能 萬能轉換開關最基本的作用是對電路進行控制。它可
    的頭像 發表于 08-20 10:18 ?812次閱讀

    萬能轉換開關的定位結構一般采用哪些

    萬能轉換開關是一種廣泛應用于工業自動化、電力系統、通訊設備等領域的電氣開關設備。其主要功能是實現對電路的通斷控制、信號轉換、狀態指示等。在萬能轉換開關的設計和制造過程中,定位結構的設計至關重要,它
    的頭像 發表于 08-20 10:12 ?2104次閱讀

    萬能轉換開關是什么的主令電器

    ,充分體現了其廣泛的應用范圍和強大的功能特性。 一、定義與功能 萬能轉換開關,顧名思義,是一種能夠實現多種電路轉換和控制功能的主令電器。它主要用于將不同電流、電壓的家用電器或電氣設備轉換成其適用的工作條件,確保設備在正確的電壓
    的頭像 發表于 08-20 10:11 ?1070次閱讀

    萬能轉換開關的基本概念、工作原理及結構特點

    ,它可以在不同的工作狀態下實現對電路的切換、控制和保護。它通常由多個觸點、一個操作手柄和一些輔助裝置組成,具有結構緊湊、操作方便、控制靈活等特點。 1.2 功能 萬能轉換開關的主要功能包括: (1)切換功能:可以實現對電路的開
    的頭像 發表于 08-20 10:09 ?2120次閱讀

    萬能斷路器參數設置的基本原則

    萬能斷路器是一種廣泛應用于電力系統、工業自動化和建筑電氣等領域的保護和控制設備。它具有過載保護、短路保護、欠壓保護等多種功能,能夠有效地保護電氣設備和線路的安全運行。為了確保萬能斷路器的正常工作
    的頭像 發表于 08-14 15:50 ?817次閱讀

    萬能斷路器跳閘后如何復位

    萬能斷路器是一種廣泛應用于電力系統中的保護裝置,其主要作用是在電路發生故障時,能夠迅速切斷電路,以保護電氣設備和人身安全。然而,在實際使用過程中,萬能斷路器可能會出現跳閘現象,這時候就需要進行復位
    的頭像 發表于 07-31 15:24 ?1397次閱讀

    萬能斷路器合不上閘的原因

    以下是萬能斷路器合不上閘的原因的主要內容: 萬能斷路器的基本原理和功能 萬能斷路器是一種用于保護電力系統的設備,可以自動切斷故障電路,以防止設備損壞和事故的發生。 萬能斷路器的主要功能
    的頭像 發表于 07-31 15:21 ?1920次閱讀

    萬能斷路器參數如何設置

    萬能斷路器是一種廣泛應用于電力系統、工業自動化和建筑電氣領域的電氣設備,其主要功能是在電路中起到過載、短路、欠壓等保護作用。正確設置萬能斷路器參數對于確保設備安全運行和提高系統可靠性具有重要意義
    的頭像 發表于 07-31 15:19 ?1585次閱讀

    簡述萬能電橋測量電容的步驟

    萬能電橋是一種測量電感和電容的儀器,具有測量范圍廣、精度高、操作簡便等特點。在測量電容時,萬能電橋可以準確地測量出電容的值,為電子電路設計和維修提供了重要的參考數據。下面介紹萬能電橋測量電容的步驟
    的頭像 發表于 07-26 09:58 ?764次閱讀

    python函數的萬能參數

    我們通過一個簡單的事例來展示一下函數的萬能參數,我們先寫一個最簡單的函數。
    的頭像 發表于 07-17 14:56 ?310次閱讀
    python函數的<b class='flag-5'>萬能</b>參數

    AG32的“萬能管腳”

    推薦新設計了,也就是說原廠停產這款芯片已經進入倒計時了。客戶聽說我們的MCU是“萬能管腳”的,所以想試一試看能否替換。AG32的確是目前MCU產品中最接近于“萬能
    的頭像 發表于 07-09 10:00 ?78次閱讀
    AG32的“<b class='flag-5'>萬能</b>管腳”

    萬能表如何測量電瓶

    電瓶作為汽車、摩托車等交通工具的重要能源儲存裝置,其性能的好壞直接影響到車輛的正常運行。因此,定期檢查電瓶的狀態,確保其電量充足、性能穩定,是每位車主都應重視的事項。在眾多的電瓶檢測工具中,萬能
    的頭像 發表于 05-20 17:02 ?1373次閱讀

    萬能遙控器的設置和使用方法

    萬能遙控器是一種能夠控制不同品牌電器的設備,它可以將多個遙控器的功能整合到一個遙控器上,方便用戶操作。在本文中,我將詳細介紹萬能遙控器的設置和使用方法。 設置萬能遙控器 步驟一:準備工作 在開始設置
    的頭像 發表于 01-24 10:57 ?1.5w次閱讀

    HarmonyOS開發案例分享:萬能卡片也能用來玩游戲

    時候我跟別人解釋什么是萬能卡片,都會這么說:\"萬能卡片實現讓你在不用打開 app 的前提下,在桌面上就能使用到相關服務\"。有一天,我的朋友跟我說,既然可以體驗到各種服務,那么
    發表于 12-01 09:35