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

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

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

3天內不再提示

瑞薩電子MCU無感OTA升級功能介紹

瑞薩MCU小百科 ? 來源:瑞薩嵌入式小百科 ? 2025-05-15 14:36 ? 次閱讀

引言

工業控制電機驅動乃至物聯網邊緣節點中,固件在線升級(OTA)已成為產品生命周期管理的標配。然而傳統OTA往往伴隨停機、風險與低效。瑞薩電子MCU中的Dual?Bank閃存架構工程師帶來了幾乎“零感知”的升級體驗。本文以RX26T為例,拆解無感OTA的實現思路、代碼框架與實測情況,幫助開發者在自家項目中快速落地。

一、MCU傳統Flash架構與OTA挑戰

1.1.單Bank Flash架構

大部分傳統MCU使用的是單一Bank Flash設計:

應用程序存放在一片連續的Code Flash區域內

CPU取指(Fetch)和Flash擦寫/編程使用同一個物理通道

這就導致了一個先天矛盾:

Flash進入擦除/寫入模式時,不能讀取指令,這會CPU無法正常執行代碼,更不要說響應中斷請求

傳統的解決方案:

把代碼拷貝到RAM區域執行,包括擦寫Flash的代碼以及需要在Flash處于擦除和編程期間正常執行的其他代碼,如下圖所示:

ecb8ca90-2c8b-11f0-9310-92fbcf53809c.png

1.2.OTA中的具體問題

在OTA場景下,這種單Bank架構會帶來一系列挑戰:

問題

影響

需要停機升級

業務中斷(比如停止電機運行),系統不可用或者性能受限(大部分中斷需要間歇關閉)

升級過程遇到意外斷電風險

一旦擦寫過程中斷電,MCU固件受損,有可能會變磚

缺乏回退機制

新固件有BUG,

無法快速恢復舊版本,

只能重刷

這種架構下,即使想做OTA,也必須設計復雜的 Bootloader流程、校驗機制,還要小心翼翼控制電源和升級時機,總體開發成本高、可靠性低。

二、瑞薩的無感OTA解決方案

2.1.為什么需要Dual-Bank?

如果能讓MCU有兩個獨立的程序區,一個邊跑應用,一個邊刷固件,中間互不干擾,升級自然就可以做到:

不中斷現有業務

把新固件寫好后,一鍵切換啟動區

即使升級失敗,也能自動回到老固件

這正是Dual-Bank閃存架構帶來的革命性變化。

2.2.Dual-Bank方案簡介

瑞薩電子在RX系列、RL78系列、RA系列等MCU 中,均提供了支持Dual-Bank架構設計的型號,可適配工業、汽車、物聯網等多種應用場景。

在本篇中,我們以RX26T為例進行詳細說明:

RX26T內 512 KB Code Flash被物理劃分為 Bank 0/1,各256 KB

Bank 0正常運行應用,Bank 1在后臺擦除/寫入新固件

升級完成后,通過切換Bank方式修改啟動設置,軟復位切換到新固件

如升級中斷或失敗,可以靈活切換回退到原有 Bank啟動,保障設備持續運行

這一機制讓MCU升級過程真正做到"無感知",極大提升了系統可維護性和用戶體驗。

ecc2d620-2c8b-11f0-9310-92fbcf53809c.png

三、RX26T無感OTA實驗環境搭建

3.1.硬件環境

MCK-RX26T開發套件

USBUART工具,用于PC傳輸更新的固件

邏輯分析儀抓取關鍵測試波形

ecd0cfa0-2c8b-11f0-9310-92fbcf53809c.png

3.2.軟件環境

IDE:E2Studio2023-07(23.7.0)

編譯器:CC-RX V3.06

BSP以及相關外設驅動包:

ece2c156-2c8b-11f0-9310-92fbcf53809c.png

3.3.Flash驅動配置

為了正常使用Dual-Bank功能,需要在Flash組件中使用以下配置,使用BGO模式,并且讓自編程庫運行在Code Flash中,無需拷貝到RAM中運行。

ecf07d32-2c8b-11f0-9310-92fbcf53809c.png

3.4.Flash操作關鍵代碼說明

