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

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

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

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

Bootloader 萬能實(shí)現(xiàn)邏輯

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:未知 ? 2023-04-20 04:55 ? 次閱讀

倉庫地址:

https://github.com/loogg/agile_upgrade_mcu_demos

一般 Bootloader 實(shí)現(xiàn)的邏輯如下:

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

這種方式適合于簡單的裸機(jī)程序或可控的 OS 程序(即所有外設(shè)硬件都可把控),在準(zhǔn)備環(huán)境的時(shí)候?qū)⑵淙筷P(guān)閉。

但對于一些復(fù)雜的或者 OS 中輪子已造好的程序,有一些因素不花時(shí)間研究無法把控,在準(zhǔn)備環(huán)境時(shí)很可能就會遺漏一些未關(guān)閉導(dǎo)致出各種各樣的問題。

這里提供一種 萬能 方法:

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

- 在需要跳入 APP 運(yùn)行時(shí)將該寄存器賦值然后軟件復(fù)位。

- 在 OS 還沒初始化時(shí)判斷該寄存器值,如果需要跳轉(zhuǎn)只需要簡單的準(zhǔn)備環(huán)境即可跳轉(zhuǎn)。

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

該方法可以使 Bootloader 就作為一個(gè) OS 應(yīng)用程序開發(fā),需要跳轉(zhuǎn)的時(shí)候就操作一下寄存器并軟件復(fù)位即可。

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

以正點(diǎn)原子探索者開發(fā)板的 STM32F4 為例,將 system_stm32f4xx.c 文件的 SystemInit 函數(shù)修改:

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

boot_start_application的實(shí)現(xiàn)為:

 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/*棧頂?shù)刂吩?28KRAM間*/
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}

		
設(shè)置寄存器并軟件復(fù)位的實(shí)現(xiàn)為:
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}

版權(quán)聲明:本文為RT-Thread論壇用戶「Cfly」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

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

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

RT-Thread線下入門培訓(xùn)

5月 - 成都、武漢、西安

1.免費(fèi)2.動手實(shí)驗(yàn)+理論3.主辦方免費(fèi)提供開發(fā)板4.自行攜帶電腦,及插線板用于筆記本電腦充電5.參與者需要有C語言單片機(jī)ARM Cortex-M核)基礎(chǔ),請?zhí)崆鞍惭b好RT-Thread Studio 開發(fā)環(huán)境

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

立即掃碼報(bào)名

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

報(bào)名鏈接

https://jinshuju.net/f/UYxS2k

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

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

點(diǎn)擊閱讀原文,進(jìn)入RT-Thread創(chuàng)意創(chuàng)客大賽


	


原文標(biāo)題:Bootloader 萬能實(shí)現(xiàn)邏輯

文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

    關(guān)注

    31

    文章

    1300

    瀏覽量

    40264

