Некоторое время назад я добыл себе энное количесство этих мк, и даже оф. борду. Однако ковыряния отложил по причине нехватки времени. Может они и не такие вкусные как stm32, но все же достаточно мощные и дешевые аки грязь. (Хочешь наводнить рынок какой-то простой фигней — это твой выбор, юзернейм).
Что в них хорошего:
- Дешево аки грязь от наших китайских братьев по разуму
- Шьется по последовательному порту
- Неплохой выбор переферии на борту
Что в них плохо:
- sdcc вместо gcc в виде компилятора (не то чтобы плохо, но некоторой магии по работе с секциями как в gcc мне не хватает )
- Стремная 8051 архитектура (Вот мамонт, и еще живой ведь!)
- Софт для прошива только под винду, написанный на (sic!) Visual Basic 6.
Так или иначе, я думал начать девелопить для них с использованием привычных средств (linux, sdcc, makefile’ы), а не предлагаемого мне стремного и патного Keil’а созданного для людей с задержками в развитии.
Для начала нужен официальный хедер, который внезапно подходит только к Keil’у. Чтобы заюзать его в sdcc придтся его обработать. Либо переписать, либо (путь ленивых) перлскрипт. Говорим спасибо ребятам делавшим sdcc, у них в support/scripts/keil2sdcc.pl есть такой скрипт. С запашком правда, но что есть то есть. Пришлось нарисовать для него патч и заслать в список рассылки
Если лениво патчить самостоятельно, можно взять готовый у меня на шитхабе
Далее я добавил поддержку sdcc/8051 в мою самопальную билдсистему проектов для мк ‘Antares’ (Это моя собственная ‘ардуйна для кернель хакеров’ с kconfig’ом и makefile’ами)
В общем, вот список других граблей, на которые пришлось наступить.
- На стоковой борде нет резюков на UART RX/TX линиях, соответственно мк может запитываться по ним, и это мешает войти в режим загрузчика. Добавить по 1k5 на RX и TX помогает
- Стоковый прошиватор неправильно читает .ihx выхлоп sdcc, packihx не помогает. Чтобы заработало надо сделать из .ihx .bin при помощи hex2bin.
- ISP софт НЕ работает под вайном. Оно запускается, даже шлет данные в уарт (т.е. я вижу это 0x7f сниффером), но оно не детектит uC. Моя догадка: Либо из-за бага в вайне выставляется не та четность/стоповые биты, Либо из-за жирной прослойки проблемы с задержками играют свою роль.
Над чем работаю:
- Над линуксовым прошивальщиком
Я давно выяснил кое что по поводу протокола, даже есть кое какие драфты, но релизить пока рано ибо не работает еще.
Ну а пока можно взять мой пример 8051 проекта для antares если извращение в виде сборке на линуксе и прошива на винде устраивает.
Более детальный Getting Started сделаю как дореверсю протокол.