Dual-Bank架構可以支持Flash的操作庫在后臺運行,可以定義一個回調函數注冊,這樣當Flash完成擦除和寫入命令時,就直接進入后臺操作,不會阻塞主循環和中斷。

擦除時--->只需發起一次整體擦除,后臺等待標志位完成

寫入時--->每接收一塊數據,發起一次寫入,后臺等待標志完成,循環直至所有數據寫入完畢

主要代碼示例如下:

A、Flash回調函數

左右滑動查看完整內容

voidu_cb_function(void*event)
{
flash_int_cb_args_t *ready_event =event;
switch(ready_event->event)
{
caseFLASH_INT_EVENT_ERASE_COMPLETE:
    ERASE_COMPLETE_f =1;
caseFLASH_INT_EVENT_WRITE_COMPLETE:
    WRITE_COMPLETE_f =1;
caseFLASH_INT_EVENT_TOGGLE_BANK:
break;
default:
break;
}
}

B、Flash初始化

左右滑動查看完整內容

e_fwup_err_tmy_flash_open_function(void)
{
if(FLASH_SUCCESS !=R_FLASH_Open())
{
return(FWUP_ERR_FLASH);
}
#if(FLASH_BGO_MODE == 1)
flash_interrupt_config_tcb_func_info;
cb_func_info.pcallback = u_cb_function;
cb_func_info.int_priority =1;
if(FLASH_SUCCESS !=R_FLASH_Control(FLASH_CMD_SET_BGO_CALLBACK,(void*)&cb_func_info))
{
return(FWUP_ERR_FLASH);
}
#endif/* (FLASH_BGO_MODE == 1) */
return(FWUP_SUCCESS);
}
}

C、Flash擦除操作

左右滑動查看完整內容

staticvoidfwup_erase_step(void)
{
 if(!g_erase_started)
  {
    ERASE_COMPLETE_f =0;
   R_FLASH_Erase(FLASH_CF_BLOCK_22,22);
    g_erase_started =true;
  }
 else
  {
   if(!g_erase_done)
    {
     if(ERASE_COMPLETE_f ==1)
      {
        ERASE_COMPLETE_f =0;
        g_erase_done =true;
        g_write_addr =BANK_LO_ADDR;
        g_write_offset =0;
        g_total_writes_completed =0;
        g_fwup_state =FWUP_STATE_WRITE;
      }
    }
  }
}

D、Flash寫入操作

左右滑動查看完整內容

staticvoidfwup_write_step(void)
{
 if(g_write_offset >= TOTAL_DATA_SIZE)
  {
    g_fwup_state = FWUP_STATE_DONE;
   return;
  }
 if(!g_write_in_progress && FWUP_UART_RTS)
  {
   uint8_t*buf =malloc(g_write_chunk_size);
   if(!buf)return;
   uint32_tchunk = (s_flash_buf.cnt >= g_write_chunk_size) ? g_write_chunk_size : s_flash_buf.cnt;
   memcpy(buf, s_flash_buf.buf, chunk);
   if(chunk < g_write_chunk_size)?memset(&buf[chunk],?0xFF, g_write_chunk_size - chunk);
? ? ? ? WRITE_COMPLETE_f =?0;
? ? ? ??R_FLASH_Write((uint32_t)buf, g_write_addr, g_write_chunk_size);
? ? ? ??free(buf);
? ? ? ? g_write_in_progress =?true;
? ? }
? ??elseif?(g_write_in_progress && WRITE_COMPLETE_f)
? ? {
? ? ? ? WRITE_COMPLETE_f =?0;
? ? ? ? g_write_in_progress =?false;
? ? ? ? g_total_writes_completed++;
? ? ? ? g_write_addr += g_write_chunk_size;
? ? ? ? g_write_offset += g_write_chunk_size;
? ? ? ??if?(s_flash_buf.cnt > g_write_chunk_size)
    {
      s_flash_buf.cnt -= g_write_chunk_size;
     memmove(s_flash_buf.buf, &s_flash_buf.buf[g_write_chunk_size], s_flash_buf.cnt);
    }
   elses_flash_buf.cnt =0;
    FWUP_UART_RTS =false;
  }
}

3.5.無感OTA流程示意圖

ecfbe23a-2c8b-11f0-9310-92fbcf53809c.png

四、RX26T無感OTA實驗測試結果

