99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

瑞薩電子MCU無(wú)感OTA升級(jí)功能介紹

瑞薩MCU小百科 ? 來(lái)源:瑞薩嵌入式小百科 ? 2025-05-15 14:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

工業(yè)控制電機(jī)驅(qū)動(dòng)乃至物聯(lián)網(wǎng)邊緣節(jié)點(diǎn)中,固件在線升級(jí)(OTA)已成為產(chǎn)品生命周期管理的標(biāo)配。然而傳統(tǒng)OTA往往伴隨停機(jī)、風(fēng)險(xiǎn)與低效。瑞薩電子MCU中的Dual?Bank閃存架構(gòu)工程師帶來(lái)了幾乎“零感知”的升級(jí)體驗(yàn)。本文以RX26T為例,拆解無(wú)感OTA的實(shí)現(xiàn)思路、代碼框架與實(shí)測(cè)情況,幫助開(kāi)發(fā)者在自家項(xiàng)目中快速落地。

一、MCU傳統(tǒng)Flash架構(gòu)與OTA挑戰(zhàn)

1.1.單Bank Flash架構(gòu)

大部分傳統(tǒng)MCU使用的是單一Bank Flash設(shè)計(jì):

應(yīng)用程序存放在一片連續(xù)的Code Flash區(qū)域內(nèi)

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

這就導(dǎo)致了一個(gè)先天矛盾:

Flash進(jìn)入擦除/寫(xiě)入模式時(shí),不能讀取指令,這會(huì)CPU無(wú)法正常執(zhí)行代碼,更不要說(shuō)響應(yīng)中斷請(qǐng)求

傳統(tǒng)的解決方案:

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

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

1.2.OTA中的具體問(wèn)題

在OTA場(chǎng)景下,這種單Bank架構(gòu)會(huì)帶來(lái)一系列挑戰(zhàn):

問(wèn)題

影響

需要停機(jī)升級(jí)

業(yè)務(wù)中斷(比如停止電機(jī)運(yùn)行),系統(tǒng)不可用或者性能受限(大部分中斷需要間歇關(guān)閉)

升級(jí)過(guò)程遇到意外斷電風(fēng)險(xiǎn)

一旦擦寫(xiě)過(guò)程中斷電,MCU固件受損,有可能會(huì)變磚

缺乏回退機(jī)制

新固件有BUG,

無(wú)法快速恢復(fù)舊版本,

只能重刷

這種架構(gòu)下,即使想做OTA,也必須設(shè)計(jì)復(fù)雜的 Bootloader流程、校驗(yàn)機(jī)制,還要小心翼翼控制電源和升級(jí)時(shí)機(jī),總體開(kāi)發(fā)成本高、可靠性低。

二、瑞薩的無(wú)感OTA解決方案

2.1.為什么需要Dual-Bank?

如果能讓MCU有兩個(gè)獨(dú)立的程序區(qū),一個(gè)邊跑應(yīng)用,一個(gè)邊刷固件,中間互不干擾,升級(jí)自然就可以做到:

不中斷現(xiàn)有業(yè)務(wù)

把新固件寫(xiě)好后,一鍵切換啟動(dòng)區(qū)

即使升級(jí)失敗,也能自動(dòng)回到老固件

這正是Dual-Bank閃存架構(gòu)帶來(lái)的革命性變化。

2.2.Dual-Bank方案簡(jiǎn)介

瑞薩電子在RX系列、RL78系列、RA系列等MCU 中,均提供了支持Dual-Bank架構(gòu)設(shè)計(jì)的型號(hào),可適配工業(yè)、汽車(chē)、物聯(lián)網(wǎng)等多種應(yīng)用場(chǎng)景。

在本篇中,我們以RX26T為例進(jìn)行詳細(xì)說(shuō)明:

RX26T內(nèi) 512 KB Code Flash被物理劃分為 Bank 0/1,各256 KB

Bank 0正常運(yùn)行應(yīng)用,Bank 1在后臺(tái)擦除/寫(xiě)入新固件

升級(jí)完成后,通過(guò)切換Bank方式修改啟動(dòng)設(shè)置,軟復(fù)位切換到新固件

如升級(jí)中斷或失敗,可以靈活切換回退到原有 Bank啟動(dòng),保障設(shè)備持續(xù)運(yùn)行

這一機(jī)制讓MCU升級(jí)過(guò)程真正做到"無(wú)感知",極大提升了系統(tǒng)可維護(hù)性和用戶(hù)體驗(yàn)。

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

三、RX26T無(wú)感OTA實(shí)驗(yàn)環(huán)境搭建

3.1.硬件環(huán)境

MCK-RX26T開(kāi)發(fā)套件

USB轉(zhuǎn)UART工具,用于PC傳輸更新的固件

