一、使用场景
客户在使用N2L做多协议产品时,在不同的产品上,需要同时将几种协议的程序烧录进flash中,然后通过不同的拨码或功能码配置来选择加载不同协议,此种情况下,就需要使用bootloader做程序的引导选择功能。此时则需要将产品代码分成2个工程,即一个Bootloader工程,一个Application工程,Bootloader工程里做不同协议的选择,加载功能,根据需求加载不同协议运行。
由于RZ工程正常启动时,代码分成LDR部分和user部分,所以Bootloader可以分别对Application以上2部分进行加载,在Bootloader工程里里复制application的LDR部分到BTCM里运行,由于LDR程序里有根据user代码、数据的起始地址和长度定义,从flash区拷贝到RAM区运行的代码,所以只要LDR程序运行起来,代码则可以自动完成user程序的加载运行。
二、加了bootloader后的启动流程

步骤解析:
1
芯片内部boot根据loader Parameters加载bootloader的LDR代码到BTCM的0x102000地址区。
2
bootloader的LDR程序运行后,会根据icf文件的配置从flash区加载bootloader的user代码(包括data段、prg段、rodata段等)到ATCM运行。
3
Bootloader的user里需要添加代码来搬移application的LDR到BTCM运行。
4
Application的LDR运行后,会根据application的icf文件配置加载application的user代码,并运行整个程序。
注
1. Bootloader程序和application是2个独立的工程
2. loader Parameters只配置bootloader工程的就可以,application是通过bootloader加载的,所以不需要更改此参数
3.bootloader和application的LDR部分复用BTCM的0x102000地址空间
4.由于本来是一次启动加载的过程,现在是启了2次,在startup文件开头的特权模式下的操作不能重复进行,否则会报错,所以在application工程中要屏蔽掉此部分代码
三、bootloader工程修改过程


1
确定要加载的几个不同程序的FLASH地址
2
使用FSP工具配置一个工程
3
增加copy application的代码和跳转代码
四、App修改点






1
icf在原有独立工程基础上按设置的FLASH地址做偏移,所有flash的配置都要加对应的偏移,图示以EIP为例



2
Startup.c里system_init中屏蔽掉对特权模式的操作
3
调试时要注意bootloader和application里几个MPU_REGION的设置保持一致
审核编辑:黄飞
-
FlaSh
+关注
关注
10文章
1715浏览量
154664 -
bootloader
+关注
关注
2文章
241浏览量
47661 -
LDR
+关注
关注
0文章
100浏览量
8140
发布评论请先 登录
GCC开发工程的模版
瑞萨RZ/T2H PCIe通信的调试方法
Rz代表什么?如何精准测量Rz?
STM32CubeIDE报错编译STM32MP135(Projects\\STM32MP135C-DK\\External_Loader)的原因?
瑞萨MCU方案:瑞萨RZ/G2L Bootloader单独编译方法详解
迅为RK3568开发板基本工程目录-OpenHarmony APP工程结构
《仿盒马》app开发技术分享-- 订单地址修改(31)
实现IAP功能,使用cubeide生成APP程序的bin文件写入Flash之后,无法跳转到APP程序中,为什么?
使用cubeide生成APP程序的bin文件写入Flash之后,无法跳转到APP程序中,怎么解决?
新品发布丨瑞萨电子推出RZ/A3M,面向经济型高性能HMI解决方案扩展RZ/A MPU产品线
具有3D图形和视频编解码器的通用 MPU RZ/G2L 数据手册
stm32cubeide-boot loader跳转APP后不能执行怎么解决?
如何快速创建用户自定义Board和App工程
瑞萨电子RZ MPU家族精品RZ/N2L产品介绍

RZ Loader APP工程修改方法
评论