4.1.邏輯分析儀測試波形

加入測試代碼

在主循環100us定時翻轉IO口

中斷10us定時翻轉IO口

在擦除函數進入前后加入翻轉IO口

在寫入函數進入前后加入翻轉IO口

通過波形可以看到整體對中斷基本無影響,主循環在寫操作中間偶爾會有短時間的延時,實測25us左右,為Flash庫進入BGO操作之前的準備時間。

ed0c8086-2c8b-11f0-9310-92fbcf53809c.png

ed15731c-2c8b-11f0-9310-92fbcf53809c.png

4.2.電機驅動實測

為了進一步驗證實際性能,把電機驅動也加入到代碼中來,設計2個軟件版本,其中:

版本1.1.1上電后,啟動電機,并控制轉速到2000RPM,打印信息

版本6.0.0上電后,啟動電機,并控制轉速到500RPM,打印信息

首先燒錄版本1.1.1,上電后可以看到電機正常運行,打印信息如下:

ed2774a4-2c8b-11f0-9310-92fbcf53809c.png

這時通過PC端的Tere Term發送版本6.0.0版本的BIN文件,并進入OTA流程,可以觀察到電機保持運行,同時持續接收新的固件并寫入到Bank1的對應地址,當寫入完成后,切換bank并進行復位,復位過程電機會有幾秒鐘的時間停下來,當新的軟件版本啟動后,電機會重新啟動加速并控制轉速在500RPM運行

ed5a5540-2c8b-11f0-9310-92fbcf53809c.png

五、實驗總結

RX26T的Dualbank+BGO模式為固件升級提供了一個完美的解決方案。這種方式的優點是:

升級過程中不影響當前程序運行

防止升級失敗導致系統”變磚”

升級過程安全可靠,支持斷電保護

實現真正的”無感”升級體驗

這種升級方案特別適合對實時性要求較高的工業控制和電機驅動應用,能夠在不影響正常工作的情況下完成固件更新,是工業設備遠程維護的理想選擇。

六、注意事項

1.BGO模式使用要點:

初始化時必須正確配置回調函數

每次操作前檢查Flash狀態

合理使用對齊的緩沖區

2.狀態機設計原則:

狀態轉換邏輯要清晰

單個狀態處理時間要短

使用標志位跟蹤進度

3.調試建議:

使用GPIO觀察關鍵時序

保留關鍵日志輸出

4.拓展說明

切換Bank進行軟件復位的時間非常短,在1秒以內即可運行到主函數

如果有極限的要求,即核心業務在OTA過程中要求不受任何影響,也有解決方案,就是在切換Bank之前,把核心業務處理函數以及相關的中斷都拷貝到RAM中運行,這樣就可以不受軟件復位的影響,無縫切換到新的固件版本

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

    關注

    146

    文章

    17790

    瀏覽量

    359376
  • FlaSh
    +關注

    關注

    10

    文章

    1659

    瀏覽量

    150875
  • OTA
    OTA
    +關注

    關注

    7

    文章

    601

    瀏覽量

    36111
  • 瑞薩電子
    +關注

    關注

    37

    文章

    2909

    瀏覽量

    73083
  • 工業控制
    +關注

    關注

    38

    文章

    1520

    瀏覽量

    86652