邏輯分析儀抓取關(guān)鍵測(cè)試波形

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

3.2.軟件環(huán)境

IDE:E2Studio2023-07(23.7.0)

編譯器:CC-RX V3.06

BSP以及相關(guān)外設(shè)驅(qū)動(dòng)包:

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

3.3.Flash驅(qū)動(dòng)配置

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

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

3.4.Flash操作關(guān)鍵代碼說(shuō)明

Dual-Bank架構(gòu)可以支持Flash的操作庫(kù)在后臺(tái)運(yùn)行,可以定義一個(gè)回調(diào)函數(shù)注冊(cè),這樣當(dāng)Flash完成擦除和寫(xiě)入命令時(shí),就直接進(jìn)入后臺(tái)操作,不會(huì)阻塞主循環(huán)和中斷。

擦除時(shí)--->只需發(fā)起一次整體擦除,后臺(tái)等待標(biāo)志位完成

寫(xiě)入時(shí)--->每接收一塊數(shù)據(jù),發(fā)起一次寫(xiě)入,后臺(tái)等待標(biāo)志完成,循環(huán)直至所有數(shù)據(jù)寫(xiě)入完畢

主要代碼示例如下:

A、Flash回調(diào)函數(shù)

左右滑動(dòng)查看完整內(nèi)容

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初始化

左右滑動(dòng)查看完整內(nèi)容

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擦除操作

左右滑動(dòng)查看完整內(nèi)容

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寫(xiě)入操作

左右滑動(dòng)查看完整內(nèi)容

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.無(wú)感OTA流程示意圖

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

四、RX26T無(wú)感OTA實(shí)驗(yàn)測(cè)試結(jié)果

4.1.邏輯分析儀測(cè)試波形

加入測(cè)試代碼

在主循環(huán)100us定時(shí)翻轉(zhuǎn)IO口

中斷10us定時(shí)翻轉(zhuǎn)IO口

在擦除函數(shù)進(jìn)入前后加入翻轉(zhuǎn)IO口

在寫(xiě)入函數(shù)進(jìn)入前后加入翻轉(zhuǎn)IO口

通過(guò)波形可以看到整體對(duì)中斷基本無(wú)影響,主循環(huán)在寫(xiě)操作中間偶爾會(huì)有短時(shí)間的延時(shí),實(shí)測(cè)25us左右,為Flash庫(kù)進(jìn)入BGO操作之前的準(zhǔn)備時(shí)間。

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

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

4.2.電機(jī)驅(qū)動(dòng)實(shí)測(cè)

為了進(jìn)一步驗(yàn)證實(shí)際性能,把電機(jī)驅(qū)動(dòng)也加入到代碼中來(lái),設(shè)計(jì)2個(gè)軟件版本,其中:

版本1.1.1上電后,啟動(dòng)電機(jī),并控制轉(zhuǎn)速到2000RPM,打印信息

版本6.0.0上電后,啟動(dòng)電機(jī),并控制轉(zhuǎn)速到500RPM,打印信息

首先燒錄版本1.1.1,上電后可以看到電機(jī)正常運(yùn)行,打印信息如下:

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

這時(shí)通過(guò)PC端的Tere Term發(fā)送版本6.0.0版本的BIN文件,并進(jìn)入OTA流程,可以觀察到電機(jī)保持運(yùn)行,同時(shí)持續(xù)接收新的固件并寫(xiě)入到Bank1的對(duì)應(yīng)地址,當(dāng)寫(xiě)入完成后,切換bank并進(jìn)行復(fù)位,復(fù)位過(guò)程電機(jī)會(huì)有幾秒鐘的時(shí)間停下來(lái),當(dāng)新的軟件版本啟動(dòng)后,電機(jī)會(huì)重新啟動(dòng)加速并控制轉(zhuǎn)速在500RPM運(yùn)行

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

五、實(shí)驗(yàn)總結(jié)

RX26T的Dualbank+BGO模式為固件升級(jí)提供了一個(gè)完美的解決方案。這種方式的優(yōu)點(diǎn)是:

升級(jí)過(guò)程中不影響當(dāng)前程序運(yùn)行

防止升級(jí)失敗導(dǎo)致系統(tǒng)”變磚”

升級(jí)過(guò)程安全可靠,支持?jǐn)嚯姳Wo(hù)

實(shí)現(xiàn)真正的”無(wú)感”升級(jí)體驗(yàn)

這種升級(jí)方案特別適合對(duì)實(shí)時(shí)性要求較高的工業(yè)控制和電機(jī)驅(qū)動(dòng)應(yīng)用,能夠在不影響正常工作的情況下完成固件更新,是工業(yè)設(shè)備遠(yuǎn)程維護(hù)的理想選擇。

