Rbb666 dffedae8d0 修改RT-Thread版本为4.1.0 3 سال پیش
..
.settings dffedae8d0 修改RT-Thread版本为4.1.0 3 سال پیش
applications c5729bdbcb 【增加】Bootloader 针对 QEMU 环境的配置 3 سال پیش
board 6eb2be3330 【修复】 board.h 5 سال پیش
figures 2b25fdc3ec 【完善】 bootloader README (#24) 5 سال پیش
packages f9a510f42a first commit 5 سال پیش
.config dffedae8d0 修改RT-Thread版本为4.1.0 3 سال پیش
.cproject dffedae8d0 修改RT-Thread版本为4.1.0 3 سال پیش
.gitattributes f9a510f42a first commit 5 سال پیش
.gitignore f9a510f42a first commit 5 سال پیش
.project 0be1a09312 [update] art_pi_bootloader 5 سال پیش
Kconfig ed1884077d 【完善】Bootloader main 启动方式 5 سال پیش
README.md 125e23afe1 【修复】boot blink 工程中 README 无法显示图片的问题 5 سال پیش
SConscript f9a510f42a first commit 5 سال پیش
SConstruct f9a510f42a first commit 5 سال پیش
cconfig.h ad24359765 update 5 سال پیش
makefile.targets f9a510f42a first commit 5 سال پیش
mklinks.bat e91ecdf8bc [add] ART-Pi QBoot First Version 5 سال پیش
project.uvoptx 6ecd7efd95 【添加】CUBEMX 文件 5 سال پیش
project.uvprojx 6ecd7efd95 【添加】CUBEMX 文件 5 سال پیش
rtconfig.h dffedae8d0 修改RT-Thread版本为4.1.0 3 سال پیش
rtconfig.py 1e045a8814 【修改】 工程目录结构 5 سال پیش
rtconfig_preinc.h 0be1a09312 [update] art_pi_bootloader 5 سال پیش
template.uvoptx 6ecd7efd95 【添加】CUBEMX 文件 5 سال پیش
template.uvprojx 36d58137a1 【调整】drv_mpu.c 的位置。修复MDK工程模板中链接脚本路径设置错误的问题。 (#21) 5 سال پیش

README.md

BootLoader 例程

简介

本例程主要的功能是让程序从 0x08000000跳转到0x90000000。 STM32H750 的片上 ROM 大小为128K,无法满足一般的程序开发,必须使用 XIP 的方式运行程序。所以需要使用 BootLoader 来跳转到 XIP(0x90000000) 地址。 这个例程也可以作为您开发更多高级 bootloader 功能的基础工程。

硬件说明

qspi_flash

如上图所示,QSPI_FLASH 与单片机的 QSPI 外设引脚相连。

软件说明

源代码位于 /projects/art_pi_bootloader/applications/main.c 中。

在 main 函数中,实现了跳转。

int main(void)
{
    /* set LED0 pin mode to output */
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);

    W25QXX_Init();

    W25Q_Memory_Mapped_Enable();

    SCB_DisableICache();
    SCB_DisableDCache();

    SysTick->CTRL = 0;

    JumpToApplication = (pFunction)(*(__IO uint32_t *)(APPLICATION_ADDRESS + 4));
    __set_MSP(*(__IO uint32_t *)APPLICATION_ADDRESS);

    JumpToApplication();

    return RT_EOK;
}

运行

编译&下载

编译完成后,将开发板的 ST-Link USB 口与 PC 机连接,然后将固件下载至开发板。

运行效果

上电之后会执行 bootloader 程序之后就会跳转执行 QSPI FLASH 中的可执行程序

注意事项

  1. 如果 QSPI FLASH 中没有可执行程序,那么 MCU 在执行跳转指令后就会停止运行。