Pull to refresh
0
0
Send message

Встраиваем Lua интерпретатор в проект для микроконтроллера (stm32)

Reading time11 min
Views16K


В достаточно крупных приложениях немалую часть проекта составляет бизнес-логика. Эту часть программы удобно отлаживать на компьютере, после чего встраивать в состав проекта для микроконтроллера, ожидая, что эта часть будет выполняться в точности так, как было задумано без какой-либо отладки (идеальный случай).

Так как большинство программ для микроконтроллеров пишется на С/C++, то для этих целей обычно используют абстрактные классы, предоставляющие интерфейсы к низкоуровневым сущностям (в случае, если проект пишется только с использованием C, то зачастую используются структуры указателей на функции). Данный подход предоставляет требуемый уровень абстракции над железом, однако чреват надобностью в постоянной повторной компиляции проекта с последующим программированием энергонезависимой памяти микроконтроллера бинарным файлом прошивки большого объема.

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

В качестве скриптового языка я выбрал Lua.
Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments44

Делаем процесс разработки тяжеловесного программного обеспечения под микроконтроллеры более удобным (нет)

Reading time18 min
Views10K
Сейчас уже никого не удивить микроконтроллерами с энергонезависимой (чаще всего Flash) памятью объемом 512 килобайт и более. Их стоимость постепенно снижается, а доступность напротив, растет. Наличие такого объема энергонезависимой памяти дает возможность писать «тяжелые» по объему занимаемой памяти приложения, облегчая при этом последующее сопровождение кода за счет использования готовых решений из различных стандартных библиотек. Однако это ведет к росту объема файла прошивки целевого устройства, который требуется каждый раз целиком заново загружать в энергонезависимую память микроконтроллера при малейшем изменении в коде.

Цель статьи — рассказать о методе построения проекта на C и/или C++, при котором, в случае изменения участка кода, отладка которого производится чаще всего, большая часть проекта не нуждалась в повторной перезаписи. А так же показать, почему данный метод не всегда является эффективным решением.
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments13

Путешествие через вычислительный конвейер процессора

Reading time16 min
Views133K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

Программы обычно работают с процессором, как с чёрным ящиком. Инструкции входят и выходят из него по порядку, а внутри совершается некая вычислительная магия.

Программисту полезно знать, что происходит внутри этого ящика, особенно, если он будет заниматься оптимизацией программ. Если вы не знаете какие процессы протекают внутри процессора, как вы сможете оптимизировать под него?

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →
Total votes 160: ↑159 and ↓1+158
Comments43

Прерывания в конвейеризированных процессорах

Reading time10 min
Views75K
Наверняка вы знаете, что такое прерывания. Возможно, даже интересовались устройством процессора. Почти наверняка вы нигде не видели внятный рассказ про то, как именно процессор обнаруживает прерывание, переходит к обработчику и, самое главное, возвращается из него именно туда, куда положено.

Я писал эту статью год. Изначально она была рассчитана на хардварщиков. Понимание того, что я ее никогда не закончу, а также жажда славы и желание, чтобы ее прочло больше десяти человек, заставило меня адаптировать ее для относительно широкой аудитории, повыкидывав схемы, куски кода на Верилоге и километры временных диаграмм.

Если когда-нибудь вы задумывались над тем, что значат слова «the processor supports precise aborts» в даташите, прошу под кат.
Читать дальше →
Total votes 154: ↑153 and ↓1+152
Comments25

Виртуальные машины и микроконтроллеры

Reading time5 min
Views21K
Разрабатывая разные устройства, очень часто получаешь проблему: алгоритм от устройства к устройству местами повторяется, а сами устройства полностью разные. У меня три разрабатываемых устройства, которые местами повторяют функционал друг друга, в них используются три разных процессора (три разные архитектуры), но алгоритм один. Чтобы хоть как-то все унифицировать, было задумано написать минимальную виртуальную машину.


Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments11

Мир, в котором IPv6 придуман хорошо

