Skip to content

Commit c5a34fa

Browse files
committed
First release on github.
1 parent 3dc252a commit c5a34fa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+11971
-0
lines changed

README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# chip45boot3
2+
AVR ATmega Xmega Bootloader and PC GUI Source Code.
3+
4+
chip45boot3 was previously offered commercially by chip45.com and is now available as open-source under MIT License.
5+
6+
## Description
7+
8+
chip45boot3 is the successor of the popular chip45boot2 bootloader targeting professional applications with extended functionality. It supports almost any Atmel/Microchip AVR ATmega and Xmega microcontrollers. See [infosheet](docs/chip45boot3_Infosheet.pdf) for details.
9+
10+
## Features
11+
chip45boot2 provides the following features:
12+
13+
- faster transmission protocol
14+
- strong 16 bit CRC checksum
15+
- optional 128 bit XTAE encryption of data
16+
- programing and reading of flash and eeprom memory (including verification of programmed content)
17+
- bootloader can read out firmware version from flash and GUI warns, if an older version should be programmed
18+
- communication through USART (e.g. RS232, USB UART converter, optionally RS485)
19+
- support of the internal USB controller of the recent Xmega microcontrollers!
20+
- written in C with Atmel Studio 6.1
21+
- memory footprint highly configurable (e.g. ATmega/USART/just flash programming <2k, full functionality <4k, with USB controller <8k)
22+
- GUI written with Visual C# (2010 Express), full source code included
23+
- separate PC tool for encryption of hex files, full source code included
24+
25+
## Overview
26+
27+
The chip45boot3 bootloader is a highly customizeable bootloader for all ATmega and Xmega devices with bootloader support (i.e. separate bootblock in flash and boot reset vector).
28+
29+
A fast binary protocol with strong 16 bit CRC checksum ensures a reliable communication with a host PC. Flash and EEPROM memory of the target can be written or read out and the written content is verified against the original data.
30+
31+
The bootloader can read out a firmware version from the exisiting flash memory and compare it against the version of the new firmware hexfile. A warning is shown, if an older version should be programmed.
32+
33+
Communication is performed through any UART of the target device with a host PC (e.g. USB UART converter, RS232, RS485). Other microcontroller interfaces can be adopted relatively easy due to the very modular design of
34+
the bootloader.
35+
36+
Application firmware content can be XTAE encrypted optionally making it impossible for attackers to reverse engineer the firmware.
37+
38+
Memory footprint starts at below 2k for small ATmega devices with just flash programming support.
39+
40+
The bootloader is written in C with Atmel Studio 7 and the Windows PC GUI is written with Visual C# Express. Full source code is included of bootloader, PC GUI as well as an PC encryption tool for XTEA encryption of hex files.
41+
42+
## Further Information
43+
44+
- [chip45boot3 Infosheet](docs/chip45boot2_Infosheet.pdf)
45+
46+
## PC Software
47+
The chip45boot3 GUI is a PC/Windows application with a graphical user interface for the bootloader, which simplifies flash and eeprom programming over a COM port.
48+
49+
![chip45boot2 PC GUI](img/chip45boot3_gui_simple.jpg)
50+
51+
![chip45boot2 PC GUI](img/chip45boot3_gui_expert.jpg)
52+
53+
You can download Windows binaries under [releases](https://github.com/eriklins/chip45boot3/releases).
54+
55+
The PC software was programmed with Visual Studio C#.
56+
57+
## Contributing/Feedback
58+
Feedback / improvements / pull-requests / etc. are welcome.
59+
60+
However, I decided to open-source the bootloader due to lack of time/resources available for supporting the bootloader anymore, hence I cannot guarantee working on issues/pull-requests in the short-term.
61+
62+
## License
63+
Copyright (C) 2023 Erik Lins
64+
65+
This project is released under the MIT License.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
3+
<ProjectComponents>
4+
<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
5+
<CApiVersion></CApiVersion>
6+
<CBundle></CBundle>
7+
<CClass>Device</CClass>
8+
<CGroup>Startup</CGroup>
9+
<CSub></CSub>
10+
<CVariant></CVariant>
11+
<CVendor>Atmel</CVendor>
12+
<CVersion>1.3.0</CVersion>
13+
<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
14+
<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
15+
<Description></Description>
16+
<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
17+
<d4p1:anyType i:type="FileInfo">
18+
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\include</AbsolutePath>
19+
<Attribute></Attribute>
20+
<Category>include</Category>
21+
<Condition>C</Condition>
22+
<FileContentHash i:nil="true" />
23+
<FileVersion></FileVersion>
24+
<Name>include</Name>
25+
<SelectString></SelectString>
26+
<SourcePath></SourcePath>
27+
</d4p1:anyType>
28+
<d4p1:anyType i:type="FileInfo">
29+
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\include\avr\iom2560.h</AbsolutePath>
30+
<Attribute></Attribute>
31+
<Category>header</Category>
32+
<Condition>C</Condition>
33+
<FileContentHash>MkwPezikXVtYA90mpLpFfA==</FileContentHash>
34+
<FileVersion></FileVersion>
35+
<Name>include/avr/iom2560.h</Name>
36+
<SelectString></SelectString>
37+
<SourcePath></SourcePath>
38+
</d4p1:anyType>
39+
<d4p1:anyType i:type="FileInfo">
40+
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\templates\main.c</AbsolutePath>
41+
<Attribute>template</Attribute>
42+
<Category>source</Category>
43+
<Condition>C Exe</Condition>
44+
<FileContentHash>GD1k8YYhulqRs6FD1B2Hog==</FileContentHash>
45+
<FileVersion></FileVersion>
46+
<Name>templates/main.c</Name>
47+
<SelectString>Main file (.c)</SelectString>
48+
<SourcePath></SourcePath>
49+
</d4p1:anyType>
50+
<d4p1:anyType i:type="FileInfo">
51+
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\templates\main.cpp</AbsolutePath>
52+
<Attribute>template</Attribute>
53+
<Category>source</Category>
54+
<Condition>C Exe</Condition>
55+
<FileContentHash>YXFphlh0CtZJU+ebktABgQ==</FileContentHash>
56+
<FileVersion></FileVersion>
57+
<Name>templates/main.cpp</Name>
58+
<SelectString>Main file (.cpp)</SelectString>
59+
<SourcePath></SourcePath>
60+
</d4p1:anyType>
61+
<d4p1:anyType i:type="FileInfo">
62+
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.3.300\gcc\dev\atmega2560</AbsolutePath>
63+
<Attribute></Attribute>
64+
<Category>libraryPrefix</Category>
65+
<Condition>GCC</Condition>
66+
<FileContentHash i:nil="true" />
67+
<FileVersion></FileVersion>
68+
<Name>gcc/dev/atmega2560</Name>
69+
<SelectString></SelectString>
70+
<SourcePath></SourcePath>
71+
</d4p1:anyType>
72+
</Files>
73+
<PackName>ATmega_DFP</PackName>
74+
<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.3.300/Atmel.ATmega_DFP.pdsc</PackPath>
75+
<PackVersion>1.3.300</PackVersion>
76+
<PresentInProject>true</PresentInProject>
77+
<ReferenceConditionId>ATmega2560</ReferenceConditionId>
78+
<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
79+
<d4p1:string></d4p1:string>
80+
</RteComponents>
81+
<Status>Resolved</Status>
82+
<VersionMode>Fixed</VersionMode>
83+
<IsComponentInAtProject>true</IsComponentInAtProject>
84+
</ProjectComponent>
85+
</ProjectComponents>
86+
</Store>

0 commit comments

Comments
 (0)