chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于RT-Thread完整版搭建的極簡(jiǎn)Bootloader

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

掃碼添加小助手

加入工程師交流群

項(xiàng)目背景

Agile Upgrade: 用于快速構(gòu)建 bootloader 的中間件。

  • example文件夾提供 PC 上的示例

特性

  1. 適配RT-Thread官方固件打包工具 (圖形化工具及命令行工具)

  2. 使用純 C 開(kāi)發(fā),不涉及任何硬件接口,可在任何形式的硬件上直接使用

  3. 加密、壓縮支持如下:

  • AES256

  • fastlz

  • quicklz

  • 原生適配filefal操作接口

  • 移植簡(jiǎn)單,實(shí)現(xiàn)自定義的后端只需適配幾個(gè)操作接口

  • 使用簡(jiǎn)單,幾行代碼即可實(shí)現(xiàn)固件升級(jí)

  • 全過(guò)程日志輸出

  • 提供過(guò)程回調(diào),可將過(guò)程及進(jìn)度顯示在自定義硬件上

  • 基于RT-Thread 4.1.0版本

  • 基于正點(diǎn)原子探索者開(kāi)發(fā)板

ba4b9a28-bf56-11ed-bfe3-dac502259ad0.png

代碼地址:

https://github.com/loogg/agile_upgrade_mcu_demos

https://github.com/loogg/agile_upgrade

(請(qǐng)復(fù)制至外部瀏覽器打開(kāi))

  • 目錄結(jié)構(gòu)

ba751fc4-bf56-11ed-bfe3-dac502259ad0.png

2、Bootloader

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

ba88e0b8-bf56-11ed-bfe3-dac502259ad0.png

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

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

這里提供一種萬(wàn)能方法:

- 利用芯片中的不受軟件復(fù)位影響的可供用戶使用的寄存器 (如 STM32 中的備份寄存器)。
- 在需要跳入 APP 運(yùn)行時(shí)將該寄存器賦值然后軟件復(fù)位。
- 在 OS 還沒(méi)初始化時(shí)判斷該寄存器值,如果需要跳轉(zhuǎn)只需要簡(jiǎn)單的準(zhǔn)備環(huán)境即可跳轉(zhuǎn)。

ba9a9d12-bf56-11ed-bfe3-dac502259ad0.png

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

該倉(cāng)庫(kù)下所有的Bootloader例子均使用此方法。

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

1voidboot_start_application(void);
2voidSystemInit(void)
3{
4boot_start_application();
5
6...
7}

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

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

設(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}

3、RT-Thread 完整版、RT-Thread Nano 及裸機(jī)對(duì)比

3.1、RTOS 與裸機(jī)

很多人都會(huì)覺(jué)得裸機(jī)開(kāi)發(fā)比 RTOS 簡(jiǎn)單并且編譯出來(lái)的空間小的多,但以我的開(kāi)發(fā)經(jīng)驗(yàn)來(lái)說(shuō)并非如此。

  1. 開(kāi)發(fā)難易程度

  • 裸機(jī)

    裸機(jī)開(kāi)發(fā)經(jīng)常使用的是前后臺(tái)框架,一個(gè)有多步執(zhí)行操作的task基本上都是使用switch case方式。

    一級(jí)延時(shí)很好處理只需要改變task的再一次進(jìn)入時(shí)間即可。

    嵌套延時(shí)則需要加狀態(tài)位并在函數(shù)中嵌套switch case,程序非常臃腫。

  • RTOS

    RTOS 中多步操作只需按順序調(diào)用函數(shù)即可,掛起也只需調(diào)用系統(tǒng)提供的 API ,代碼精簡(jiǎn)且邏輯清晰。

  • 資源占用

    RT-Thread Nano舉例,官方給出的數(shù)據(jù)如下:

1在運(yùn)行兩個(gè)線程(main 線程+ idle 線程)情況下,ROM 和 RAM 依然保持著極小的尺寸。
2以下是基于CortexM3的MDK工程編譯結(jié)果(優(yōu)化等級(jí)3)
3
4TotalROSize(Code+ROData)4000(3.91kB)
5TotalRWSize(RWData+ZIData)1168(1.14kB)
6TotalROMSize(Code+ROData+RWData)4092(4.00kB)
7

從數(shù)據(jù)中可以得知資源占用并沒(méi)有相差非常大。

3.2、RT-Thread 完整版與 RT-Thread Nano

許多人對(duì)于這兩個(gè)的爭(zhēng)議在于:RT-Thread 完整版資源占用太大,小芯片用不了等等。

