0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现简单的bootloader功能

我快闭嘴 来源:瑞萨MCU小百科 作者:瑞萨MCU小百科 2022-09-06 13:13 次阅读

介绍

考虑到瑞萨MCUBoot的ROM占用和某些客户的需求,本篇主要讲述在不使用瑞萨MCUboot驱动下,如何实现简单的bootloader功能。

主要内容

在写代码之前,首先必须规划Boot和App的存放位置,如下图。我使用的是R7FA2L1AB2DFM,有256K的ROM。我把Boot从0x00开始存储,预计存储7K左右;App从0x4000开始存储。为了在仿真时区分Boot和App,这里选择了点亮LED的方式来区分,当只亮一个LED时表示当前是Boot在运行,当两个LED交替闪烁时代表App在运行。

d27088ec-2d99-11ed-ba43-dac502259ad0.png

BOOT工程:

1创建一个boot工程,添加UART和Flash驱动,Flash驱动只选Code Flash Programming,选择只亮一个LED灯来区别BOOT和APP。

d285edf4-2d99-11ed-ba43-dac502259ad0.png

d2ab7a56-2d99-11ed-ba43-dac502259ad0.png

2编写代码,实现串口接收串口助手发来的APP.bin

d2ca8d42-2d99-11ed-ba43-dac502259ad0.png

3当串口接收完后,用Flash驱动把接收到的数据写到APP存储的rom地址。这里我选择把APP存在0x4000

d2e13a60-2d99-11ed-ba43-dac502259ad0.png

4调用下图函数,实现APP跳转。注意,跳转前先把所有运行的驱动关闭。

d2f7c884-2d99-11ed-ba43-dac502259ad0.png

d314f468-2d99-11ed-ba43-dac502259ad0.png

5编译,可对比得出,精简版bootloader只是用了7K左右的rom,比使用了MCUboot后的ROM占用少5K。

d3236d9a-2d99-11ed-ba43-dac502259ad0.png

d33bd696-2d99-11ed-ba43-dac502259ad0.png

APP工程:

1实现APP的功能逻辑代码,这里我选择是使用GPT定时器,让开发板的两个LED灯交替闪烁。

d358b3c4-2d99-11ed-ba43-dac502259ad0.png

2通过文本打开fsp.ld文件,添加红框位置的语句,地址与BOOT工程的跳转地址对应。这个步骤的目的是为了让APP工程以0x4000这个地址作为起始地址,它的向量表也会以这个地址作为基准来存储。

d36e3730-2d99-11ed-ba43-dac502259ad0.png

3编译并生成bin文件。

d39d6924-2d99-11ed-ba43-dac502259ad0.png

仿真调试:

仿真BOOT工程,在PC端用串口助手烧录APP.bin,可以看到开发板从一开始只亮一个LED到两个LED交替闪烁。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16011

    浏览量

    343536
  • ROM
    ROM
    +关注

    关注

    4

    文章

    524

    浏览量

    84809
  • bootloader
    +关注

    关注

    2

    文章

    230

    浏览量

    45045

原文标题:RA2L1精简版Bootloader的使用

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32 Bootloader实现

    主要采用256000bps串口传输BIN文件数据,文件每10KB分为一个数据包下发,同时控制LED作为简单的输出;最后做CRC校验,整个升级过程完成,重启即可自动跳入App程序。Bootloader
    发表于 08-26 11:46

    如何去实现基于STM32L0的简单Bootloader

    如何去实现基于STM32L0的简单Bootloader呢?怎么实现呢?
    发表于 10-28 06:07

    如何在STM32F103C8上实现一个简单bootloader

    如何在STM32F103C8上实现一个简单bootloader
    发表于 11-29 07:56

    如何在STM32F103C8上实现一个简单bootloader

    在STM32F103C8上实现一个简单bootloader最近在琢磨单片机在线更新程序的事情,查资料查到在STM32上实现一个bootloader
    发表于 12-03 06:28

    研究下stm32基于BootLoader的IAP功能

    近期想研究下stm32基于BootLoader的IAP功能,要想实现这个,必须先搞明白程序跳转,在真正开搞前折腾了半晚上,完成了程序跳转的简单测试。stm32代码下载到0x800000
    发表于 12-21 06:44

    4510 bootloader实现与分析

    4510 bootloader实现与分析 好东西哦。网上搜集,希望对你有用。
    发表于 03-25 14:55 20次下载

    Stellaris BootLoader分析

    Stellaris BootLoader分析 介绍BootLoader实现原理
    发表于 04-07 16:58 32次下载

    BootLoader_BootLoader是什么

    ARM实现手指静脉识别系统_本文将从 BootLoader的概念、BootLoader 的框架结构与安装等四个方面来讨论。
    发表于 11-30 10:32 3002次阅读

    ARM Bootloader实现C 和 ASM 混合编程

    ARM Bootloader实现C 和 ASM 混合编程
    发表于 10-30 09:28 15次下载
    ARM <b class='flag-5'>Bootloader</b> 的<b class='flag-5'>实现</b>C 和 ASM 混合编程

    【MCU】BootLoader简单介绍

    后执行的第一段代码。BootLoader时基于特定硬件平台来实现的,因此不同的处理器架构有不同的BoottLoa
    发表于 10-27 19:21 48次下载
    【MCU】<b class='flag-5'>BootLoader</b>的<b class='flag-5'>简单</b>介绍

    几种MCU bootLoader实现方案

    几种MCU bootLoader实现方案 mcu bootLoader boot的方式可以是uart、spi、i2c、ethernet等,方式可以是多样性,这里只介绍boot的架构方式,以下是常用的boot分类: 1、bo
    发表于 10-28 10:36 18次下载
    几种MCU <b class='flag-5'>bootLoader</b>的<b class='flag-5'>实现</b>方案

    PIC单片机的BootLoader实现

    PIC单片机的BootLoader实现
    发表于 11-16 11:06 15次下载
    PIC单片机的<b class='flag-5'>BootLoader</b><b class='flag-5'>实现</b>

    在STM32F103C8上实现一个简单bootloader

    在STM32F103C8上实现一个简单bootloader最近在琢磨单片机在线更新程序的事情,查资料查到在STM32上实现一个bootloader
    发表于 11-23 17:51 20次下载
    在STM32F103C8上<b class='flag-5'>实现</b>一个<b class='flag-5'>简单</b>的<b class='flag-5'>bootloader</b>

    STM32H7实现BootLoader内SDRAM的初始化注意事项

    Function Implementation:在 ArtPi 的环境下,实现一个简单BootLoader,该 BootLoader 实现
    的头像 发表于 06-07 15:51 2202次阅读
    STM32H7<b class='flag-5'>实现</b><b class='flag-5'>BootLoader</b>内SDRAM的初始化注意事项

    mm32-2nd-bootloader技术进阶设计:实现Ymodem更新代码

    前文中实现了一款简单的 2nd Bootloader,能够跳转执行存储在 QSPI Flash 中的应用程序,但 2nd Bootloader 如果仅仅只是用于跳转执行程序的话,岂不是
    的头像 发表于 06-09 09:28 857次阅读
    mm32-2nd-<b class='flag-5'>bootloader</b>技术进阶设计:<b class='flag-5'>实现</b>Ymodem更新代码