Reading time19 min
Views35K
Перевод статьи Avery Pennarun, одного из сотрудников Google, о том, почему современный интернет такой, какой он есть, об истории и предпосылках создания IPv6, а также о том, как был бы устроен идеальный протокол IPv6, почему это не так и как можно к этому идеалу приблизиться.
Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments59

Простой внутрисхемный программатор ARM микроконтроллеров серии LPC своими руками. Схемотехника. Часть первая

Reading time2 min
Views72K
В последнее время, как среди профессиональных разработчиков, так и в рядах начинающих электронщиков широкое распространение получили ARM микроконтроллеры. Очень большой популярностью пользуются разработки фирмы NXP. Эта фирма производит огромный спектр изделий – от дешёвых и малопотребляющих до высокопроизводительных, поддерживающих такие интерфейсы как USB и Ethernet.
Подробности
Total votes 11: ↑10 and ↓1+9
Comments3

Как устроена смарт-карта

Reading time3 min
Views34K
Долгое время работая со смарт-картами, я сам имел не очень чёткое представление об их внутренностях. Вот получив некий документ, описывающий структуру и схему работы смарт-карты делюсь этой информацией.
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments59

CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5

Reading time4 min
Views254K
Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.

Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).

Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.

Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments13

Web-аутентификация с помощью USB-токенов

Reading time2 min
Views26K
Развивая тему, начатую здесь и здесь, расскажу еще об одном механизме аутентификации на web-ресурсах. Механизм прост, в его основе лежит использование ЭЦП, для хранения ключей при этом используется USB-токен.

image
Читать дальше →
Total votes 41: ↑35 and ↓6+29
Comments48

Разработчики из Google предложили консорциуму WWW черновик WebUSB — протокола для работы USB-устройств с веб-страницами

Reading time2 min
Views18K
image Два разработчика Google, Рейли Грант и Кен Рокот, представили международному консорциуму WWW (World Wide Web) черновик проекта WebUSB — протокола для работы USB-устройств в интернете, в котором описывается взаимодействие USB-совместимых устройств и веб-страниц.

Проект WebUSB был опубликован еще 21 марта и описывает API, с помощью которого будет обеспечиваться безопасное соединение USB-устройств и веб-служб. Данный протокол не будет затрагивать работу USB-накопителей, но по задумке авторов регламентирует взаимодействие с сетью всей прочей USB-периферии, такой как мыши, клавиатуры, камеры etc.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments50

Исходный код эксплойта для «неустранимой» уязвимости в USB-устройствах опубликован на GitHub

Reading time2 min
Views53K
Думаю, пару месяцев назад многие слышали из новостей про уязвимость в USB-контроллерах, которая может превратить любое периферийное устройство, подключаемое по usb, в инструмент кибершпионажа. В англоязычной компьютерной прессе эта проблема получила название «BadUSB». Первым о ней сообщил Карстен Нол (Karsten Nohl), секьюрити-эксперт и исследователь из берлинской компании SR Labs на конференции BlackHat USA. Из-за серьезности проблемы и опасений, что уязвимость сложно устранить, Нол не стал публиковать эксплойт, пытаясь дать время вендорам на ее устранение.

С тех пор прошло 2 месяца и все уже напрочь забыли о «плохом юэсби», пока неделю назад, уже на другой хакерской конфе — Derbycon — не выступили еще двое исследователей: Адам Кадилл и Брэндон Уилсон (Adam Caudill, Brandon Wilson).
Читать дальше →
Total votes 65: ↑56 and ↓9+47
Comments63

Введение в разработку USB периферии

Reading time4 min
Views49K
Последние полгода я участвую в разработке первого в своей жизни USB-устройства и прикладного ПО к нему, и сейчас хочу поделиться своим пониманием того, как там всё работает: микроконтроллер, драйвер, прикладное ПО. Также затрону вопрос о выборе идентификаторов VID/PID. Список полезных ссылок для желающих более подробно разобраться в теме прилагается.
Читать дальше →
Total votes 103: ↑103 and ↓0+103
Comments109

Information

Rating
Does not participate
Registered
Activity