stm32-fly-boot下载bin文件说明

本文详细介绍了如何使用fly-boot进行STM32的bootloader引导和应用程序下载的过程,包括bin文件生成、ICF文件配置、中断向量入口地址设置、应用程序启动等关键步骤,以及使用cb-com-boot目录下的pTest.exe应用程序实现下载流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

fly-boot下载bin文件说明  (wang@20111124)
1、fly-boot引导程序下载在flash 0x8000000 地址上

2、需要生成bin文件 bin下载放在0x8003000地址上
iar生成bin: 打开Options--Output Converter--选中Generate additional output  Output format选binary
MDK生成bin: 打开Options for Target,选择User标签页;构选Run User Programs After Build/Rebuild框中的Run #1多选框,
在后边的文本框中输入D:\Program Files\keil\ARM\BIN40\fromelf.exe --bin -o ./Project.bin ./Project.axf命令行;


3、app-bin文件配置

stm32f10x_flash.icf文件修改
define symbol __ICFEDIT_intvec_start__ = 0x08003000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x08003000 ;

配置新的中断向量入口地址
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);   //更改

main()中加FLASH_Unlock 解锁FLASH,确保FLASH可写
FLASH_Unlock();
 

4、cb-com-boot\目录下的pTest.exe  Fly-BootV1.0应用程序,用来下载bin文件

5、操作说明
fly-boot复位时先请求下载bin文件,5次请求失败后,进入0x8003000地址启动app-bin程序
如果请求成功,下载bin文件,下载完后,进入0x8003000地址启动app-bin程序


6、Juma_IAP代码
#define ApplicationAddress    0x08030000

typedef  void (*pFunction)(void);

pFunction Jump_To_Application;

u32 JumpAddress;

extern void __set_MSP(u32 topOfMainStack);

void Jump_IAP(void)
{

    /* Test if user code is programmed starting from address "ApplicationAddress" */
    if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
    { /* Jump to user application */
      JumpAddress = *(volatile u32*) (ApplicationAddress + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      /* Initialize user application's Stack Pointer */

 __set_PSP(*(volatile unsigned int*) ApplicationAddress);
      __set_CONTROL(0);
      __set_MSP(*(volatile u32*) ApplicationAddress);
      Jump_To_Application();
    }
}

<think>嗯,用户想了解如何使用USB-TTL下载程序到STM32F103C8T6。首先,我需要回忆一下相关的步骤和注意事项。根据之前提供的引用内容,特别是引用1、3和5,应该涉及到接线、启动模式设置、软件配置等部分。 首先,接线部分。STM32的PA9和PA10是USART1的引脚,需要连接到USB-TTL模块的对应RXD和TXD。不过这里要注意交叉连接,即STM32的PA9(TX)接USB-TTL的RX,PA10(RX)接USB-TTL的TX。这一点在引用3中提到过,但用户需要确认是否正确,避免接反导致通信失败。同时,电源和地线的连接也很重要,确保3.3V和GND正确连接,避免电压不匹配损坏芯片。 然后是启动模式设置。根据引用1和5,STM32的启动模式通过BOOT0和BOOT1引脚来控制。串口下载需要将BOOT0设置为高电平,BOOT1为低电平。这可能涉及到跳线帽的设置,用户需要参考具体的开发板布局。有些板子可能已经有跳线帽,用户需要正确配置才能进入系统存储器启动模式,从而允许通过串口下载程序。 接下来是软件配置,使用mcuisp或FlyMcu等工具。软件参数设置是关键,包括选择正确的串口号、波特率(通常115200)、校验位(偶校验)、DTR和RTS的设置。根据引用5,DTR高电平复位,RTS低电平进BootLoader,这可能需要根据软件的具体选项来调整。此外,用户需要加载正确的hex或bin文件,并设置正确的起始地址,通常0x8000000。 下载完成后,用户需要将BOOT0重新设置为低电平,以便从主闪存启动程序。如果程序没有运行,可能需要检查复位电路或重新上电。此外,断电保存的问题,比如是否FLASH编程完成后自动复位,需要确认软件中的选项是否勾选正确。 用户可能遇到的问题包括接线错误、启动模式配置不正确、软件参数设置错误等。例如,如果DTR和RTS没有正确设置,可能导致无法进入BootLoader模式。另外,某些USB-TTL模块可能需要外部供电,或者开发板需要独立供电,以确保稳定性。 还有可能用户使用的开发板是否自带BootLoader,或者是否需要先刷写BootLoader。不过STM32F103C8T6通常内置了系统存储器启动的BootLoader,所以不需要额外操作。但需要确认芯片是否未被写保护,或者是否擦除过之前的程序。 另外,用户可能没有提到但需要注意的还有驱动安装问题。USB-TTL模块需要正确安装驱动程序,才能在电脑上识别出串口。如果用户遇到无法识别串口的情况,可能需要检查设备管理器中的驱动状态。 总结步骤应该是:接线→设置启动模式→软件配置→下载→恢复启动模式。每个步骤中的细节都需要详细说明,避免用户遗漏。同时,常见问题如程序不运行、无法连接等,应给出排查建议,比如检查接线、电源、跳线帽设置、软件参数等。 最后,生成相关问题可以帮助用户进一步了解其他下载方式或解决问题的方法,比如SWD接口的使用,仿真调试,或者如何处理下载失败的情况。这些相关问题的答案可以参考提供的引用内容,尤其是引用2和4提到的ST-LINK和FreeRTOS移植中的下载方法。</think>### 如何通过USB-TTL烧录程序至STM32F103C8T6 #### 一、硬件准备 1. **接线说明** - **STM32F103C8T6** 与 **USB-TTL模块** 的接线如下: - `PA9`(USART1_TX) → USB-TTL的 `RXD` - `PA10`(USART1_RX) → USB-TTL的 `TXD` - `3.3V` → USB-TTL的 `3.3V`(若开发板独立供电,可不接) - `GND` → USB-TTL的 `GND` 注意:**必须共地**,否则通信失败[^3]。 2. **启动模式设置** - **BOOT0** 跳线帽接 `1`(高电平),**BOOT1** 保持 `0`(低电平)[^1][^5]。 - 下载完成后需将 **BOOT0** 恢复为 `0`,否则无法运行用户程序。 #### 二、软件配置(以mcuisp为例) 1. **参数设置** - 串口号:选择USB-TTL对应的COM口 - 波特率:通常设为 `115200` - 校验位:选择 `EVEN`(偶校验) - 勾选 **DTR低电平复位,RTS高电平进BootLoader**(部分模块需反向设置,根据实际调整)[^5]。 2. **文件与地址** - 加载编译生成的 `.hex` 或 `.bin` 文件 - 起始地址设为 `0x8000000`(STM32 Flash起始地址) - 勾选 **编程后执行** 和 **校验**。 #### 三、下载流程 1. 连接硬件并设置启动模式 2. 打开mcuisp,配置参数后点击 **开始编程** 3. 等待提示 **操作成功** 4. 断电,将 **BOOT0** 恢复为 `0`,重新上电运行程序。 #### 四、常见问题 1. **程序未运行** - 检查 **BOOT0** 是否恢复为低电平 - 确认电源稳定,或尝试手动复位[^1]。 2. **通信失败** - 检查接线是否交叉(TX→RX,RX→TX) - 确保USB-TTL驱动已安装,串口号正确。 3. **无法进入BootLoader** - 调整DTR/RTS电平设置(参考模块说明)[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值