8051 STC: Ковыряемся потихонечку

Некоторое время назад я добыл себе энное количесство этих мк, и даже оф. борду. Однако ковыряния отложил по причине нехватки времени. Может они и не такие вкусные как 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 сделаю как дореверсю протокол.

Добавить комментарий