Skip to the content
2 layersDevsetup schematic, the printed circuit board in 3D

This project contains a custom bootloader program for the Atmega328P (known for the Arduino family boards) which fulfills basic bootloader functionalities: - Uploading a program (given by a Intel Hex format file) to the…

Copper layers
2
Thickness
1.6 mm
Parts
19
Nets
57
Pads
116
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 7 (file 20221018)
Created
18 Aug 2024
Updated
1 Sep 2024

Overview

Devsetup schematic is an open-source printed circuit board by maboxi, from the maboxi/atmega328p-bootloader repository on GitHub. It is a 2-layer board with 19 parts on 57 nets.

Its parts include 6 resistors, 6 diodes, 2 ICs and 2 switches.

README

README.md

Bootloader + Python program for the Atmega328P chip

This project contains a custom bootloader program for the Atmega328P (known for the Arduino family boards) which fulfills basic bootloader functionalities:

  • Uploading a program (given by a Intel Hex format file) to the microcontroller
  • Verifiying an upload
  • Reading the fuse bytes (extended, high, low) and interpreting the values

The python program can act as either a command-line tool for the usage of the bootloader or as a way to have a live interaction with the bootloader as a user.

Atmega328P Bootloader

The bootloader can be addressed using the UART interface of the microcontroller. The instructions are basic ASCII characters, the data e.g. for uploading a program is transfered byte-wise.

The bootloader currently supports the following instructions:

  • 'i': Query information about the bootloader. This returns the bootloader version as well as the start address of the bootloader section in the flash of the microcontroller to allow section checks in the uploading program.
  • 'q': Quit the bootloader and start the application located at 0x0
  • 'u': Upload a hex file to the application section of the flash memory
  • 'v': Verify sections of the flash memory. The bootloader only reads out the memory, verification has to happen in the tool that addresses the bootloader
  • 'f': Reads the fuse bytes (extended, high, low) and the locks byte from the microcontroller. The tool then decodes these bytes and displays the resulting microcontroller configuration

Python Bootloader-Tool

Python tool usage (developed using Python 3.12.0):

text
usage: uploader.py [-h] --port PORT [--baudrate BAUDRATE] [-f FILE]
                [--no-upload] [--no-verify] [-r] [-i] [--no-quit] [-v]

Upload firmware to Atmega328p based devices that run the corresponding
bootloader

options:
    -h, --help            show this help message and exit
    --port PORT, -p PORT  serial port
    --baudrate BAUDRATE   baudrate of serial connection
    -f FILE, --file FILE  firmware hex file
    --no-upload           skip upload
    --no-verify           skip upload verification
    -r, --fuses           read fuses
    -i, --info
    --no-quit             don't quit bootloader after tasks are finished
    -v, --verbose

Rust Bootloader-Tool [WIP]

...

Helpful Information

Useful AVRDUDE Commands

  • Read fuses: -U lfuse|hfuse|efuse:r:-:b -> Displays binary representation of fuse values
  • Write fuses: -U lfuse|hfuse|efuse:w::m -> Writes the given fuseval into the selected fuse byte
    • ATTENTION: don't forget the number system prefix before immediate values (0x... / 0b...)! Else you will probably brick the microcontroller by disabling the external reset!!! (this definitely didn't happen to me....)

AVR Specifications and other interesting links

Parts

19
QtyValueFootprintReferences
4100RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR12, R13, R22, R23
2150RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR11, R21
2Boot Mode Enable SwitchButton_Switch_THT:SW_PUSH_6mmSW11, SW21
2LED BlueLED_THT:LED_D5.0mm_FlatTopD13, D23
2LED GreenLED_THT:LED_D5.0mm_FlatTopD12, D22
2LED RedLED_THT:LED_D5.0mm_FlatTopD11, D21
2~MP-Library:USBASP_Header_10PinU11, U21
2~MP-Library:ArduinoProMini-PinSocketsArduinoProMini1, ArduinoProMini2
1FTDI_USART_Pin_SocketConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalFTDI_USART1

Similar boards

  • 2 layers43.9 × 27.7 mmTcd1304-4v, the printed circuit board in 3D

    Tcd1304-4v

    OpnTec/open-spectrometer-hardware

    Open source VIS spectrometer

    19 parts1.5k
  • 2 layers50 × 60 mmDebate Device, the printed circuit board in 3D

    Debate Device

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    19 parts915
  • 2 layers102.9 × 96.7 mmISA adapter, the printed circuit board in 3D

    ISA adapter

    polpo/picogus

    Emulation of ISA sound cards and CD-ROM on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS, Panasonic CD-ROM) with USB mouse/joystick support

    19 parts805
  • 2 layers60 × 39 mmPs2usb, the printed circuit board in 3D

    Ps2usb

    rasteri/HIDman

    Adapting USB devices to work on old computers

    19 parts432
  • 2 layers70.1 × 43.2 mmIaq device, the printed circuit board in 3D

    Iaq device

    nkitanov/iaq_board

    IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality

    19 parts396
  • 2 layers80 × 80 mmGB BRK CPU G1, the printed circuit board in 3D

    GB BRK CPU G1

    Gekkio/gb-hardware

    Game Boy -related custom hardware by gekkio

    19 parts379CC-BY-4.0
  • 2 layers25.4 × 25.4 mmIna169, the printed circuit board in 3D

    Ina169

    Ardumower/ardumower

    Develop an open source robotic lawn mower (HW+SW reference platform)

    19 parts282
  • 2 layers58.4 × 28.6 mmNew rele, the printed circuit board in 3D

    New rele

    zmaker/arduino_cookbook

    gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

    19 parts269

Questions

What parts does the Devsetup schematic use?

19 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Devsetup schematic KiCad files?

From the maboxi/atmega328p-bootloader repository on GitHub, at the commit this page was made from: the board is devsetup-schematic/devsetup-schematic.kicad_pcb and its schematic devsetup-schematic/devsetup-schematic.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Devsetup schematic design in my own project?

Its repository states no licence, so its author keeps all rights: ask maboxi before reusing the design.