原文標(biāo)題:Bootloader 萬能實(shí)現(xiàn)邏輯

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    效率大升!AI賦鴻蒙萬能卡片開發(fā)

    萬能卡片,作為鴻蒙生態(tài)應(yīng)用和元服務(wù)的重要展示形式,憑借將關(guān)鍵信息和核心操作前置,實(shí)現(xiàn)服務(wù)直達(dá)、減少跳轉(zhuǎn)層級的體驗(yàn)效果,備受用戶和開發(fā)者青睞。但傳統(tǒng)卡片的設(shè)計(jì)和編碼流程相對繁瑣,影響了萬能卡片的搭建
    的頭像 發(fā)表于 01-13 13:44 ?84次閱讀
    效率大升!AI賦<b class='flag-5'>能</b>鴻蒙<b class='flag-5'>萬能</b>卡片開發(fā)

    萬能轉(zhuǎn)換開關(guān)的基本結(jié)構(gòu)、工作原理及性能特點(diǎn)

    萬能轉(zhuǎn)換開關(guān)是一種廣泛應(yīng)用于工業(yè)自動化、電力系統(tǒng)、電氣設(shè)備等領(lǐng)域的電氣開關(guān)設(shè)備。它具有結(jié)構(gòu)簡單、操作方便、性能穩(wěn)定等特點(diǎn),能夠實(shí)現(xiàn)對電路的快速切換和控制。 一、萬能轉(zhuǎn)換開關(guān)的基本結(jié)構(gòu) 外殼
    的頭像 發(fā)表于 08-20 10:20 ?3469次閱讀

    萬能轉(zhuǎn)換開關(guān)的作用有哪些

    萬能轉(zhuǎn)換開關(guān)是一種廣泛應(yīng)用于工業(yè)自動化、電力系統(tǒng)、機(jī)械設(shè)備等領(lǐng)域的電氣元件。它具有多種功能和優(yōu)點(diǎn),能夠實(shí)現(xiàn)對電路的控制、保護(hù)和轉(zhuǎn)換。 電路控制功能 萬能轉(zhuǎn)換開關(guān)最基本的作用是對電路進(jìn)行控制。它可
    的頭像 發(fā)表于 08-20 10:18 ?1396次閱讀

    萬能轉(zhuǎn)換開關(guān)的定位結(jié)構(gòu)一般采用哪些

    萬能轉(zhuǎn)換開關(guān)是一種廣泛應(yīng)用于工業(yè)自動化、電力系統(tǒng)、通訊設(shè)備等領(lǐng)域的電氣開關(guān)設(shè)備。其主要功能是實(shí)現(xiàn)對電路的通斷控制、信號轉(zhuǎn)換、狀態(tài)指示等。在萬能轉(zhuǎn)換開關(guān)的設(shè)計(jì)和制造過程中,定位結(jié)構(gòu)的設(shè)計(jì)至關(guān)重要,它
    的頭像 發(fā)表于 08-20 10:12 ?3065次閱讀

    萬能轉(zhuǎn)換開關(guān)是什么的主令電器

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

    萬能轉(zhuǎn)換開關(guān)的基本概念、工作原理及結(jié)構(gòu)特點(diǎn)

    ,它可以在不同的工作狀態(tài)下實(shí)現(xiàn)對電路的切換、控制和保護(hù)。它通常由多個(gè)觸點(diǎn)、一個(gè)操作手柄和一些輔助裝置組成,具有結(jié)構(gòu)緊湊、操作方便、控制靈活等特點(diǎn)。 1.2 功能 萬能轉(zhuǎn)換開關(guān)的主要功能包括: (1)切換功能:可以實(shí)現(xiàn)對電路的開
    的頭像 發(fā)表于 08-20 10:09 ?3196次閱讀

    萬能斷路器參數(shù)設(shè)置的基本原則

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

    萬能斷路器跳閘后如何復(fù)位

    萬能斷路器是一種廣泛應(yīng)用于電力系統(tǒng)中的保護(hù)裝置,其主要作用是在電路發(fā)生故障時(shí),能夠迅速切斷電路,以保護(hù)電氣設(shè)備和人身安全。然而,在實(shí)際使用過程中,萬能斷路器可能會出現(xiàn)跳閘現(xiàn)象,這時(shí)候就需要進(jìn)行復(fù)位
    的頭像 發(fā)表于 07-31 15:24 ?1850次閱讀

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

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

    萬能斷路器參數(shù)如何設(shè)置

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

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

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

    python函數(shù)的萬能參數(shù)

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

    AG32的“萬能管腳”

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

    萬能表如何測量電瓶

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

    萬能遙控器的設(shè)置和使用方法

    萬能遙控器是一種能夠控制不同品牌電器的設(shè)備,它可以將多個(gè)遙控器的功能整合到一個(gè)遙控器上,方便用戶操作。在本文中,我將詳細(xì)介紹萬能遙控器的設(shè)置和使用方法。 設(shè)置萬能遙控器 步驟一:準(zhǔn)備工作 在開始設(shè)置
    的頭像 發(fā)表于 01-24 10:57 ?1.6w次閱讀
    主站蜘蛛池模板: 99热久久国产精品| 九月婷婷综合| 免费网站黄色| 人人天天夜夜| 久久天天综合| 澳门久久| 一区二区三区四区在线观看视频| 亚洲人成网i8禁止| 狠狠色噜噜综合社区| 亚洲欧美高清| 三级在线看| 免费特黄| 国产handjob手交在线播放| 一级特黄a 大片免费| 手机看片日韩国产| 国产女同在线观看| 中文字幕在线观看一区二区三区| 嗯!啊!使劲用力在线观看| 一区二区三区四区欧美| 视频在线你懂的| 噜噜噜噜影院| 夜夜操夜夜爽| 久久久久女人精品毛片| 俄罗斯美女69xxxxxx| 美女隐私黄www视频| 五月婷色| 免费观看a黄一级视频| xvsr-365波多野结衣| 天堂网在线www资源网| 视频免费观看视频| 国产热| 色第一页| 狠狠色网站| 天天在线免费视频| 2018国产大陆天天弄| aa三级动态图无遮无挡| 日本美女黄视频| 99久久综合精品免费| 国产精品资源| 黄视频网站免费| 日本韩国三级在线|