![]() ![]() ![]() ![]() RL78作為低成本的16位MCU得到了工業(yè)及汽車的大量應(yīng)用的青睞,而隨著系統(tǒng)的升級,越來越多的開發(fā)都需要增加Bootloader的功能,即在線升級。而開發(fā)中常常有工程師困惑,如flash的劃分、中斷如何映射、系統(tǒng)是否可以聯(lián)調(diào)及如何合并輸出燒錄文件等問題,下面詳細(xì)介紹下RL78的Bootloader開發(fā)過程。 首先了解Bootloader的原理,它是通過flash中嵌入代碼(Boot)完成對設(shè)備功能操作代碼(Appliacation)的更新,如下圖1所示,在需要升級的時(shí)候,會在Boot的操作下完成Application1到Application2的更新。 圖1 bootloader操作原理 Boot區(qū)域的開發(fā)常常通過RL78自編程庫完成對Application區(qū)域flash的編程。Application區(qū)域設(shè)計(jì)中需要結(jié)合使用劃分的空間,并做好中斷映射,如下圖2所示,程序會沿著黃色的箭頭運(yùn)行,先從Boot區(qū)域開始,再跳到Application區(qū)域,而Application的最頭上會放置中斷向量表(黃框圈出的flash區(qū)域),這樣代碼在從boot區(qū)域跳到Application后就可以正常操作中斷了。 圖2 flash劃分 下圖3是結(jié)合開發(fā)做的flash劃分,Boot區(qū)域是在0x0000到0x5fff的區(qū)域,Application是從0x6000開始一直到最后,其中0x6000到0x6400作為中斷向量表,真正的Application代碼是從0x6400開始的。 圖3 flash劃分 下圖4是bootloader的原理框圖,后面的代碼設(shè)計(jì)基于此框圖開發(fā)的,程序從boot.c開始,boot.asm是地址劃分的配置,為后面代碼跳轉(zhuǎn)到Application區(qū)域做準(zhǔn)備,通過淺藍(lán)色所示與Application連接,這樣就進(jìn)入到Application。進(jìn)入到Application區(qū)域后,就開始執(zhí)行設(shè)備的功能代碼了。 圖4 原理框圖
|
|