Ну что, было весело, и я могу похвастаться первым работающим релизом stcdude.
stcdude это опенсорсная ISP утилита для прошивки микроконтроллеров STC. Долгожданная замена упоротой софтине от китаез написанной на VB6.
так что теперь можно комфортно работать используя привычные инструменты: sdcc и make.
Не ожидайте многого, некоторые части поа еще сырые. Так что внутри?
Хорошее
- Скриптинг процесса на lua, просто расширять и добавлять новые последовательности прошива.
- Автодетект мк и матчинг по базе данных с получением ценной информации
- Для поддерживаемых серий выводит iram/xram/irom размеры, описание, рабочую частоту и версию ISP бутлоадыря. Прям как штатный ISP Tool.
Плохое:
Так как то, как считается из частоты кварца баудрейт и передается пакетом для переключения — тайна, там захардкожен пакет на 12 Mhz кварц. Соответтвенно с другими частотами оно работать не будет.Рассчет баудрейта добавлен в транк, пока экспериментально, работают не все комбинации баудрейт/частота, 3 байта до сих пор загадка- Выставление опций мк пока еще не работает, ровно как нет и вменяемого парсера этих самых опций
- Последнюю команду ‘encrypt’ я выкинул в реактор. Один хрен не понятно, что она делает (лок флеша?), работает и без нее.
Уродливое:
- Уйма варнингов при сборке, которые предстоит прихлопнуть.
- Местами быдлокод
TODO:
- Номральный рассчет баудрета!11
- Больше серий stc, хороших и разных
- Запилить парсер опций
Сборка и установка. Как и все проекты на автолулзах:
git clone git://github.com/nekromant/stcdude.git cd stcdude autoreconf --install --force ./configure make sudo make install
Примерный выхлоп:
[necromant@ilwyn stcmake]$ sudo make stcdude stcdude -p "/dev/ttyUSB0" \ -b 1200:57600 \ -a wflash -f main.bin STC ISP Tool. (c) Necromant 2012 lines 66 columns 271 Loading lua script: /usr/local/share/stcdude/lua/init.lua Using /dev/ttyUSB0 @ 1200 fd is 3 Running sequence wflash Trying mcudb stc10fx.lua Trying mcudb stc12x.lua MCU DB information Part name: STC12C5A60S2 Magic bytes: D17E IRAM size: 256 (0x100) bytes XRAM size: 1024 (0x400) bytes IROM size: 61440 (0xf000) bytes Tested ops: FixMe: implement reading of tested ops Description: 8051-based microcontroller with 1T(1-clock) High-Speed Core, Dual DPTR, 36-44 I/O Lines, 2 Timers/Counters, 2 PCA Timers, Alternative build-in oscillator, Independent Baud Rate Generator, Programmable Clock-Out, 60K bytes flash ROM, 1280 bytes data RAM, On-chip EEPROM, 2 UARTs, WDT, ISP/IAP, A/D, CCP/PWMl MCU Options information: MCU Clock: 12.039340 Mhz (5827.375000 raw) Bootloader version: 6.2I Performing baudswitch dance Baudrate switch to 57600 Baudrate switch to 1200 Baudrate switch to 57600 Erasing mcu flash... Downloading main.bin (1889 bytes) 100 % done | #####################################################| 1 K
А теперь дополнительное добро. Для тебя, Нео, есть две таблЭтки:
Синяя: Простой проект мигания диодом на мейке
Красная: Пример проекта под Antares