转自 | 瑞萨嵌入式小百科
这些年MPU开始盛行,各大厂商都在布局MPU这条路线,MPU开发也在逐渐成熟。今天结合瑞萨RZ/G2L系列MPU 给大家讲讲Bootloader单独编译方法详解。
在RZ/G2L的开发工作中,用户经常会提出需要单独编译Bootloader的需求。为了满足用户需求,本文将介绍一种RZ/G2L上脱离Yocto的单独编译Bootloader的方法,从而能够快速便捷地生成Bootloader文件。
首先介绍一下RZ/G2L的标准Bootloader启动流程,如下图所示:
在上述流程中,BL1为固化在ROM中的一段启动加载代码,用于引导BL2并对其进行安全验证;BL2主要完成一些平台相关的初始化,如DDR初始化;BL31是持久存在的可信固件,负责系统安全服务和在Secure World及Normal World之间切换;BL32包括一个可信安全的OS(如OP-TEE OS)以及安全应用;BL33为非安全固件,通常为U-Boot。
对于Secure版本的RZ/G2L,Bootloader包括BL1、BL2、BL31、BL32、BL33。而对于Non-Secure版本的RZ/G2L,Bootloader包括BL1、BL2、BL31、BL33。本文仅针对Non-Secure版本的RZ/G2L EVK,以下直接简称RZ/G2L。
对于RZ/G2L,用户可修改并重新编译的Bootloader文件包括trusted-firmware-a(TF-A)和U-Boot。
接下来,从github上获取Bootloader源码。
获取TF-A源码:
左右滑动查看完整内容
git clone https://github.com/renesas-rz/rzg_trusted-firmware-acd rzg_trusted-firmware-agit checkout v2.6/rzcd ..
获取U-Boot源码:
左右滑动查看完整内容
git clone https://github.com/renesas-rz/renesas-u-boot-cipcd renesas-u-boot-cip/git checkout v2021.10/rzcd ..
💡 注意
本文以v2.6版本的TF-A和v2021.10版本的U-Boot为例。客户在实际使用时,需注意同步为所用VLP版本下的TF-A和U-Boot版本。
获取用于TF-A和U-Boot构建的自动化脚本:
左右滑动查看完整内容
wget https://raw.githubusercontent.com/renesas-rz/rzg2_bsp_scripts/master/build_scripts/build_common.shwget https://raw.githubusercontent.com/renesas-rz/rzg2_bsp_scripts/master/build_scripts/build_tfa.shwget https://raw.githubusercontent.com/renesas-rz/rzg2_bsp_scripts/master/build_scripts/build_uboot.shwget https://raw.githubusercontent.com/renesas-rz/rzg2_bsp_scripts/master/build_scripts/build.shchmod +x *.sh
其中,build.sh提供构建各镜像的入口,build_common.sh用于设置通用配置项,build_tfa.sh用于构建TF-A,build_uboot.sh用于构建U-Boot。
在获取源码和用于构建的脚本后,就可以进行编译了。
运行脚本
设置对应的板子信息以及要使用的交叉编译工具链:
./build.sh s
在下面的界面中完成相应的配置
设置板子型号,选择“5 smarc-rzg2l Renesas SMARC RZ/G2L”
设置RZ/G2L板子的版本,分为PMIC_Power和Discrete_Power版本,这里选择“PMIC_Power”。
设置交叉编译工具链,这里选择“1 Poky (Yocto SDK) /opt/poky/3.1.11”。
💡 注意
编译前,请确认Host PC中存在交叉编译工具链。如果不存在,则需要参考《SMARC EVK of RZ/G2L, RZ/G2LC and RZ/G2UL Linux Start-up Guide》文档第7.1.1节How to extract SDK,安装交叉编译工具链。
运行脚本,构建U-Boot
./build.sh u
运行脚本,构建TF-A
./build.sh t
构建完毕,生成的产物位于output_smarc_rzg2l路径下
其中,bl2_bp-smarc-rzg2l_pmic.srec和fip-smarc-rzg2l_pmic.srec即为需要烧写的Bootloader文件。
💡 注意
每次修改U-Boot时,除了需重新编译U-Boot外,还需重新编译TF-A,因为TF-A里面需要包含U-Boot输出文件信息,否则无法正常启动U-Boot。
以上,就是RZ/G2L单独编译Bootloader的方法。
关于烧写Bootloader文件的方法,可参考SMARC EVK of RZ/G2L,RZ/G2LC,RZ/G2UL Linux Start-up Guide Rev.1.06文档第4.4节Write the Bootloader。(您可复制下方链接至浏览器查看)
SMARC EVK of RZ/G2L,RZ/G2LC,RZ/G2UL Linux Start-up Guide Rev.1.06
https://www.renesas.com/en/document/gde/smarc-evk-rzg2l-rzg2lc-rzg2ul-linux-start-guide-rev106?r=1467981
关于RZ/G2L
RZ/G2L微处理器配备Cortex®-A55(1.2 GHz)CPU、16位DDR3L/DDR4接口、带Arm Mali-G31的3D图形加速引擎以及视频编解码器(H.264)。此外,这款微处理器还配备有大量接口,如摄像头输入、显示输出、USB2.0和千兆以太网,因此特别适用于入门级工业人机界面(HMI)和具有视频功能的嵌入式设备等应用。
如需了解更详细的使用方法请参考如下网站:
瑞萨官网
https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/rz-mpus/rzg2l-getting-started
RZ产品WIKI网站
https://renesas.info/wiki/Main_Page