LuatOS и опыты над W806

Статьи камрада finskiy сподвигли меня приобрести сабжевый девайс и заняться его исследованием.
Общее впечатление — весьма неплохой и круто нафаршированный микроконтроллер за смешную цену, но с минимумом бэкграунда и примеров…

Дальнейшее углубление в тему вывело меня на другой девайс — Air103, распространенный среди китайских радиолюбителей. Уж не знаю, то ли его ядро на 100% идентично ядру W806, то ли только на 95%. Но факт есть факт — софт, наработанный китайцами для Air103 идет и на 806-м.
Air103 pinout
Следом за Air103 нагуглилось еще одно ключевое слово — LuatOS. Как несложно догадаться, это интерпретатор языка Lua, зашиваемый в микроконтроллер.
Был найден интересный сайт — wiki.luatos.com/ (сайт на китайском, но с помощью Хрома легко и без артефактов переводится на инглиш (можно и на русский, но я уже привык к технической литературе на высше-эльфийском).

Вот здесь можно скачать скомпилированный LuatOS для Air103 (в архиве — три варианта прошивки, но нам понадобится самая скромная, без сетевых приблуд, которых нет. А также там неплохой набор примеров на языке Lua — чего в нем только нет! И работа с криптографией, и многозадачность… В общем, намного больше, чем в сишном SDK.

Но я зашел с другого бока: выкачал с гита два проекта, сам LuatOS и файлы для сборки под Air101. У этой платы немного другой проц — он меньше по габаритам, имеет меньше выводов но зато содержит на борту в два раза больше флэша!

git clone https://gitee.com/openLuat/LuatOS.git
git clone https://gitee.com/openLuat/luatos-soc-air101.git

Далее установил xmake (https://github.com/xmake-io/xmake/releases), ну а 7-zip и так был установлен.
Залез в файл app/port/luat_conf_bsp.h второго проекта и поменял там значение air101 на air103.
Запустил сборку проекта из xmake (компилятор выкачался и установился автоматом), и через некоторое время получил ошибку — образ не влезает в имеющуюся в устройстве память! Аж 700+ кб перебор…
Стал разглядывать luat_conf_bsp.h пристальнее, вернул настройку на air101. Проект собрался и занял почти 1800 Кб. Нда…
Оказалось, что весь этот конфиг состоит из опций, и каждую можно отключить, закомментировав. Что я и сделал: накой мне, спрашивается, куча китайских шрифтов в прошивке или либка lvgl, предназначенная для рисования на пиксельных ЖК-дисплейчиках?
В общем, в несколько итераций удалось упихать интертрепатор в вожделенный мегабайт.
Собранная прошивка обнаружилась в папке build/out.

Следующим шагом надо выкачать прошивальщик: luatos.com/luatools/download/last
Он, как водится, полукитайский. Можно в опчиях выбрать английский язык, но все равно половина кнопок останется с иероглифами. Подозреваю, что хитрые азиаты делают это спецом, чтобы меньше бледнолицых составляло им конкуренцию на их собственном поле)
lua tool
Тут надо подоткнуть нашу плату, убедиться что порт определился, выбрать его, поставить нестандартное значение скорости — 921600, установить средний чекбокс с иегорлифами (как на картинке) и можно прошивать. Первая кнопка со стрелкой открывает окно прошивки только бинарника. Для прошивки бинарника необходимо нажать на кнопку сброса.

Вторая — окно прошивки бинарника и/или lua-кода. А вот скрипты заливаются уже без нажатия на сброс…

В верхнем поле — добавляется бинарник. В центре — добавляются скрипты верхней иероглифической кнопкой.
Ну а «Download only script» понятно и без перевода.
Зашил скрипт pwm/air101/main.lua — и вот плата медленно-медленно заморгала синим светодиодиком)

Winner Micro W806 - I2C.


Продолжаем трогать за регистры китайский микроконтроллер W806. В этой заметке найдем еще одну неточность в RM и разберемся с работой модуля I2C.


Читать дальше

W806 - GPIO и таймеры. часть 2.

В этом эпизоде рассмотрим работу внешних прерываний, прикрутим к процессору инфракрасный приемник, а также попробуем изобразить извращенский софтовый ШИМ на таймерах.
Прикинув, как на практике изобразить работу внешних прерываний, решил подружить W806 с инфракрасным приемником TSOP и помигать светодиодиками при помощи пульта ДУ. Т.к. абсолютное большинство пультов в моем доме работают по протоколу NEC, то его декодирование и будем реализовывать. Вернее, портировать алгоритм, который отлично себя показал в работе на контроллерах STM8. Интересности — под катом.


Читать дальше

W806 - GPIO и таймеры. часть 1.

Продолжаем знакомство с китайским микроконтроллером Winner Micro W806. А с чего обычно эмбеддер начинает осваивать новый для него микроконтроллер? Правильно, мигает светодиодиком. Не будем нарушать эту славную традицию. На отладочной плате распаяны три синих светодиода, подключенные к выводам PB0 — PB2. Писать будем без использования HAL, напрямую в регистры.
Кому интересно — приглашаю под кат.


Читать дальше

Winner Micro W806 - краткий обзор.

С недавних пор на одной интернет-барахолке начали появляться в продаже отладочные платы на микроконтролллере W806, от компании Winner Micro. В заголовке и описании товара иногда указано «W806 микроконтроллер 240 МГц 5-8Bit STM32 макетная плата CH340 IoT MCU чип CDK окружающая среда низкая мощность IOT». Но все мы знаем хитрых продавцов на Али — напишут что угодно, лишь бы продать. Вот и я заинтересовался этой платой, и как только она была доставлена, с головой окунулся в reference manual (RM) на этот продукт. Давайте же разбираться, что в этом чипе интересного, каким боком тут STM32, и станет ли он «убийцей blue pill» или же его судбьа — немногие любительские самоделки.


Читать дальше