一Boot swap介紹
本文主要說明如何使用已有的程序更新flash中的固件。使用這種方法代碼閃存分為兩個區域:執行區域和臨時區域。瑞薩flash驅動程序RL78 RFD Type02用于對flash進行重新編程并執行boot swapping。本次說明主要以RL78/F24為例展開boot swapping的說明。
二RL78/F24介紹
RL78/F24新一代超低功耗汽車微控制器,非常適用于實現未來高可靠性的智能執行器和傳感器,是低端車身ECU的理想之選。作為對現有RL78/F1x MCU的創新擴展,RL78/F24可滿足未來市場的多種需求。RL78/F24具有更高的CPU性能、耐高溫能力和更強的外設功能集,非常適合各種應用。
RL78/F2x系列產品按ISO 26262標準設計而成,支持高達ASIL B的功能安全(FuSa)??芍С指哌_EVITA-Light或更高的安全標準。AES加密模塊可處理高達256位的密鑰長度,并支持安全啟動和身份驗證功能。為了進一步提高BLDC(FOC)電機控制和DC/DC控制系統的計算性能,RL78/F2x配備了獨特的應用加速器IP,以減輕復雜的三角函數和其它計算處理所帶來的負荷。
三環境介紹
硬件
如前面所提到的,本文介紹以RL78/F24為主控,對應板子為RL78/F24(R7F124FPJ)Target Board。
軟件環境
CS+ for CC V8.12.00
Renesas CC-RL Compiler v1.14.00
Smart configurator for RL78 V1.11.0:
Board Support Packages.-v1.62(r_bsp)
Ports v1.5.0
Flash Driver RL78 Type02(Code flash,Extra Area,Common)v1.00
四閃存空間分布和升級流程
前面介紹過,boot swap的工程有兩個區域,分別是執行區域和臨時區域。本次實驗所選擇的RL78/F24的flash大小為256K,其對應的起始和結束地址如下,如果選擇其他大小的MCU,可以根據這個進行修改。
ROM大小 | 執行區域 | 臨時區域 |
96KB | 0x8000 –0xFFFF | 0x10000 –0x17FFF |
128KB | 0x8000 –0x13FFF | 0x14000 –0x1FFFF |
192KB | 0x8000 –0x1BFFF | 0x1C000 –0x2FFFF |
256KB | 0x8000 –0x23FFF | 0x24000 –0x3FFFF |
384KB | 0x8000 –0x33FFF | 0x34000 –0x5FFFF |
512KB | 0x8000 –0x43FFF | 0x44000 –0x7FFFF |
768KB | 0x8000 –0x63FFF | 0x64000 –0xBFFFF |
256KB閃存詳細分布如下:
升級流程
擦除Boot cluster1和臨時區域。
往Boot cluster1和臨時區域寫入新的固件。
擦除執行區域。
把臨時區域的內容拷貝到執行區域。
執行boot swap命令,交換新的boot區域程序到boot cluster0。
運行新的固件代碼。
五實現步驟
前面講了整個升級的流程,接下來對具體的實現步驟進行說明。首先是創建一個包含Boot+APP1的原始工程。通過查看板子原理圖可以知道,板子上有LED1和LED2可以用于升級成功的指示燈。Boot+APP1運行時,LED1閃爍,升級成功后LED2閃爍,說明新的Boot+APP2正在運行。需要在Smart configurator中添加引腳的配置,如下P66和P67設為out:
升級需要用到UART,添加UART0,并做如下配置:
同時需要用到RFD type02,添加如下:
所有的外設驅動添加好后,需要對section進行修改,Flash section:
RAM section:
添加完對應的section后,需要手動把對應的Flash section拷貝到RAM。方法如下,重復紅框部分代碼,一共拷貝5個section,分別為:RFD_CMN_f,RFD_CF_f,RFD_EX_f,SMP_CMN_f,SMP_CF_f。紅色方框為拷貝RFD_CMN_f的示例,其他4個section都需要按照次方法進行拷貝。
根據所選MCU改造r_cg_userdefine.h。
改造APP,在userApplicationLoop里,可以選擇LED1閃爍表示APP1運行,LED2表示升級后APP2運行。
整體代碼實現不再贅述,所有代碼完成后,編譯并燒錄到RL78/F24。使用E2-Lite連接板子燒錄和調試,串口工具用于傳輸升級文件:
正常運行后,LED1閃爍。
接下來,制作一個新的APP2,用于升級。在userApplicationLoop()里面改變代碼,讓LED2閃爍。
用以下步驟生成APP2的.bin文件。在Hex Format->Hex file format中選擇Binary file,空白區域填充為0xFF。
編譯后會在相應文件夾下生成一個.bin文件。
斷開E2-lite,連接串口工具,具體連接為P61 — TXD, P62 — RXD,EVDD — 3.3V,GND — GND。
運行BootSwapGUI.exe,選擇256K,選擇對應的COM,打開前面生成的bin文件。
點擊START,觀察進度條,完成后,MCU會自動完成boot swap的動作,最后觀察LED2,LED2開始閃爍,說明升級成功。在升級的過程中,LED1一直保持閃爍 ,說明這種方法在升級時不影響上一個版本的運行。
總結
Boot swap是Renesas一種特殊的MCU固件升級方式。這種方式的優點是,在接收新的固件過程中,不需要中斷當前APP的運行,這一點在很多應用中是至關重要的。另外,在一般的重新編程(升級)過程中,可能出現復位或者斷電等外部因素,導致中斷向量表、基本函數等數據損壞。任何一項數據損壞都可能會導致MCU無法正常啟動。從boot swap的特點分析得知,boot swap可以很好地避免這種情況。因為任何時候都可以保證MCU有一個完整的boot cluster1和app1可以運行。所以另外一個重要的優點是,boot swap可以防止MCU升級失敗導致“變磚”。
-
閃存
+關注
關注
16文章
1836瀏覽量
115734 -
瑞薩
+關注
關注
36文章
22370瀏覽量
87735 -
程序
+關注
關注
117文章
3824瀏覽量
82419 -
OTA
+關注
關注
7文章
605瀏覽量
36197
原文標題:擔心OTA失敗變磚?Boot swap能幫你
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
瑞薩RL78/F24的12V電機控制解決方案可減輕CPU矢量運算處理負載
Renesas Solution 入門套件 RL78/F24 用戶手冊的 12 V 電機控制評估系統

Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊

EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊

Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊

EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊

Renesas Solution 入門套件 RL78/F24 用戶手冊的 12V 電機控制評估系統

評論