9 Star 56 Fork 35

qiyongzhong0 / rt-thread-qboot

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
QBoot使用指导.md 6.74 KB
一键复制 编辑 原始数据 按行查看 历史
qiyongzhong0 提交于 2020-07-29 18:28 . fix QBoot使用指导

QBoot使用指导 —— 基于RT-Thread 4.0快速打造bootloader

1. QBoot组件简介

QBoot组件全称是Quick bootloader,是用于快速制作bootloader程序的专用组件,组件说明详见组件readme。本组件的设计初衷是帮助大家加速bootloader程序开发速度。组件基于RT-Thread 4.0设计,依赖Fal、crclib组件工作。目前版本V1.00,仅支持ARM系列芯片(作者也仅在STM32系列芯片上进行过测试),从下一版本V1.10将加入更多架构芯片的支持,希望大家提供帮助和支持。欢迎大家使用QBoot组件。

2. QBoot使用示例

2.1 创建基础工程

2.1.1 使用RT-Thread Studio基于芯片创建工程(本示例使用的芯片型号是STM32L4R5ZI)

2.1.2 修改board.h

修改Flash和Ram尺寸定义:
#define ROM_START  ((uint32_t)0x08000000)
#define ROM_SIZE   (2048)
#define ROM_END((uint32_t)(ROM_START + ROM_SIZE * 1024))

#define RAM_START  (0x20000000)
#define RAM_SIZE   (640)
#define RAM_END(RAM_START + RAM_SIZE * 1024)
修改为
#define ROM_START              ((uint32_t)0x08000000)
#define ROM_SIZE               (2048 * 1024)
#define ROM_END                ((uint32_t)(ROM_START + ROM_SIZE))

#define RAM_START              (0x20000000)
#define RAM_SIZE               (640 * 1024)
#define RAM_END                (RAM_START + RAM_SIZE)
加入芯片flash驱动:
/*#define BSP_USING_ON_CHIP_FLASH*/
修改为
#define BSP_USING_ON_CHIP_FLASH
如果你使用了spi flash则须加入spi驱动,本示例未使用,在此不再赘述。

2.1.3 修改main.c,删除main函数内的所有代码,仅保留return RT_EOK;

int main(void)
{
    return RT_EOK;
}

2.1.4使用CubeMX生成芯片低层初始化代码,并保存到工程的driver文件夹下

project配置如下:

code generator配置如下:

刷新Studio工程,将driver/CubeMX_Config/EWARM目录排除在构建之外,将driver/CubeMX_Config/src目录下除stm32l4xx_hal_msp.c之外的其它文件排除在构建之外,将driver/CubeMX_Config/inc目录下除main.h之外的其它文件删除,完成后如下图所示:

2.1.5 添加Fal组件并保存

2.1.6 在工程driver下创建文件夹ports

2.1.7 添加fal_cfg.h到文件夹ports,代码如下:

#ifndef _FAL_CFG_H_
#define _FAL_CFG_H_

#include <rtconfig.h>
#include <board.h>

#define RT_APP_PART_ADDR            (0x08000000 + 128*1024)//app partition begin address

#define NOR_FLASH_DEV_NAME          FAL_USING_NOR_FLASH_DEV_NAME//"norflash0"

/* ===================== Flash device Configuration ========================= */
extern const struct fal_flash_dev stm32_onchip_flash;
//extern struct fal_flash_dev nor_flash0;

/* flash device table */
#define FAL_FLASH_DEV_TABLE                                          \
{                                                                    \
    &stm32_onchip_flash,                                             \
    /*&nor_flash0,*/                                                 \
}
/* ====================== Partition Configuration ========================== */
#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
#define FAL_PART_TABLE                                                                      \
{                                                                                           \
    /*{FAL_PART_MAGIC_WORD,   "bl",           "onchip_flash",     0,          128*1024,  0},*/  \
    {FAL_PART_MAGIC_WORD,   "app",          "onchip_flash",     128*1024,   896*1024,  0},  \
    {FAL_PART_MAGIC_WORD,   "factory",      "onchip_flash",     1024*1024,  512*1024,  0},  \
    {FAL_PART_MAGIC_WORD,   "download",     "onchip_flash",     1536*1024,  512*1024,  0},  \
    /*{FAL_PART_MAGIC_WORD,   "filesys",      NOR_FLASH_DEV_NAME, 0,          8*1024*1024,  0},*/ \
}
#endif /* FAL_PART_HAS_TABLE_CFG */

#endif /* _FAL_CFG_H_ */
注:使用不到的分区最好注释掉,可防止异常破坏数据。

2.1.8 添加drv_fal_init.c到文件夹ports,代码如下:

#include <rtthread.h>

#ifdef PKG_USING_FAL

#include <fal.h>
extern int fal_init(void);
INIT_COMPONENT_EXPORT(fal_init);

#endif

2.1.9 打开构建配置,修改Optimization页的Optimization level项配置为Optimize size(-Os),向编译配置的includes中加入目录drivers/CubeMX_Config/Incdrivers/ports

2.1.10 刷新、保存和编译工程,如无错误,则创建基础工程完成。

2.2 添加和配置QBoot组件

2.2.1 添加QBoot组件,在软件包中心界面选系统,在QBoot组件项点添加,最后关闭软件包中心

2.2.2 配置QBoot组件,在RT-Thread Settings界面,双点qboot组件,进入选项配置界面

本示例使用了组件的全部功能,修改了running status led pinresume factory key pinthe level after key is pressed三个配置项,其它使用默认配置。你可以依据需要对其它配置项进行修改。配置完成后保存工程,完成组件更新。

编译工程,代码flash使用92.97k,ram使用14.72,满足设计需求

注:在使用gzip情况下,zlib组件的版本v1.0.0对flash使用较多ram较少,而版本laster则对flash使用较少,ram使用较多,请根据不同需要选择使用合适的版本。

>_< 恭喜!你的bootloader制作完成了!

3. 帮助连接:

4. 联系方式

1
https://gitee.com/qiyongzhong0/rt-thread-qboot.git
git@gitee.com:qiyongzhong0/rt-thread-qboot.git
qiyongzhong0
rt-thread-qboot
rt-thread-qboot
master

搜索帮助