All Projects → majbthrd → PIC16F1-USB-DFU-Bootloader

majbthrd / PIC16F1-USB-DFU-Bootloader

Licence: other
DFU protocol variant of Matt Sarnoff's PIC16F1-USB-Bootloader

Projects that are alternatives of or similar to PIC16F1-USB-DFU-Bootloader

DfuBootloader
STM32 USB device bootloader using DFU class interface
Stars: ✭ 79 (+102.56%)
Mutual labels:  usb, bootloader, dfu
Toboot
Bootloader for the EFM32HG Tomu Board
Stars: ✭ 65 (+66.67%)
Mutual labels:  usb, bootloader
usb stack
Tiny and portable USB device/host stack for embedded system with USB IP
Stars: ✭ 175 (+348.72%)
Mutual labels:  usb, dfu
Hoodloader2
16u2 Bootloader to reprogram 16u2 + 328/2560 with Arduino IDE
Stars: ✭ 509 (+1205.13%)
Mutual labels:  usb, bootloader
Micronucleus
ATTiny usb bootloader with a strong emphasis on bootloader compactness.
Stars: ✭ 1,240 (+3079.49%)
Mutual labels:  usb, bootloader
Sboot stm32
Secure USB DFU1.1 bootloader for STM32
Stars: ✭ 181 (+364.1%)
Mutual labels:  usb, bootloader
stm32-usb-bootloader
This repository contains bootloader for stm32f1xx microcontrollers. It works for stm32f103ret6, but you can simply adopt it to any MCU supporting STM32 HAL library with USB and SD-card
Stars: ✭ 40 (+2.56%)
Mutual labels:  usb, bootloader
stm32 i2c to usb hid multitouch
i2c to usb hid multi touch with stm32
Stars: ✭ 55 (+41.03%)
Mutual labels:  usb
exynos-usbdl
Unsigned code loader for Exynos BootROM
Stars: ✭ 57 (+46.15%)
Mutual labels:  usb
Modbus-STM32-HAL-FreeRTOS
Modbus TCP and RTU, Master and Slave for STM32 using Cube HAL and FreeRTOS
Stars: ✭ 272 (+597.44%)
Mutual labels:  usb
idfx
Tool for flash/monitor ESP-IDF and ESP8266_SDK apps on the WSL2 ⚡
Stars: ✭ 71 (+82.05%)
Mutual labels:  usb
CloverEFI-4MU
Manually install Clover EFI Bootloader via Linux System on Legacy BIOS or UEFI Firmware.
Stars: ✭ 93 (+138.46%)
Mutual labels:  bootloader
Multiboot-Toolkit
Create a bootable disk
Stars: ✭ 96 (+146.15%)
Mutual labels:  usb
pi400kb
Raw HID keyboard forwarder to turn the Pi 400 into a USB keyboard
Stars: ✭ 182 (+366.67%)
Mutual labels:  usb
grml-plus
Script to add grml (from grml.org) and more stuff to a USB key
Stars: ✭ 13 (-66.67%)
Mutual labels:  usb
Quad-Serial
Quad serial project with FTDI CI's, Isolation and 1.8~5.5v UART port.
Stars: ✭ 17 (-56.41%)
Mutual labels:  usb
pcan cantact
🤖 XCAN firmware for CANtact ( CANable ) or any other similar boards.
Stars: ✭ 192 (+392.31%)
Mutual labels:  usb
ArduinoXInput AVR
AVR boards package for the ArduinoXInput project
Stars: ✭ 53 (+35.9%)
Mutual labels:  usb
STM32 USB CH341
STM32 USB simulates CH341.
Stars: ✭ 52 (+33.33%)
Mutual labels:  usb
awesome-webhid
Curated list of resources relating to the WebHID (Human Interface Device) API
Stars: ✭ 126 (+223.08%)
Mutual labels:  usb

USB DFU Bootloader for PIC16F1454/5/9

This bootloader has been tested with Linux, Windows, and MacOS.

Thank you to pidcodes for assigning a USB VID:PID.

Matt Sarnoff demonstrated what is possible with his excellent hand-optimized assembly 512 word USB Bootloader.

Its minimal size rightfully puts to shame existing C-code-based bootloaders such as mine.

This project takes the concept of Matt's bootloader, but overhauled the code to instead implement the industry-standard DFU protocol that is supported under multiple Operating Systems via existing tools such as dfu-util and webdfu.

This bootloader also has the added advantage of CRC-14 protection of the user application.

A list of commercial products that already use this bootloader is available on the wiki.

Usage

For MPLAB/XC8 compilation, the following options are needed:

--codeoffset=0x200
--rom=default,-0-1FF,-1F7F-1F7F

The utility provided in the ./tools/ subdirectory converts a .hex file into a CRC-14 protected binary image:

454hex2dfu foo.hex foo.dfu

Downloading can be accomplished with your DFU software of choice. For dfu-util, usage would be like so:

dfu-util -D write.dfu

Limitations

  • A PIC16F145x chip of silicon revision A5 or later is required due to an issue with writing to program memory on revision A2 parts. The value at address 0x8006 in configuration space should be 0x1005 or later. See the silicon errata document for more information.

  • The configuration words are hard-coded in the bootloader (see the __config lines in bootloader.asm); the downloaded app inherits these settings and cannot invoke different values.

License

The contents of this repository are released under a 3-clause BSD license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].