一Boot swap介紹
本文主要說(shuō)明如何使用已有的程序更新flash中的固件。使用這種方法代碼閃存分為兩個(gè)區(qū)域:執(zhí)行區(qū)域和臨時(shí)區(qū)域。瑞薩flash驅(qū)動(dòng)程序RL78 RFD Type02用于對(duì)flash進(jìn)行重新編程并執(zhí)行boot swapping。本次說(shuō)明主要以RL78/F24為例展開(kāi)boot swapping的說(shuō)明。
二RL78/F24介紹
RL78/F24新一代超低功耗汽車微控制器,非常適用于實(shí)現(xiàn)未來(lái)高可靠性的智能執(zhí)行器和傳感器,是低端車身ECU的理想之選。作為對(duì)現(xiàn)有RL78/F1x MCU的創(chuàng)新擴(kuò)展,RL78/F24可滿足未來(lái)市場(chǎng)的多種需求。RL78/F24具有更高的CPU性能、耐高溫能力和更強(qiáng)的外設(shè)功能集,非常適合各種應(yīng)用。
RL78/F2x系列產(chǎn)品按ISO 26262標(biāo)準(zhǔn)設(shè)計(jì)而成,支持高達(dá)ASIL B的功能安全(FuSa)??芍С指哌_(dá)EVITA-Light或更高的安全標(biāo)準(zhǔn)。AES加密模塊可處理高達(dá)256位的密鑰長(zhǎng)度,并支持安全啟動(dòng)和身份驗(yàn)證功能。為了進(jìn)一步提高BLDC(FOC)電機(jī)控制和DC/DC控制系統(tǒng)的計(jì)算性能,RL78/F2x配備了獨(dú)特的應(yīng)用加速器IP,以減輕復(fù)雜的三角函數(shù)和其它計(jì)算處理所帶來(lái)的負(fù)荷。
三環(huán)境介紹
硬件
如前面所提到的,本文介紹以RL78/F24為主控,對(duì)應(yīng)板子為RL78/F24(R7F124FPJ)Target Board。
軟件環(huán)境
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
四閃存空間分布和升級(jí)流程
前面介紹過(guò),boot swap的工程有兩個(gè)區(qū)域,分別是執(zhí)行區(qū)域和臨時(shí)區(qū)域。本次實(shí)驗(yàn)所選擇的RL78/F24的flash大小為256K,其對(duì)應(yīng)的起始和結(jié)束地址如下,如果選擇其他大小的MCU,可以根據(jù)這個(gè)進(jìn)行修改。
ROM大小 | 執(zhí)行區(qū)域 | 臨時(shí)區(qū)域 |
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閃存詳細(xì)分布如下:
升級(jí)流程
擦除Boot cluster1和臨時(shí)區(qū)域。
往Boot cluster1和臨時(shí)區(qū)域?qū)懭胄碌墓碳?/p>
擦除執(zhí)行區(qū)域。
把臨時(shí)區(qū)域的內(nèi)容拷貝到執(zhí)行區(qū)域。
執(zhí)行boot swap命令,交換新的boot區(qū)域程序到boot cluster0。
運(yùn)行新的固件代碼。
五實(shí)現(xiàn)步驟
前面講了整個(gè)升級(jí)的流程,接下來(lái)對(duì)具體的實(shí)現(xiàn)步驟進(jìn)行說(shuō)明。首先是創(chuàng)建一個(gè)包含Boot+APP1的原始工程。通過(guò)查看板子原理圖可以知道,板子上有LED1和LED2可以用于升級(jí)成功的指示燈。Boot+APP1運(yùn)行時(shí),LED1閃爍,升級(jí)成功后LED2閃爍,說(shuō)明新的Boot+APP2正在運(yùn)行。需要在Smart configurator中添加引腳的配置,如下P66和P67設(shè)為out:
升級(jí)需要用到UART,添加UART0,并做如下配置:
同時(shí)需要用到RFD type02,添加如下:
所有的外設(shè)驅(qū)動(dòng)添加好后,需要對(duì)section進(jìn)行修改,F(xiàn)lash section:
RAM section:
添加完對(duì)應(yīng)的section后,需要手動(dòng)把對(duì)應(yīng)的Flash section拷貝到RAM。方法如下,重復(fù)紅框部分代碼,一共拷貝5個(gè)section,分別為:RFD_CMN_f,RFD_CF_f,RFD_EX_f,SMP_CMN_f,SMP_CF_f。紅色方框?yàn)榭截怰FD_CMN_f的示例,其他4個(gè)section都需要按照次方法進(jìn)行拷貝。
根據(jù)所選MCU改造r_cg_userdefine.h。
改造APP,在userApplicationLoop里,可以選擇LED1閃爍表示APP1運(yùn)行,LED2表示升級(jí)后APP2運(yùn)行。
整體代碼實(shí)現(xiàn)不再贅述,所有代碼完成后,編譯并燒錄到RL78/F24。使用E2-Lite連接板子燒錄和調(diào)試,串口工具用于傳輸升級(jí)文件:
正常運(yùn)行后,LED1閃爍。
接下來(lái),制作一個(gè)新的APP2,用于升級(jí)。在userApplicationLoop()里面改變代碼,讓LED2閃爍。
用以下步驟生成APP2的.bin文件。在Hex Format->Hex file format中選擇Binary file,空白區(qū)域填充為0xFF。
編譯后會(huì)在相應(yīng)文件夾下生成一個(gè).bin文件。
斷開(kāi)E2-lite,連接串口工具,具體連接為P61 — TXD, P62 — RXD,EVDD — 3.3V,GND — GND。
運(yùn)行BootSwapGUI.exe,選擇256K,選擇對(duì)應(yīng)的COM,打開(kāi)前面生成的bin文件。
點(diǎn)擊START,觀察進(jìn)度條,完成后,MCU會(huì)自動(dòng)完成boot swap的動(dòng)作,最后觀察LED2,LED2開(kāi)始閃爍,說(shuō)明升級(jí)成功。在升級(jí)的過(guò)程中,LED1一直保持閃爍 ,說(shuō)明這種方法在升級(jí)時(shí)不影響上一個(gè)版本的運(yùn)行。
總結(jié)
Boot swap是Renesas一種特殊的MCU固件升級(jí)方式。這種方式的優(yōu)點(diǎn)是,在接收新的固件過(guò)程中,不需要中斷當(dāng)前APP的運(yùn)行,這一點(diǎn)在很多應(yīng)用中是至關(guān)重要的。另外,在一般的重新編程(升級(jí))過(guò)程中,可能出現(xiàn)復(fù)位或者斷電等外部因素,導(dǎo)致中斷向量表、基本函數(shù)等數(shù)據(jù)損壞。任何一項(xiàng)數(shù)據(jù)損壞都可能會(huì)導(dǎo)致MCU無(wú)法正常啟動(dòng)。從boot swap的特點(diǎn)分析得知,boot swap可以很好地避免這種情況。因?yàn)槿魏螘r(shí)候都可以保證MCU有一個(gè)完整的boot cluster1和app1可以運(yùn)行。所以另外一個(gè)重要的優(yōu)點(diǎn)是,boot swap可以防止MCU升級(jí)失敗導(dǎo)致“變磚”。
-
閃存
+關(guān)注
關(guān)注
16文章
1829瀏覽量
115616 -
瑞薩
+關(guān)注
關(guān)注
36文章
22356瀏覽量
87579 -
程序
+關(guān)注
關(guān)注
117文章
3817瀏覽量
82166 -
OTA
+關(guān)注
關(guān)注
7文章
600瀏覽量
36034
原文標(biāo)題:擔(dān)心OTA失敗變磚?Boot swap能幫你
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
RL78/F24 CANFD參考例程

怎么實(shí)現(xiàn)基于瑞薩單片機(jī)RL78/I1A系列MCU設(shè)計(jì)的帶數(shù)字LED照明系統(tǒng)?
瑞薩RL78/F24的12V電機(jī)控制解決方案可減輕CPU矢量運(yùn)算處理負(fù)載
Renesas Solution 入門套件 RL78/F24 用戶手冊(cè)的 12 V 電機(jī)控制評(píng)估系統(tǒng)

Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊(cè)

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

Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊(cè)

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

Renesas Solution 入門套件 RL78/F24 用戶手冊(cè)的 12V 電機(jī)控制評(píng)估系統(tǒng)

評(píng)論