91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:未知 ? 2023-04-20 04:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

倉(cāng)庫(kù)地址:

https://github.com/loogg/agile_upgrade_mcu_demos

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

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

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

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

這里提供一種 萬能 方法:

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

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

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

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

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

該倉(cāng)庫(kù)下所有的 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)載請(qǐng)附上原文出處鏈接及本聲明。

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

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

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

5月 - 成都、武漢、西安

1.免費(fèi)2.動(dòng)手實(shí)驗(yàn)+理論3.主辦方免費(fèi)提供開發(fā)板4.自行攜帶電腦,及插線板用于筆記本電腦充電5.參與者需要有C語言、單片機(jī)ARM Cortex-M核)基礎(chǔ),請(qǐng)?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)邏輯

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


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

    關(guān)注

    32

    文章

    1614

    瀏覽量

    44904

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    復(fù)合光纖電纜:破解“最后一公里”難題的“萬能鑰匙”

    在智慧城市、工業(yè)互聯(lián)網(wǎng)與智能家居的浪潮中,如何高效解決設(shè)備供電與數(shù)據(jù)傳輸?shù)摹白詈笠还铩泵?,成為行業(yè)痛點(diǎn)。復(fù)合光纖電纜憑借其“光電一體、一纜多用”的特性,正成為破解這一難題的“萬能鑰匙”。 園區(qū)
    的頭像 發(fā)表于 02-02 11:07 ?210次閱讀

    深入解析rk平臺(tái)Android Bootloader核心代碼:從啟動(dòng)流程到AVB驗(yàn)證

    下android_bootloader.c的核心代碼,帶你讀懂Android設(shè)備從Bootloader到內(nèi)核的完整啟動(dòng)邏輯,以及開發(fā)者關(guān)注這些代碼的核心價(jià)值。 一、代碼整體定位 這份代碼是Rockchip(瑞芯微)平臺(tái)
    的頭像 發(fā)表于 01-22 07:06 ?282次閱讀
    深入解析rk平臺(tái)Android <b class='flag-5'>Bootloader</b>核心代碼:從啟動(dòng)流程到AVB驗(yàn)證

    深入解析RK平臺(tái)Android/Linux Bootloader核心文件:android_bootloader.c

    Bootloader是Android設(shè)備啟動(dòng)的第一道“關(guān)卡”,負(fù)責(zé)初始化硬件、加載系統(tǒng)鏡像并完成內(nèi)核啟動(dòng)的前置準(zhǔn)備。在基于U-Boot的Android設(shè)備中,android_bootloader
    的頭像 發(fā)表于 01-09 10:58 ?1212次閱讀
    深入解析RK平臺(tái)Android/Linux <b class='flag-5'>Bootloader</b>核心文件:android_<b class='flag-5'>bootloader</b>.c

    高精度力值測(cè)量的基石:電子萬能試驗(yàn)機(jī)傳感器與信號(hào)調(diào)理電路技術(shù)

    在電子萬能試驗(yàn)機(jī)的力值測(cè)量體系中,傳感器與信號(hào)調(diào)理電路如同精密協(xié)作的“感知核心” 與 “信號(hào)管家”,共同構(gòu)筑起高精度測(cè)量的堅(jiān)實(shí)基礎(chǔ)。前者負(fù)責(zé)捕捉力的細(xì)微變化,后者則將原始信號(hào)打磨提純,二者的無縫配合
    的頭像 發(fā)表于 01-06 09:31 ?218次閱讀
    高精度力值測(cè)量的基石:電子<b class='flag-5'>萬能</b>試驗(yàn)機(jī)傳感器與信號(hào)調(diào)理電路技術(shù)

    LabVIEW 變體:萬能數(shù)據(jù)容器的藝術(shù)

    的使用方法 常規(guī)使用是這樣的: ![圖片](./LabVIEW 變體:萬能數(shù)據(jù)容器的藝術(shù)_files/640(3)) 讓我們的程序函數(shù)(方法)能夠“泛化”。 典型應(yīng)用有如下兩個(gè): 這個(gè)我前面分析
    發(fā)表于 01-05 11:06

    新品 | Chain Blank Chain Mount,Chain系列萬能板 結(jié)構(gòu)拓展節(jié)點(diǎn)

    節(jié)點(diǎn)。節(jié)點(diǎn)正面提供了一塊18x18mm的PCB萬能板,其內(nèi)部預(yù)先焊接好了兩個(gè)互聯(lián)的HY2.0-4P接口,可直接串接到M5StackChain系列設(shè)備中且不影響設(shè)備原有功能。
    的頭像 發(fā)表于 12-26 17:28 ?1592次閱讀
    新品 | Chain Blank   Chain Mount,Chain系列<b class='flag-5'>萬能</b>板 結(jié)構(gòu)拓展節(jié)點(diǎn)

    Bootloader固件升級(jí)的步驟

    文件則下載到 ROM 或 Flash 中BootLoader 后面的地址中。也就是說,存在 ROM/Flash 中的內(nèi)容是分為兩部分的。 4、要實(shí)現(xiàn)在同一個(gè) ROM/Flash 中保存兩段程序
    發(fā)表于 11-19 07:41

    軟件的力量:玩轉(zhuǎn)電子萬能試驗(yàn)機(jī)控制系統(tǒng)的高級(jí)技巧

    電子萬能試驗(yàn)機(jī)的效能發(fā)揮,不僅依賴硬件設(shè)備的性能,更離不開控制系統(tǒng)軟件的靈活運(yùn)用。很多操作人員僅將軟件視為“參數(shù)輸入工具”,卻忽略了其隱藏的強(qiáng)大功能。實(shí)際上,熟練掌握軟件的高級(jí)技巧,能讓測(cè)試流程更高
    的頭像 發(fā)表于 10-24 09:31 ?239次閱讀
    軟件的力量:玩轉(zhuǎn)電子<b class='flag-5'>萬能</b>試驗(yàn)機(jī)控制系統(tǒng)的高級(jí)技巧

    HarmonyOSAI編程萬能卡片生成(二)

    工程保存完成后,工程中會(huì)新增如下卡片相關(guān)文件: 自定義配置邏輯代碼 邏輯代碼包含實(shí)現(xiàn)卡片數(shù)據(jù)交互和卡片事件兩類。 卡片數(shù)據(jù)交互:觸發(fā)卡片頁面刷新。應(yīng)用工程生成的卡片數(shù)據(jù)交互,可通過數(shù)據(jù)庫(kù)或網(wǎng)絡(luò)請(qǐng)求
    發(fā)表于 09-09 16:10

    HarmonyOSAI編程萬能卡片生成(一)

    基于AI大模型理解開發(fā)者的卡片需求信息,通過對(duì)話式的交互智能生成HarmonyOS萬能卡片工程。 使用約束 建議從以下維度描述卡片需求: 當(dāng)前不支持在生成卡片預(yù)覽圖后繼續(xù)描述需求進(jìn)行增量修改。 萬能
    發(fā)表于 09-08 17:09

    廣州郵科三相逆變電源:從直流220V到交流380V,工業(yè)用電的“萬能轉(zhuǎn)換器”

    在工業(yè)領(lǐng)域,電力問題就像一場(chǎng)“無聲的戰(zhàn)役”——設(shè)備突然停機(jī)、電壓不穩(wěn)導(dǎo)致故障、臨時(shí)用電無處可接……這些問題不僅影響效率,還可能造成損失。而廣州郵科推出的三相逆變電源,正是為解決這些痛點(diǎn)而生。今天,我們就用“大白話”聊聊這款“電力轉(zhuǎn)換神器”,看看它如何成為工業(yè)場(chǎng)景的“萬能轉(zhuǎn)換器”。
    的頭像 發(fā)表于 09-03 16:40 ?1256次閱讀
    廣州郵科三相逆變電源:從直流220V到交流380V,工業(yè)用電的“<b class='flag-5'>萬能</b>轉(zhuǎn)換器”

    鴻蒙生態(tài)迎來外設(shè)兼容革命!國(guó)開鴻PDBox外設(shè)萬能盒在HDC 2025大放異彩

    發(fā)展上的戰(zhàn)略布局。 在大會(huì)的開源鴻蒙互動(dòng)體驗(yàn)展區(qū)及HarmonyOS生態(tài)創(chuàng)新外設(shè)展區(qū),國(guó)開鴻科技帶來了一系列由開源鴻蒙賦的創(chuàng)新產(chǎn)品。其中,可實(shí)現(xiàn)"全場(chǎng)景適配、外設(shè)即插即用"的PDBox外設(shè)萬能盒尤為引人注目,吸引了眾多生態(tài)合作
    的頭像 發(fā)表于 06-23 09:39 ?674次閱讀
    鴻蒙生態(tài)迎來外設(shè)兼容革命!國(guó)開鴻PDBox外設(shè)<b class='flag-5'>萬能</b>盒在HDC 2025大放異彩

    AI學(xué)習(xí)機(jī),比的是什么?

    AI不是萬能匙,登高仍須腳下力。
    的頭像 發(fā)表于 06-12 09:47 ?3081次閱讀
    AI學(xué)習(xí)機(jī),比的是什么?

    突破工業(yè)接口壁壘!ARK(方舟微)DMZ42C10S讓PLC\\\"萬能適配\\\"成為現(xiàn)實(shí)!

    突破工業(yè)接口壁壘!ARK(方舟微)DMZ42C10S讓PLC\"萬能適配\"成為現(xiàn)實(shí)!
    發(fā)表于 03-27 15:20

    萬能七彩充開關(guān)電源電器的制作

    手機(jī)萬能七彩充電器的制作過程JC820型手機(jī)萬能充電器套件制成后,適合充容量為250~3000mA鋰離子、鎳氫電池;充電時(shí),七彩燈閃爍,指示燈的顏色依次變化,發(fā)出絢麗多彩的七彩光芒,飽和后熄滅
    發(fā)表于 03-26 14:17