

Devsetup schematic
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.mdBootloader + 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):
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, --verboseRust 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
- Atmega328P Datasheet: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
- AVR Libc Documentation: https://www.nongnu.org/avr-libc/user-manual/index.html
- AVR Instruction Set: https://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf
- Inline Assembler: https://www.nongnu.org/avr-libc/user-manual/inline_asm.html
Parts
19| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R12, R13, R22, R23 |
| 2 | 150R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R11, R21 |
| 2 | Boot Mode Enable Switch | Button_Switch_THT:SW_PUSH_6mm | SW11, SW21 |
| 2 | LED Blue | LED_THT:LED_D5.0mm_FlatTop | D13, D23 |
| 2 | LED Green | LED_THT:LED_D5.0mm_FlatTop | D12, D22 |
| 2 | LED Red | LED_THT:LED_D5.0mm_FlatTop | D11, D21 |
| 2 | ~ | MP-Library:USBASP_Header_10Pin | U11, U21 |
| 2 | ~ | MP-Library:ArduinoProMini-PinSockets | ArduinoProMini1, ArduinoProMini2 |
| 1 | FTDI_USART_Pin_Socket | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | FTDI_USART1 |
Similar boards
- 2 layers43.9 × 27.7 mm

- 2 layers50 × 60 mm

Debate Device
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
19 parts915 - 2 layers102.9 × 96.7 mm

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 mm

- 2 layers70.1 × 43.2 mm

Iaq device
nkitanov/iaq_board
IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality
19 parts396 - 2 layers80 × 80 mm

- 2 layers25.4 × 25.4 mm

Ina169
Ardumower/ardumower
Develop an open source robotic lawn mower (HW+SW reference platform)
19 parts282 - 2 layers58.4 × 28.6 mm

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.