這里我就用事實(shí)來(lái)證明并非如此,完全可以裁剪到Nano一樣的大小,并且RT-Thread 完整版還支持menuconfig不需要自己添加代碼文件,真香。

同時(shí)RT-Thread還有許多純 C 語(yǔ)言的不涉及硬件的軟件包,使用menuconfig拿來(lái)即用,真香。

這里我以正點(diǎn)原子探索者開(kāi)發(fā)板bsp為例,基于RT-Thread v4.1.0版本,具體工程查看 RTT_Template。

  • CubeMX生成的 MDK 工程編譯結(jié)果 (優(yōu)化等級(jí) 0)

1TotalROSize(Code+ROData)8120(7.93kB)
2TotalRWSize(RWData+ZIData)1832(1.79kB)
3TotalROMSize(Code+ROData+RWData)8136(7.95kB)
4
  • 在運(yùn)行兩個(gè)線程 (main 線程 + idle 線程) 情況下的 MDK 工程編譯結(jié)果 (優(yōu)化等級(jí) 0), 適配了rt_hw_console_output

1TotalROSize(Code+ROData)13256(12.95kB)
2TotalRWSize(RWData+ZIData)3136(3.06kB)
3TotalROMSize(Code+ROData+RWData)13396(13.08kB)
4

		

		
  • 兩者比較差值

1TotalROSize(Code+ROData)5136(5.02kB)
2TotalRWSize(RWData+ZIData)1304(1.28kB)
3TotalROMSize(Code+ROData+RWData)5260(5.14kB)
4

			
從上述數(shù)據(jù)可以得出結(jié)論:RT-Thread 完整版通過(guò)裁剪可以完全媲美RT-Thread Nano,所以首選RT-Thread 完整版

			

4、Bootloader 工程使用

tools文件夾下包含了固件打包工具和應(yīng)用層固件app.bin,起始地址為0x08080000

應(yīng)用層分區(qū)如下:

bab263ca-bf56-11ed-bfe3-dac502259ad0.png

在應(yīng)用程序中下載固件需要使用ymodem_ota -p [dst]命令,[dst]為目標(biāo)分區(qū)download_w25qdownload_onchip。

以下工程編譯結(jié)果都是基于優(yōu)化等級(jí) 0。

4.1、MinimalistBoot 使用

該工程下提供 3 個(gè)配置文件,通過(guò)ENV工具的menuconfigLoad配置并save.config后執(zhí)行scons --target=mdk5 -s即可生成工程。

該工程未使用動(dòng)態(tài)內(nèi)存分配,故編譯結(jié)果即為真實(shí)內(nèi)存使用。

配置文件分別為:.config.minimal.config.w25q_qlz.config.shell_qlz

  • .config.minimal

極簡(jiǎn)Bootloader,不支持壓縮和加密類型固件,下載分區(qū)為download_onchip。

babf99b4-bf56-11ed-bfe3-dac502259ad0.png

  • .config.w25q_qlz

支持quicklz方式壓縮的固件,下載分區(qū)為download_w25q。

badc4672-bf56-11ed-bfe3-dac502259ad0.png

  • .config.shell_qlz

支持quicklz方式壓縮的固件,升級(jí)失敗可通過(guò)敲擊鍵盤Enter鍵進(jìn)入Shell,下載分區(qū)為download_onchip。

bae3f480-bf56-11ed-bfe3-dac502259ad0.png

4.2、FalBoot 使用

該工程基于FAL組件,提供 4 個(gè)配置文件,通過(guò)ENV工具的menuconfigLoad配置并save.config后執(zhí)行scons --target=mdk5 -s即可生成工程。

配置文件分別為:.config.minimal、.config.dev_qlz、.config.w25q_dev_qlz.config.shell_dev_qlz

  • .config.minimal

不支持壓縮和加密類型固件,下載分區(qū)為download_onchip。

baf60986-bf56-11ed-bfe3-dac502259ad0.png

  • .config.dev_qlz

使用了設(shè)備框架,支持quicklz方式壓縮的固件,下載分區(qū)為download_onchip。

bb078ae4-bf56-11ed-bfe3-dac502259ad0.png

  • .config.w25q_dev_qlz

使用了設(shè)備框架,支持quicklz方式壓縮的固件,下載分區(qū)為download_w25q。

bb138196-bf56-11ed-bfe3-dac502259ad0.png

  • .config.shell_dev_qlz

使用了設(shè)備框架,支持quicklz方式壓縮的固件,升級(jí)失敗可通過(guò)敲擊鍵盤Enter鍵進(jìn)入Shell,下載分區(qū)為download_onchip。

