inital dump
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -256,3 +256,4 @@ cython_debug/ | ||||
| # PyPI configuration file | ||||
| .pypirc | ||||
|  | ||||
| pyupdi-env/ | ||||
							
								
								
									
										37
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| cmake_minimum_required(VERSION 3.13) | ||||
|  | ||||
| # Project | ||||
| project(lezyne-rear-light-firmware C) | ||||
|  | ||||
| # MCU and clock | ||||
| set(MCU attiny202) | ||||
| set(F_CPU 5000000UL) # 5 MHz | ||||
|  | ||||
| # Toolchain executables | ||||
| set(CMAKE_SYSTEM_NAME Generic) | ||||
| set(CMAKE_C_COMPILER avr-gcc) | ||||
| set(OBJCOPY avr-objcopy) | ||||
|  | ||||
| # Compiler flags | ||||
| set(CMAKE_C_FLAGS "-mmcu=${MCU} -DF_CPU=${F_CPU} -Os -Wall") | ||||
|  | ||||
| # Sources | ||||
| add_executable(main.elf main.c) | ||||
|  | ||||
| # HEX file | ||||
| add_custom_command( | ||||
|     OUTPUT main.hex | ||||
|     COMMAND ${OBJCOPY} -O ihex -R .eeprom main.elf main.hex | ||||
|     DEPENDS main.elf | ||||
| ) | ||||
|  | ||||
| # BIN file | ||||
| add_custom_command( | ||||
|     OUTPUT main.bin | ||||
|     COMMAND ${OBJCOPY} -O binary -R .eeprom main.elf main.bin | ||||
|     DEPENDS main.elf | ||||
| ) | ||||
|  | ||||
| # Targets | ||||
| add_custom_target(hex ALL DEPENDS main.hex) | ||||
| add_custom_target(bin ALL DEPENDS main.bin) | ||||
							
								
								
									
										85
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										85
									
								
								README.md
									
									
									
									
									
								
							| @ -1,3 +1,86 @@ | ||||
| # lezyne-rear-light-firmware | ||||
|  | ||||
| Open firmware for Lezyne bike rear lights based on ATTINY202 | ||||
| Open firmware for Lezyne bike rear lights based on ATTINY202 | ||||
|  | ||||
| This repository contains a minimal firmware as a **C project** for the ATtiny202 microcontroller using **GCC**, **CMake**, and **VS Code**. It also includes instructions for programming the chip using an **FT232 USB-UART adapter** via the UPDI interface with `pymcuprog`.   | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Table of Contents | ||||
|  | ||||
| - [Dependencies](#dependencies) | ||||
| - [Setup Build Environment](#setup-build-environment) | ||||
| - [Building the Project](#building-the-project) | ||||
| - [Flashing the Firmware](#flashing-the-firmware) | ||||
| - [Reading Flash Content](#reading-flash-content) | ||||
| - [Hardware Setup](#hardware-setup) | ||||
| - [License](#license) | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## Dependencies | ||||
|  | ||||
| Ensure the following tools are installed on your system: | ||||
|  | ||||
| - **GCC AVR toolchain** (supports ATtiny 0/1-series)   | ||||
|   ```bash | ||||
|   sudo zypper install avr-gcc avr-libc | ||||
|     ``` | ||||
| - **CMake** | ||||
|   ```bash | ||||
|     sudo zypper install cmake | ||||
|     ``` | ||||
| - **Python 3, pip and venv** | ||||
|   ```bash | ||||
|     sudo zypper install python3 python3-pip python3-venv | ||||
|     ``` | ||||
| - **VS Code** (optional but recommended) | ||||
| - **CMake Tools extension** for VS Code | ||||
|  | ||||
| ## Setup Build Environment | ||||
| 1. Clone the repository: | ||||
|    ```bash | ||||
|     git clone https://git.mosad.xyz/localhorst/lezyne-rear-light-firmware | ||||
|     cd lezyne-rear-light-firmware | ||||
|     ``` | ||||
| 2. Configure the CMake project: | ||||
|     - Open the folder in VS Code. | ||||
|     - Select the AVR-GCC kit in the bottom blue bar. | ||||
|     - Run CMake: Configure (from command palette) if it doesn't auto-run. | ||||
|  | ||||
| ## Building the Project | ||||
| 1. Press F7 or Ctrl+Shift+B to build. | ||||
| 2. Output files are generated in the 'build/' folder: | ||||
| - main.elf → ELF executable | ||||
| - main.hex → HEX file (flashable) | ||||
| - main.bin → BIN file | ||||
|  | ||||
| ## Flashing the Firmware | ||||
| Hardware: FT232 USB-UART adapter connected to UPDI with a 4.7 kΩ resistor. | ||||
| 1. Create and activate a Python virtual environment: | ||||
|    ```bash | ||||
|     python3 -m venv pyupdi-env | ||||
|     source pyupdi-env/bin/activate | ||||
|     ``` | ||||
| 2. Install pymcuprog inside the environment: | ||||
|    ```bash | ||||
|     pip install pymcuprog | ||||
|    ``` | ||||
| 3. Verify installation: | ||||
|    ```bash | ||||
|     pymcuprog --version | ||||
|    ``` | ||||
| 4. Flash using pymcuprog: | ||||
|    ```bash | ||||
|     pymcuprog -t uart -u /dev/ttyUSB0 -d attiny202 write -f build/main.hex | ||||
|    ``` | ||||
| ## Hardware Setup (FT232 → ATtiny202 UPDI) | ||||
|    ```bash | ||||
|     FT232 TX ----[4.7kΩ]---- UPDI (pin 6) | ||||
|     FT232 GND --------------- GND | ||||
|     VCC -------------------- VCC (3.3V or 5V, must match FT232 logic) | ||||
|    ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
| This project is licensed under the MIT License. See [LICENSE](./LICENSE) for details. | ||||
		Reference in New Issue
	
	Block a user