This repository has been archived on 2025-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
controller-hd/User/lib/bootload
许晟昊 3f0e203c4c 合并代码(有错) 2024-11-26 14:16:38 +08:00
..
bootload.h 合并代码(有错) 2024-11-26 14:16:38 +08:00
readme.md init 2024-05-08 16:04:22 +08:00
ymodem.h init 2024-05-08 16:04:22 +08:00

readme.md

BOOTLOADER介绍

STM32的BOOTLOADER是在芯片复位或从停机模式唤醒时执行的一段小程序它负责将用户代码加载到内存中并启动它。STM32F1、F4、H7等不同系列的MCU可能会有不同的BOOTLOADER程序。

BOOTLOADER通常用于以下几种情况

  1. 在应用程序无法正常启动时,提供一个后备启动方式。
  2. 在系统需要进行固件更新时可以先通过BOOTLOADER加载新的用户代码。
  3. 用于在线调试或调试无法通过JTAG/SWD接口访问时可以通过BOOTLOADER加载调试工具。

BOOTLOADER的设计和实现通常依赖于芯片的内部结构和特性以及用户代码存储的介质如内部FLASH外部SPI FLASH等

一个简单的BOOTLOADER示例可能包括以下步骤

  1. 复位后芯片开始执行内部的BOOTLOADER程序。
  2. 通过某种通信接口如USARTI2CSPI接收新的用户程序代码。
  3. 将接收到的代码写入用户代码存储区如内部FLASH
  4. 设置启动引脚或者配置BOOT引导模式寄存器选择启动用户代码。
  5. 重启芯片这次不再执行BOOTLOADER而是加载并运行新的用户程序代码。

注意实际的BOOTLOADER实现可能会更加复杂包括错误检查和处理、加密解密、固件完整性校验等安全措施。

bootload.c 文件说明

bootload.c是一个实现引导加载程序bootloader功能的源代码文件。引导加载程序是一段在系统启动时运行的代码负责初始化硬件设备、建立内存空间映射图然后加载操作系统内核并将控制权转交给它。

以下是 bootload.c文件中可能包含的主要函数和其功能:

  1. 系统启动函数 :这个函数是引导加载程序的入口点,它负责启动整个引导加载过程。
  2. 硬件初始化函数 这些函数负责初始化系统的硬件设备包括CPU、内存、IO设备等。
  3. 内存映射设置函数 :这些函数负责建立内存空间的映射图,包括物理内存、虚拟内存的映射关系。
  4. 操作系统内核加载函数 :这些函数负责加载操作系统内核,包括从存储设备读取内核镜像,加载到内存中,然后跳转到内核的入口点。
  5. 错误处理函数 :这些函数负责处理在引导加载过程中可能出现的各种错误,包括硬件错误、内核加载错误等。

ymodem.c 文件说明

ymodem.c是一个实现YMODEM协议的源代码文件。YMODEM是一种用于文件传输的协议它在XMODEM协议的基础上增加了一些新的特性例如支持更大的文件和文件名传输。

以下是 ymodem.c文件中可能包含的主要函数和其功能:

  1. 初始化和结束传输的函数 :这些函数负责设置传输的开始和结束,包括打开和关闭必要的硬件接口,设置传输参数等。
  2. 发送和接收数据包的函数 这些函数负责实际的数据传输包括将数据打包成YMODEM格式的数据包通过硬件接口发送和接收数据包处理数据包的确认和重传等。
  3. CRC校验的函数 这些函数负责计算和检查数据包的CRC循环冗余校验以确保数据的完整性。
  4. 处理错误和重试的函数 这些函数负责处理在传输过程中可能出现的各种错误包括数据包丢失、CRC校验失败等并在必要时进行重试。

此外,ymodem.c文件还可能包含一些辅助函数,用于处理如超时、缓冲区管理等问题。