Рубрика «программирование микроконтроллеров»

Операционные системы с нуля; уровень 2 (старшая половина) - 1 Пришло время написать файловую систему. Файловая система сама себя не напишет. В этой половинке лабы мы таки реализуем файловую систему FAT32, прикрутим к ней драйвер SD-карты и чуть-чуть повзаимодействуем с ней через нашу интерактивную оболочку.

Нулевая лаба

Первая лаба: младшая половина и старшая половина

Младшая часть. Продолжение под катом.

Читать полностью »

OpenHab – популярный сервер «умного дома» (или IoT, как сейчас модно говорить) и уже обозревался на Хабре. Тем не менее, документации по отдельным аспектам настройки сервера не так много, как хотелось бы. А на русском её, считай что и нет.

Важной особенностью OpenHab является модульность. Сам по себе сервер обеспечивает базовые функции (даже без какого бы то ни было UI). Весь остальной функционал предоставляется плагинами. Одним из типов плагинов является persistence – предоставление возможности хранить историю значения для айтемов (параметров устройств). Это необходимо для отображения исторических данных (графики) и восстановления состояния айтемов при рестарте сервера.

Существующие плагины позволяют использовать для хранения все популярные БД. Я же расскажу про настройку очень интересного бекэнда – rrd4j. Это высокопроизводительное хранилище для данных, которые представляют собой ряды значений, привязанных ко времени. Автор вдохновлялся набором RRDTools, но переписал его функционал на Java (OpenHab тоже написан на Java), оптимизировал и расширил функционал. Файлы хранилищ rrd4j не совместимы с файлами RRDTools.
Читать полностью »

image

Отладка многозадачных программ дело не простое, особенно если ты сталкиваешься с этим впервые. После того, как прошла радость от запуска первой задачи или первой демо программы, от бесконечно волнительного наблюдения за светодиодами, каждый из которых моргает в своей собственной задаче, наступает время, когда ты осознаешь, что довольно мало понимаешь (вообще не врубаешься) о том, что на самом деле происходит. Классика жанра: «Я выделил целых 3КБ операционной системе и запустил всего 3 задачи со стеком по 128Б, а на четвертую уже почему-то не хватает памяти» или «А сколько вообще стека я должен выделить задаче? Столько достаточно? А столько?». Многие решают данные задачи путем проб и ошибок, поэтому в этой статье я решила объединить большинство моментов, которые, в настоящее время, значительно упрощают мне жизнь и позволяют более осознанно отлаживать многопоточные программы на базе FreeRTOS.

Данная статья рассчитана, в первую очередь, на тех, кто только недавно начал осваивать FreeRTOS, однако вполне вероятно, что и хорошо знакомые с этой операционной системой читатели найдут для себя здесь что-то интересное. Кроме того, несмотря на то, что статья ориентирована на разработчиков встраиваемого ПО, прикладным программистам она тоже будет интересна, т.к. много слов будет сказано о FreeRTOS как таковой, безотносительно микроконтроллерной романтики.

В данной статье я расскажу о следующих моментах:

  1. Настройка OpenOCD для работы с FreeRTOS.
  2. Не забываем включать хуки.
  3. Статическое или динамическое выделение памяти?
  4. Сказ, о параметре configMINIMAL_STACK_SIZE.
  5. Мониторинг использования ресурсов.

Читать полностью »

Исследования — это неотъемлемая часть моего рабочего процесса. Я исследую ПО, исходные коды, ОС, железки — все, до чего дотянутся руки (ну или руки начальства, тут как повезет). Но не все исследования проводятся по заказу, иногда что-то просто делаешь для души (что, наша компания в общем-то поощряет). Это исследование началось с разговора о шифровании, а закончилось обходом DLP и выносом данных за контролируемый периметр.

Я очень не люблю DLP-системы. Моя неприязнь основана на маркетинговой стратегии продуктов, представляющих свои решения в виде этакой «серебряной пули», которая может предотвратить все утечки данных в любой компании. Не может. По моему мнению, реально DLP помогает в 2 случаях — предотвратить утечку данных из-за кривых рук (типа отправки платежных данных вместо ali@domain.mail на all@domain.mail) и помочь провести расследование, кто же унес данные (постфактум, естественно). Я изначально был уверен, что специалист, владеющий достаточными знаниями о Windows, например, сможет преодолеть почти любые фильтры. А мотивированный инсайдер сможет найти такого специалиста и обучиться нескольким трюкам. Но проверять разные трюки на конкретных комплексах довольно скучно, поэтому надо было придумать, как разом обойти их все.