bb2902c8-bf56-11ed-bfe3-dac502259ad0.png

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

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

點(diǎn)擊閱讀原文報(bào)名

愛(ài)我就請(qǐng)給我在看


		


原文標(biāo)題:基于RT-Thread完整版搭建的極簡(jiǎn)Bootloader

文章出處:【微信公眾號(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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1498

    瀏覽量

    43659

原文標(biāo)題:基于RT-Thread完整版搭建的極簡(jiǎn)Bootloader

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    請(qǐng)問(wèn)rt-thread studio可以開(kāi)發(fā)完整的mcu程序嗎?

    請(qǐng)教一下:rt-thread studio IDE開(kāi)發(fā)環(huán)境,能完整開(kāi)發(fā)的rt-thread 的mcu程序嗎? 好多教程的步驟: 1。在rt-thread 的開(kāi)源的工程中制作BSP包,
    發(fā)表于 10-09 09:21

    2025年RT-Thread開(kāi)發(fā)者巡回培訓(xùn)報(bào)名正式啟動(dòng)!

    親愛(ài)的RT-Thread社區(qū)成員們:新程再啟,共赴熱愛(ài)!2025年RT-Thread開(kāi)發(fā)者巡回培訓(xùn)正式啟動(dòng)報(bào)名!今年,我們選擇了西安、武漢、北京、杭州、深圳、上海、成都這7座城市,為大家?guī)?lái)
    的頭像 發(fā)表于 09-27 10:39 ?635次閱讀
    2025年<b class='flag-5'>RT-Thread</b>開(kāi)發(fā)者巡回培訓(xùn)報(bào)名正式啟動(dòng)!

    rt-thread studio 2.2.9如何使用最新的RT-Thread v5.2.0 released?

    rt-thread studio2.2.9如何使用最新的RT-Thread v5.2.0 released? 原先以為修改index_all.json,發(fā)現(xiàn)聯(lián)網(wǎng)的時(shí)候,會(huì)自動(dòng)覆蓋 另lastet版本
    發(fā)表于 09-16 06:06

    【好書推薦】RT-Thread第20本相關(guān)書籍!《嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread原理與應(yīng)用》| 技術(shù)集結(jié)

    知識(shí)與實(shí)際應(yīng)用。本書內(nèi)容豐富、循序漸進(jìn),涵蓋從RT-Thread的基礎(chǔ)理論到高級(jí)應(yīng)用的完整知識(shí)體系,并通過(guò)大量實(shí)踐案例進(jìn)行講解。全書共15章,內(nèi)容包括RT-Thre
    的頭像 發(fā)表于 08-24 10:05 ?517次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>第20本相關(guān)書籍!《嵌入式實(shí)時(shí)操作系統(tǒng)<b class='flag-5'>RT-Thread</b>原理與應(yīng)用》| 技術(shù)集結(jié)

    RT-Thread 遇上 Rust:安全內(nèi)核 RusT-Thread 的誕生

    大家好,我們是中國(guó)科學(xué)技術(shù)大學(xué)操作系統(tǒng)原理與設(shè)計(jì)(H)課oooooS小組。這個(gè)項(xiàng)目是我們的課程大作業(yè):參考RT-Thread架構(gòu),使用Rust搭建一個(gè)原生的嵌入式操作系統(tǒng)內(nèi)核。初識(shí)Rust是因?yàn)閤k
    的頭像 發(fā)表于 08-02 11:03 ?2896次閱讀
    <b class='flag-5'>RT-Thread</b> 遇上 Rust:安全內(nèi)核 RusT-<b class='flag-5'>Thread</b> 的誕生

    RT-Thread榮獲2025優(yōu)秀開(kāi)源項(xiàng)目 | 新聞速遞

    6月底,RT-Thread睿賽德受邀參與由上海開(kāi)源信息技術(shù)協(xié)會(huì)主辦的2025上海開(kāi)源創(chuàng)新精英薈。上海市商委副主任張杰出席會(huì)議并致辭。RT-Thread嵌入式操作系統(tǒng)項(xiàng)目憑借其卓越的技術(shù)創(chuàng)新與開(kāi)源生態(tài)
    的頭像 發(fā)表于 07-04 09:04 ?2227次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲2025優(yōu)秀開(kāi)源項(xiàng)目 | 新聞速遞

    揭秘RT-Thread上的AUTOSAR CP系統(tǒng)

    本文探討了RT-Thread與AUTOSARCP的融合,解決車載ECU開(kāi)發(fā)中實(shí)時(shí)性、安全性與靈活性的平衡問(wèn)題。通過(guò)分層安全內(nèi)核(rt-safetyos/autoos)和工具鏈整合,兼容AUTOSAR
    的頭像 發(fā)表于 06-23 20:22 ?2722次閱讀
    揭秘<b class='flag-5'>RT-Thread</b>上的AUTOSAR CP系統(tǒng)

    2025 RT-Thread全球技術(shù)大會(huì)議程正式發(fā)布!

    RT-ThreadGlobalTechConference(RT-ThreadGTC,RT-Thread全球技術(shù)大會(huì))是聚焦基礎(chǔ)軟件技術(shù)創(chuàng)新與實(shí)踐的嵌入式技術(shù)盛會(huì),持續(xù)推動(dòng)技術(shù)價(jià)值轉(zhuǎn)化
    的頭像 發(fā)表于 05-27 19:28 ?910次閱讀
    2025 <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì)議程正式發(fā)布!

    RT-Thread審核團(tuán)招募: 深度參與開(kāi)源RTOS社區(qū)治理與演進(jìn)

    全球開(kāi)發(fā)者招募:RT-Thread審核團(tuán)(ReviewTeam)正式開(kāi)放申請(qǐng)!在開(kāi)源的世界里,代碼審查(CodeReview)是保證軟件質(zhì)量、促進(jìn)技術(shù)交流的關(guān)鍵環(huán)節(jié)。RT-Thread作為全球領(lǐng)先
    的頭像 發(fā)表于 05-21 18:02 ?931次閱讀
    <b class='flag-5'>RT-Thread</b>審核團(tuán)招募: 深度參與開(kāi)源RTOS社區(qū)治理與演進(jìn)

    電源電路實(shí)用設(shè)計(jì)手冊(cè)—電子檔完整版

    全文完整版電子檔點(diǎn)擊下方附件下載獲取!
    發(fā)表于 03-14 10:11

    如何將RT-Thread移植到NXP MCUXPressoIDE上

    RT-Thread默認(rèn)支持的IDE只有IAR 和 Keil, 那如何將RT-Thread移植到NXP MCUXPressoIDE上呢?本文內(nèi)容比較簡(jiǎn)單但稍有瑣碎,希望對(duì)有需要的小伙伴有所幫助。
    的頭像 發(fā)表于 02-13 10:37 ?2238次閱讀
    如何將<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE上

    從開(kāi)源中來(lái)到開(kāi)源中去-RT-Thread北京社區(qū)篇

    RT-Thread今年全域推行不同區(qū)域社區(qū)網(wǎng),通過(guò)建立區(qū)域社區(qū)網(wǎng),構(gòu)建更加緊密聯(lián)系的開(kāi)源社區(qū),實(shí)現(xiàn)更廣泛的開(kāi)源資源共享,讓更多的RT-Thread開(kāi)發(fā)者受益。今年8月份RT-Thread正式啟動(dòng)北京
    的頭像 發(fā)表于 11-29 01:05 ?681次閱讀
    從開(kāi)源中來(lái)到開(kāi)源中去-<b class='flag-5'>RT-Thread</b>北京社區(qū)篇

    RT-Thread上CAN實(shí)踐

    開(kāi)箱測(cè)試RT-Thread官方已完成了對(duì)英飛凌XMC7200EVK的移植,通過(guò)shell可以看到做好了uart3的console。本文將介紹如何進(jìn)行RT-ThreadCan移植。接下來(lái)我們要完成CAN_FD的驅(qū)動(dòng)移植,并正常啟動(dòng)RT-T
    的頭像 發(fā)表于 11-13 01:03 ?2616次閱讀
    <b class='flag-5'>RT-Thread</b>上CAN實(shí)踐

    WIFI智能音箱原理圖完整版

    WIFI智能音箱原理圖完整版
    發(fā)表于 11-01 10:20 ?9次下載

    開(kāi)源共生 商業(yè)共贏 | RT-Thread 2024開(kāi)發(fā)者大會(huì)報(bào)名啟動(dòng)!

    親愛(ài)的RT-Thread開(kāi)發(fā)者我們很高興地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread開(kāi)發(fā)者大會(huì))正式啟動(dòng)報(bào)名!2024RT-Threa
    的頭像 發(fā)表于 10-29 08:06 ?1160次閱讀
    開(kāi)源共生 商業(yè)共贏 | <b class='flag-5'>RT-Thread</b> 2024開(kāi)發(fā)者大會(huì)報(bào)名啟動(dòng)!