littlebot
Published on 2025-04-14 / 0 Visits
0

【源码】基于AVR微控制器的USB引导加载器

项目简介

本项目是名为USBaspLoader的基于AVR微控制器的USB引导加载器,适用于多数具有至少2 kB引导加载区的AVR微控制器,像常见的ATMega8。固件烧录到闪存的引导加载区,复位后立即接管控制权。若满足特定硬件条件,引导加载器会在USB接口等待数据并加载到闪存其余部分;不满足则将控制权交给已加载的固件。

项目的主要特性和功能

  1. 便捷的固件上传:无需单独命令行工具,模拟Thomas Fischl的USBasp编程器,用AVRDUDE上传闪存数据,启用选项可上传EEPROM数据。
  2. 与Arduino兼容:能和Arduino软件配合上传闪存数据。
  3. 多平台支持:可在Unix(Linux、FreeBSD或Mac OS X)和Windows上构建。
  4. 更新功能:支持“make update”更新引导加载程序,适用于生产后无法用HVPP或ISP的电路板。
  5. 数据校验:实现CRC校验功能,确保数据传输的完整性和正确性。
  6. 良好兼容性:支持多种AVR微控制器,兼容性和可扩展性好。
  7. 调试方便:提供调试模块,用于开发过程中的调试和数据打印。

安装使用步骤

前提条件

已下载本项目的源码文件。

配置参数

首先,在“firmware/bootloaderconfig.h”中描述硬件和布局特定参数(如要使用的PIN等);可通过修改“firmware/usbconfig.h”进行一些USB调优;编辑“Makefile.inc”以反映目标设备和不同于默认设置的功能集。

不同平台构建步骤

Windows

  1. 安装WinAVR,参考 http://winavr.sourceforge.net/。
  2. 进入“USBaspLoader”目录,按需编辑上述文件(如更改设备设置、编程器硬件、时钟速率等)。
  3. 输入“make”编译完整的源代码。
  4. 使用“make flash”将代码上传到设备。
  5. 使用“make fuse”设置熔丝位。
  6. 若控制器上已有可用的USBaspLoader,可使用“make update”将“updater”固件烧录到其中进行更新。

Unix(Linux、FreeBSD和Mac)

  1. 安装GNU工具链和avr - libc,Unix系统参考 http://www.nongnu.org/avr - libc/user - manual/install_tools.html,Mac OS X使用预编译包 http://www.obdev.at/avrmacpack/。
  2. 进入“USBaspLoader”目录,按需编辑上述文件。
  3. 输入“make”编译源代码。
  4. 使用“make flash”将代码上传到设备。
  5. 使用“make fuse”设置熔丝位。
  6. 同样可使用“make update”进行更新。

使用引导加载器

设置目标硬件上用于引导加载的跳线(或其他配置条件),将其连接到主机,并(若不是总线供电)对AVR进行复位。然后通过“虚拟”USBasp编程器使用AVRDUDE对设备进行烧录。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】