A browser-based firmware programming utility for AT32 microcontrollers using Web Serial API.
- 🌐 Browser-Based - No installation required, runs entirely in your browser
- 📦 Single File Distribution - Built as a standalone HTML file for easy sharing
- 🔌 Web Serial API - Direct USB-TTL communication without drivers
- 📁 Multiple Format Support - Supports
.bin,.hex, and.elffirmware files - ⚡ Full Bootloader Control - Erase, program, and verify flash memory
- 🎨 Modern UI - Clean, responsive interface built with React and Tailwind CSS
Visit https://humpbacklab.github.io/AT32-WebISP/ to use the app directly in your browser - no download required!
- Download the latest
index.htmlfrom Releases - Open the file in a modern browser (Chrome or Edge recommended)
- Connect your AT32 device and start programming
# Clone the repository
git clone https://github.com/HumpbackLab/AT32-WebISP.git
cd AT32-WebISP
# Install dependencies
npm install
# Build single-file HTML
npm run build
# Output will be in dist/index.html-
Enter Bootloader Mode
- Connect BOOT0 pin to HIGH (3.3V)
- Reset the microcontroller
- The device will enter bootloader mode
-
USB-TTL Connection
- Connect USB-TTL adapter to your AT32's UART pins
- Common configurations: UART1 (PA9/PA10) or UART3
-
Connect Device
- Click "Connect Device" button
- Select the correct serial port from the browser dialog
- Default baud rate: 115200 (configurable)
-
Load Firmware
- Click "Select Firmware" and choose your file
- Supported formats:
.bin,.hex,.elf
-
Program Flash
- Full Chip Erase: Erase entire flash memory
- Write to Flash: Program the selected firmware
- Verify Flash: Verify written data matches firmware file
| Format | Description | Base Address |
|---|---|---|
.bin |
Raw binary | 0x08000000 (default) |
.hex |
Intel HEX | Extracted from file |
.elf |
ELF executable | Extracted from loadable segments |
This tool implements the AT32 UART bootloader protocol with the following commands:
0x00- Get Commands0x01- Get Version0x02- Get ID0x11- Read Memory0x21- Go (Execute)0x31- Write Memory0x44- Extended Erase0xAC- Firmware CRC
Requires a browser with Web Serial API support:
- ✅ Chrome 89+
- ✅ Edge 89+
- ✅ Opera 75+
- ❌ Firefox (not supported)
- ❌ Safari (not supported)
Note: HTTPS or localhost is required for Web Serial API access.
# Development server with hot reload
npm run dev
# Type checking
npm run lint
# Build for production
npm run buildAT32-WebISP/
├── src/
│ ├── App.tsx # Main application component
│ ├── main.tsx # Application entry point
│ ├── components/ # UI components
│ │ ├── Common.tsx # Reusable UI elements
│ │ └── LogViewer.tsx # System log viewer
│ ├── drivers/ # Protocol implementation
│ │ ├── AT32Protocol.ts # AT32 bootloader protocol
│ │ └── SerialInterface.ts # Web Serial API wrapper
│ └── utils/
│ └── FileParsers.ts # Firmware format parsers
├── .github/
│ └── workflows/
│ └── release.yml # CI/CD workflow
└── vite.config.ts # Build configuration
This project includes automated GitHub Actions workflow:
- Trigger: Push to
mainbranch - Actions:
- Build project as single HTML file
- Generate timestamped version tag
- Create GitHub Release with built file
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - feel free to use this project for any purpose.
- Built with React and Vite
- UI styled with Tailwind CSS
- Icons from Lucide React
- Single-file build powered by vite-plugin-singlefile
- Ensure BOOT0 is HIGH before resetting
- Check UART pin connections
- Verify baud rate matches bootloader configuration
- Reset the MCU and try reconnecting
- Confirm correct UART pins (usually UART1 or UART3)
- Try a different baud rate
- Use Chrome or Edge browser
- Access via HTTPS or localhost
- Grant serial port permissions when prompted
- AT32 Official Tools - Official ArteryTek programming tools
- stm32flash - Similar tool for STM32 via UART
Made with ❤️ for the embedded development community