六、注意事項(xiàng)

1.BGO模式使用要點(diǎn):

初始化時(shí)必須正確配置回調(diào)函數(shù)

每次操作前檢查Flash狀態(tài)

合理使用對(duì)齊的緩沖區(qū)

2.狀態(tài)機(jī)設(shè)計(jì)原則:

狀態(tài)轉(zhuǎn)換邏輯要清晰

單個(gè)狀態(tài)處理時(shí)間要短

使用標(biāo)志位跟蹤進(jìn)度

3.調(diào)試建議:

使用GPIO觀察關(guān)鍵時(shí)序

保留關(guān)鍵日志輸出

4.拓展說(shuō)明

切換Bank進(jìn)行軟件復(fù)位的時(shí)間非常短,在1秒以?xún)?nèi)即可運(yùn)行到主函數(shù)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17985

    瀏覽量

    367294
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1679

    瀏覽量

    151895
  • OTA
    OTA
    +關(guān)注

    關(guān)注

    7

    文章

    613

    瀏覽量

    36616
  • 瑞薩電子
    +關(guān)注

    關(guān)注

    37

    文章

    2929

    瀏覽量

    73309
  • 工業(yè)控制
    +關(guān)注

    關(guān)注

    38

    文章

    1548

    瀏覽量

    87067

原文標(biāo)題:瑞薩電子MCU無(wú)感OTA升級(jí)功能介紹

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    電子MCU市場(chǎng)地位誰(shuí)能撼動(dòng)

    雖然電子近年的市場(chǎng)份額持續(xù)下滑,但如果不是恩智浦與微芯的兩起收購(gòu)案,電子
    發(fā)表于 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>市場(chǎng)地位誰(shuí)能撼動(dòng)

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

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

    針對(duì)顯示應(yīng)用的MCU和方案介紹

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

    MCU產(chǎn)品技術(shù)解析

    ,科技將其世界占有率第一的MCU隆重介紹給三地近八百位與會(huì)來(lái)賓。使中國(guó)用戶(hù)充分了解到科技
    發(fā)表于 08-08 19:59

    節(jié)能的“功能模塊”解決方案

    技術(shù)系統(tǒng)開(kāi)發(fā)課題的“答案”期待“功能模塊”長(zhǎng)期以來(lái),對(duì)于IGBT和MOSFET等功率器件以及模擬數(shù)字IC、光電耦合器、驅(qū)動(dòng)器IC等產(chǎn)品推出了低端到高端的各類(lèi)控制用MCU,而
    發(fā)表于 12-06 16:15

    MCU型號(hào)速查手冊(cè)

    `MCU型號(hào)速查手冊(cè)`
    發(fā)表于 10-27 11:11

    【視頻】如何搭建MCU開(kāi)發(fā)環(huán)境CubeSuit+

    本帖最后由 于圭 于 2015-1-8 16:54 編輯 本視頻介紹了如何搭建MCU開(kāi)發(fā)環(huán)境CubeSuite、如何使用CubeSuite對(duì)
    發(fā)表于 01-08 16:09

    解決方案匯總帖

    方案【視頻】電子RL78/G14 MCU直流無(wú)刷電動(dòng)工具解決方案【視頻】
    發(fā)表于 01-30 18:27

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

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

    MCU的相關(guān)資料分享

    電子推出了適用于空間受限、能源敏感的物聯(lián)網(wǎng) (IoT) 端點(diǎn)應(yīng)用的新型微控制器 (MCU),包括可穿戴設(shè)備、醫(yī)療設(shè)備、電器和工業(yè)自動(dòng)化。新的 RA2E2
    發(fā)表于 11-11 08:18

    RISC 32MCU Flash SuperH的相關(guān)資料推薦

    推出SH7216系列32-位片上Flash存儲(chǔ)器MCU作者:時(shí)間:2009-04-21來(lái)源:電子產(chǎn)品世界字號(hào): 小 中 大關(guān)鍵詞:
    發(fā)表于 01-26 06:01

    怎么讀取mcu的checksum?

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

    介紹電子MCU直流無(wú)刷電動(dòng)工具的特點(diǎn)與解決方案

    電子公司上海分公司的覃杰將講述:電子MCU
    的頭像 發(fā)表于 06-15 06:01 ?5059次閱讀
    <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'>無(wú)</b>刷電動(dòng)工具的特點(diǎn)與解決方案

    介紹電子工具E1的特點(diǎn)及應(yīng)用

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

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

    介紹是16bit32bit MCU的領(lǐng)頭羊,每天出貨量超過(guò)900萬(wàn)顆MCU,年MCU出貨
    的頭像 發(fā)表于 04-07 00:55 ?1405次閱讀