原文標題:瑞薩電子MCU無感OTA升級功能介紹

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    電子MCU市場地位誰能撼動

    雖然電子近年的市場份額持續下滑,但如果不是恩智浦與微芯的兩起收購案,電子
    發表于 02-23 13:52 ?1.1w次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>電子</b>在<b class='flag-5'>MCU</b>市場地位誰能撼動

    年出貨量35億顆MCU電子全面擁抱AI

    3月18日,電子在深圳開啟了“2023電子MCU
    的頭像 發表于 04-10 10:51 ?3681次閱讀
    年出貨量35億顆<b class='flag-5'>MCU</b>的<b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>電子</b>全面擁抱AI

    針對顯示應用的MCU和方案介紹

    針對人機交互的應用(TFT顯示)推出了多款MCU產品和參考方案。從簡單的串口屏方案到RGB和MIPI接口的TFT顯示方案,基于不同的
    發表于 07-02 18:23 ?1014次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b>針對顯示應用的<b class='flag-5'>MCU</b>和方案<b class='flag-5'>介紹</b>

    MCU產品技術解析

    科技將其世界占有率第一的MCU隆重介紹給三地近八百位與會來賓。使中國用戶充分了解到科技
    發表于 08-08 19:59

    節能的“功能模塊”解決方案

    技術系統開發課題的“答案”期待“功能模塊”長期以來,對于IGBT和MOSFET等功率器件以及模擬數字IC、光電耦合器、驅動器IC等產品推出了低端到高端的各類控制用MCU,而
    發表于 12-06 16:15

    MCU型號速查手冊

    `MCU型號速查手冊`
    發表于 10-27 11:11

    【視頻】如何搭建MCU開發環境CubeSuit+

    本帖最后由 于圭 于 2015-1-8 16:54 編輯 本視頻介紹了如何搭建MCU開發環境CubeSuite、如何使用CubeSuite對
    發表于 01-08 16:09

    解決方案匯總帖

    方案【視頻】電子RL78/G14 MCU直流刷電動工具解決方案【視頻】
    發表于 01-30 18:27

    基于電子8位MCU的變頻抽油煙機解決方案介紹

    、降低噪音、解放人力并最大限度地節能,電子(本文涉及產品主要為電子原NEC部分)推出了一
    發表于 07-19 07:40

    MCU的相關資料分享

    電子推出了適用于空間受限、能源敏感的物聯網 (IoT) 端點應用的新型微控制器 (MCU),包括可穿戴設備、醫療設備、電器和工業自動化。新的 RA2E2
    發表于 11-11 08:18

    RISC 32MCU Flash SuperH的相關資料推薦

    推出SH7216系列32-位片上Flash存儲器MCU作者:時間:2009-04-21來源:電子產品世界字號: 小 中 大關鍵詞:
    發表于 01-26 06:01

    怎么讀取mcu的checksum?

    怎么讀取mcu的checksum?
    發表于 02-10 07:03

    介紹電子MCU直流刷電動工具的特點與解決方案

    電子公司上海分公司的覃杰將講述:電子MCU
    的頭像 發表于 06-15 06:01 ?4949次閱讀
    <b class='flag-5'>介紹</b><b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>電子</b><b class='flag-5'>MCU</b>直流<b class='flag-5'>無</b>刷電動工具的特點與解決方案

    介紹電子工具E1的特點及應用

    此講是由電子公司MCU產品中心鐘雪日為大家講述:電子
    的頭像 發表于 06-15 07:11 ?7355次閱讀
    <b class='flag-5'>介紹</b><b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>電子</b>工具E1的特點及應用

    媒體聚焦 | 扎根中國,電子MCU多路出擊

    介紹是16bit32bit MCU的領頭羊,每天出貨量超過900萬顆MCU,年MCU出貨
    的頭像 發表于 04-07 00:55 ?1265次閱讀
    主站蜘蛛池模板: 精品一区二区三区在线视频 | 欧美天堂在线视频 | 一级毛片一级毛片一级级毛片 | 黄色毛片播放 | 亚洲专区一路线二 | 日本在线视频www色 日本在线视频精品 | 欧美最猛黑人xxxx黑人猛交黄 | 嫩草影院播放地址一二三 | 高清不卡一区二区三区 | 天堂在线最新版在线www | 新午夜影院 | 黄在线视频 | 免费爱爱小视频 | 成人a毛片手机免费播放 | tom影院亚洲国产日本一区 | 在线资源天堂 | www.天堂.com| 色婷婷色99国产综合精品 | 国语自产拍在线观看7m | 极品美女啪啪 | 日本三级日本三级人妇三级四 | 在线永久免费播放视频 | h国产在线观看 | 午夜肉伦伦影院 | 天堂a免费视频在线观看 | 32pao强力打造免费高速高清 | 91久久青草精品38国产 | 色综合五月婷婷 | 色135综合网| 手机在线一区二区三区 | 亚洲最色网站 | 妖精视频永久在线入口 | 2017天天操| 日本黄色录像视频 | 特黄特色的大片观看免费视频 | 俺也来国产精品欧美在线观看 | 精品成人在线 | 简单视频在线播放jdav | 色婷婷亚洲十月十月色天 | 国产一区二区三区毛片 | 视频综合网 |