Клавиатура — устройство вывода? - 1

Читать полностью »

Операционные системы с нуля; уровень 2 (младшая половина) - 1 В этой части мы напишем менеджер памяти для того, чтоб разблокировать использование Vec, String, HashMap и всего этого. Сразу после этого реализуем файловую систему FAT32 и подключим драйвер для EMMC (такая штука для общения с SD-карточками). В конце концов в нашей командной оболочке появятся пара новых команд: cd, pwd, cat, ls.

Нулевая лаба

Первая лаба: младшая половина и старшая половина

Читать полностью »

Введение

Возможность получения действительной информации о состоянии реальных объектов в реальном масштабе времени позволяет обоснованно приступать к следующему этапу анализа и синтеза систем – математическому моделированию динамических характеристик объектов управления.

В данной публикации рассматривается доступный в реализации проект системы измерения технологического параметра – температуры, с дистанционной передачей сигнала в вычислительную среду для дальнейшей обработки измерительной информации.

В основу данного проекта положены аппаратные средства для прототипирования на базе платформы Arduino со множеством совместимых с ними модулей и свободных программных средств Python, образующих интегрированную среду разработки Arduino Software.

Читать полностью »

Операционные системы с нуля; Уровень 1 (старшая половина) - 1 Настало время следующей части. Это вторая половина перевода лабы №1. В этом выпуске мы будем писать драйверы периферии (таймер, GPIO, UART), реализуем протокол XMODEM и одну утилитку. Используя всё это мы напишем командную оболочку для нашего ядра и загрузчик, который позволит нам не тыкать microSD-карточку туда-сюда.

Младшая половина.
Начинать чтение стоит с нулевой лабы.

Читать полностью »

Чуть меньше полугода назад сделал сыну на день рождения подарок — конструктор Xiaomi MITU. Неожиданно для меня ребенок на неделю завис в этом конструкторе. Когда были испробованы первые модели и их управление с планшета, возник закономерный вопрос — «А как для него писать программы?»

image
Читать полностью »

О портировании проекта MIPSfpga - 1

Перенос программного обеспечения с одной компьютерной архитектуры на другую в принципе, с некоторыми оговорками, дело относительно простое. Здесь на помощь приходят такие общеизвестные инструменты, как autoconf / automake/ libtool / gnulib. Собрать программу из исходников на каком нибудь Raspberry/ARM бывает так же просто, как и на ПК с Ubuntu/x86-64.

А вот как заставить проект ПЛИС разработанный для одной платы работать на другой плате? Там и сама ПЛИС может быть другой и на плате совершенно другие компоненты могут стоять. Простой перекомпиляцией проекта не обойтись.

Расскажу о своем опыте портирования проекта MIPSfpga для платы Марсоход3 с ПЛИС MAX10 Intel. Статьи о проекте MIPSfpga неоднократно появлялись на хабре. Они были так интересны, что мне захотелось и самому попробовать этот проект в имеющейся у меня плате. В своей работе я опирался на хабровские статьи

И многие другие…

Итак, что нужно сделать, чтобы портировать проект ПЛИС на другую плату?Читать полностью »

Операционные системы с нуля; Уровень 1 (младшая половина) - 1 Эта часть посвящена улучшению навыков работы с Rust и написанию парочки полезных утилиток и библиотек. Напишем драйверы для GPIO, UART и встроенного таймера. Реализуем протокол XMODEM. Используя это всё, напишем простенький шелл и загрузчик. Перед прочтением настоятельно рекомендуется убедиться в прочтении Книги. По крайней мере от начала и до конца. Для ленивых, но чуть более опытных можно рекомендовать это. На русском можно поковырять вот тут.

Ну и разумеется обходить стороной нулевой уровень совершенно не стоит. Алсо где-то половина этой части не требует малинки.

Читать полностью »