Как стать автором
Поиск
Написать публикацию
Обновить
69.73

Системное программирование *

Обеспечение работы прикладного ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Моделируем поведение Quartus-проекта на Verilog в среде ModelSim

Время на прочтение10 мин
Количество просмотров11K
В прошлой статье мы сделали достаточно сложный модуль. Разумеется, я вставил в тело статьи уже отлаженный результат. Но мне показалось, что достаточно странно, когда автор говорит «делай, как я», но при этом не показывает очень важного процесса. Давайте я покажу, как вообще проводится отладка системы путём моделирования. Причём в следующей статье будут содержаться сведения, которые ещё неделю назад не знал даже я. Но, чтобы перейти к ним, надо разобраться с базовыми принципами. Итак. Давайте рассмотрим, как быстро подготовить и не менее быстро запустить процесс моделирования в среде ModelSim.


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

Издатель/подписчик для распределённых отказоустойчивых бортовых систем реального времени в 1500 строк кода

Время на прочтение31 мин
Количество просмотров18K

Сап, котятки.


Я пришёл рассказать о проекте UAVCAN — новом сетевом стандарте для организации взаимодействия узлов и компонентов современных транспортных средств с высоким уровнем автономности/автоматизации. Название является акронимом от Uncomplicated Application-level Vehicular Computing And Networking (несложные бортовые сети и коммуникации уровня приложения).


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



Конъюнктура


Первый блин проекта был заложен в 2014-м. С самого начала это был эксперимент в минимализме: возможно ли в разработке сложных распределённых бортовых систем опираться на мощные абстракции, избегая при этом роста сложности реализации и связанных с ним трудностей валидации и верификации.


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

Ну и что?

Мир без DevOps. Каким бы он был?

Время на прочтение2 мин
Количество просмотров4.8K

Вспомним классику.


Разработчики с трудом выкатывают фичи раз в год. Зато админы довольны и радостны — им больше не нужно уходить с работы, они теперь работают круглосуточно, и руководство их ласково называет «нянечки для разрабов». Технологии начинают откатываться. Отладка требует сотни передач из отдела в отдел — все с огромным энтузиазмом перекидывают друг другу дохлую свинью через забор. Даже свинья улыбается. Долгое ожидание сервера под проект — запросил сервер, получил посмертно, за заслуги перед компанией. Баги в продакшене с полной уверенностью рассчитывают увидеть XXII век. SLA 50% и седые до прозрачной белизны владельцы бизнеса. Упал сервис — не проблема, подождём часок или два, пока поднимется. Универсальные инженеры на грани психоза — на столе у каждого по две полупустых баночки бензодиазепиновых транквилизаторов и пачка SSRI-антидепрессантов.


Вздрогнули? И с лёгким сердцем обратно в нормальный мир, где есть DevOps-философия и DevOps-инструменты, как часть неё.


19-21 августа пройдёт онлайн-интенсив Слёрм DevOps: Tools&Cheats. Мы покажем IDDQD из мира DevOps.



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

И снова о Legacy. Вечная боль техдира

Время на прочтение10 мин
Количество просмотров28K

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


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


Техдир пришёл к ним, поздоровался и спросил: «Ребята, скажите честно, какой аццкий зверь меня ждёт в этом проекте? Потому что стейкхолдеры рассказали только о единорогах с радужными хвостами и розовых пони? Legacy, да?»


«Legacy, ...», — грустно ответили разработчики.


Сказка закончилась. Началась работа — и непростые решения.


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

Что такое LLVM и зачем он нужен?

Время на прочтение9 мин
Количество просмотров102K

Всем привет! Думаю, у многих сразу возник другой вопрос — а зачем вообще нужна ещё одна статья про LLVM, ведь на хабре их и так больше сотни? Моей задачей было написать "введение в тему" for the rest of us — профессиональных разработчиков, не планирующих создавать компиляторы и совершенно не интересующихся особенностями устройства LLVM IR. Насколько я знаю, подобного ещё не было.


Главное, что интересует практически всех — и о чём я планирую рассказать — вынесено в заголовок статьи. Зачем нужен LLVM, когда есть GCC и Visual C++? А если вы не программируете на C++, вам стоит беспокоиться? И вообще, LLVM это Clang? Или нет? И что эти четыре буквы на самом деле означают?

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

Rust 1.45.0: стабилизация функциональных процедурных макросов, исправление дефектов преобразования

Время на прочтение5 мин
Количество просмотров6.6K

Команда Rust рада сообщить о выпуске новой версии, 1.45.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.45.0 вам достаточно выполнить следующую команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть на GitHub.


Что вошло в стабильную версию 1.45.0


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

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

Делаем голову шинного USB-анализатора на базе комплекса Redd

Время на прочтение14 мин
Количество просмотров5.5K
В прошлой паре статей мы рассмотрели пример «прошивки» для комплекса Redd, делающей его ПЛИСовую часть логическим анализатором общего применения. Дальше у меня было желание сделать следующий шаг и превратить его в шинный USB-анализатор. Дело в том, что фирменные анализаторы такого вида очень дорогие, а мне необходимо провести проверку, почему одна и та же USB поделка, если её подключить к машине, работает, а если включить машину, когда всё уже воткнуто в разъём, не работает. То есть, программные анализаторы тут не справятся. По мере написания я как-то увлёкся и написал блок из пяти статей. Теперь можно сказать, что в них показан не только сам анализатор, но и типовой процесс его создания в режиме «на скорую руку». В статье будет показано, как сделать такой анализатор не только на базе Redd, но и на готовых макетных платах, которые можно приобрести на Ali Express.


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

Интеграция в проект LVGL графической библиотеки для микроконтроллеров

Время на прочтение4 мин
Количество просмотров42K
LVGL — Light and Versatile Graphics Library также известная как LittleVGL.


Библиотека поддерживает большое количество микроконтроллеров, таких как STM32, ESP32 и другие. Мне пока удалось запустить полноценную демо программу на ESP32 и STM32f429 Discovery. Библиотека открытая, поддерживает большое количество графических элементов с Dark and Light темами. Распространяется под MIT license. Можно свободно использовать даже в коммерческих продуктах. Можно посмотреть интерактивное Online Demo без установки на устройство

Очередная книга про разработку операционных систем

Время на прочтение4 мин
Количество просмотров15K
image

Приветствую!

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

Всё это время я также наблюдал на разных ресурсах посты о «разработке ОС», которые в основном сводились к выводу «hello world» в QEMU, и сетовал на то, что не нужно путать ОС и «программу, которая может работать на голом железе». ОС это совсем не про работу на железе, это, в первую очередь, про синхронизацию и все такое прочее.
Читать дальше →

Разработка логического анализатора на базе Redd – проверяем его работу на практике

Время на прочтение11 мин
Количество просмотров2.6K
В прошлой статье мы сделали аппаратуру, реализующую логический анализатор на базе комплекса Redd. Статья разрослась так, что рассмотрение программной поддержки мы отложили на потом. Пришла пора разобраться с тем, как мы будем получать и отображать данные, которые анализатор копит в ОЗУ.


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

Вышел Windows Terminal Preview 1.1

Время на прочтение3 мин
Количество просмотров8.6K
Представляем первое обновление Windows Terminal Preview! Вы можете загрузить Windows Terminal Preview из Microsoft Store или со страницы выпусков на GitHub. Представленные функции будут перенесены в Windows Terminal в июле 2020 года.

Заглядывайте под кат, чтобы узнать, что нового!

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

rpm-gpg-repository-mirroring — Скрипт для скачивания RPM из репозиториев, для которых нельзя сделать yum proxy в Nexus

Время на прочтение7 мин
Количество просмотров3.5K

В некоторых организациях с серверов нет доступа в интернет. В таких случаях делают зеркала основных репозиториев.


Но что делать, если доступ с серверов ограничен, а нужные rpm пакеты нужно установить? Обычно используют reposync или скачивают руками и делают локальный репозиторий.
Также можно добавить репозиторий, который будет ходить в интернет через прокси сервер. На прокcи сервер может быть большая нагрузка.


Но можно использовать скрипт rpm-gpg-repository-mirroring, который скачает нужные rpm пакеты и сделает локальное зеркало.

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

Владимир Китов: «Невозможно понять, как ученые-первопроходцы предвидели всеобщую компьютеризацию еще в 1950-х!»

Время на прочтение14 мин
Количество просмотров9K


Владимир Китов, работающий с ИТ более полувека, возглавлял команды программистов в ГВЦ Минморфлота СССР и ЦНИИ «Монолит», руководил разработкой ПО для международной системы космического спасения КОСПАС-SARSAT и созданием мультитерминального монитора для ЕС ЭВМ. Он работал топ-менеджером в компаниях DEC, SIEMENS, «Техносерв», IBS, Fujitsu, написал учебник по системному программированию и несколько монографий, а теперь занимается историей информатики.

В продолжении интервью Владимир Китов вспоминает своего отца Анатолия Ивановича и других выдающихся советских ученых, объясняет, почему история автоматизированных систем управления — заметная часть истории страны, рассказывает о работе для сельского хозяйства в Институте кибернетики на рубеже 1980-1990-х.
Читать дальше →

Ближайшие события

Разработка простейшего логического анализатора на базе комплекса Redd

Время на прочтение14 мин
Количество просмотров5.7K
В прошлой статье цикла мы потренировались сохранять данные из потокового интерфейса в память средствами DMA. Пришла пора сделать какую-то полезную поделку, используя полученные навыки. Очень полезная при удалённой отладке вещь — анализатор. Вообще, при работе с комплексом скорее нужны специализированные шинные анализаторы, но начинать лучше с чего-то попроще. Поэтому сейчас мы сделаем простейший логический анализатор на 32 канала. Понятно, что он будет совсем-совсем примитивным, но зато мы сделаем его своими руками. У кого ещё нет комплекса Redd, могут повторить опыт, используя любую макетную плату с ПЛИС фирмы Altera (Intel) и микросхемой ОЗУ. Итак, приступаем.


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

Microsoft: Rust является 'лучшим шансом' в отрасли программирования безопасных систем

Время на прочтение5 мин
Количество просмотров39K

Источник всех утверждений статьи взят из данной видео-конференции Левика. В ней язык живой, а не "доклад под бумажку". Не поленитесь послушать, чтобы заранее не писать глупости (про теорию заговора и аргессивного продвижения).


YouTube: Ryan Levick - Rust at Microsoft

Независимо от того, сколько вложений компании-разработчики могут потратить на инструментарий и обучение своих разработчиков, «C++, по своей сути, не является безопасным языком», сказал Райан Левик (Ryan Levick) 'cloud developer advocate' из Microsoft на виртуальной конференции AllThingsOpen в прошлом месяце, объясняя в виртуальной беседе почему Microsoft постепенно переходит с C/C++ на Rust для создания своего инфраструктурного программного обеспечения. И вдохновляет других гигантов индустрии программного обеспечения задуматься о том же.


Переключение контекста и простой вытесняющий планировщик для CortexM

Время на прочтение19 мин
Количество просмотров21K

image

С каждым годом курсовые для моих студентов становятся все объемнее. Например, в этом году одним из заданий была разработка метеостанции, ведь только ленивый не делает метеостанции, а студенты они по определению не ленивые, поэтому должны её сделать. Её можно быстро накидать в Cube или собрать на Ардуино, но задача курсового не в этом. Основная задача — самостоятельно, с нуля разобраться с модулями микроконтроллера, продумать архитектуру ПО и, собственно, закодировать все на С++, начиная от регистров и заканчивая задачами РТОС. Кому интересно, здесь пример отчета по такому курсовому


Так вот, появилась небольшая проблема, а именно, бесплатный IAR позволяет делать ПО размером не более 30 кБайт. А это уже впритык к размеру курсового в неоптимизированном виде. Анализ кода студентов выявил, что примерно 1/4 часть их приложения занимает FreeRtos — около 6 кБайт, хотя для того, чтобы сделать вытесняющую переключалку и управлялку задачами хватило бы, наверное… да байт 500 причем вместе с 3 задачами (светодиодными моргунчиками).


Эта статья будет посвящена тому, как можно реализовать Очень Простой Планировщик(он же SST), описанный в статье аж 2006 года и сейчас поддерживаемый Quantum Leaps в продукте Qp framework.


С помощью этого ядра очень просто реализовать конечный автомат, и оно очень хорошо может использоваться в небольших проектах студентами (и не только), которые могут получить дополнительно 5 кБайт в свое распоряжение.


Я попробую показать как можно реализовать такой планировщик самому. Чтобы не сильно перегружать статью, рассмотрю переключение контекста на CortexM0 у которого нет аппаратного модуля с плавающей точкой.


Все кто заинтересовался и хочет понять как можно переключать контекст, добро пожаловать под кат.

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

Мьютекс в мире асинхронного кода

Время на прочтение4 мин
Количество просмотров6.4K

failed guard


Фото: James P. Blair/National Geographic Creative


Вы когда-нибудь сталкивались со следующей проблемой в rust, когда использовали std::sync::Mutex в асинхронном коде?


 7  |     tokio::spawn(/* some future here */);
    |     ^^^^^^^^^^^^ future returned by `fut` is not `Send`
    |
127 |         T: Future + Send + 'static,
    |                     ---- required by this bound in `tokio::task::spawn::spawn`
    |
Читать дальше →

Project Panama: как сделать Java «ближе к железу»?

Время на прочтение28 мин
Количество просмотров14K
В феврале в нашей новосибирской Точке кипения прошел тринадцатый митап JUGNsk, где Владимир Иванов, ведущий инженер Oracle из группы разработки виртуальной Java-машины HotSpot, рассказал, что сейчас приходит на смену JNI при взаимодействии Java-кода с native-кодом. Читайте далее о FFI (Foreign Function Interface), jextract, Memory Access API и Foreign ABI (Application Binary Interface).



Статья подготовлена по мотивам доклада, видеозапись которого с сессией вопросов-ответов можно найти тут. Это не просто расшифровка, а доработанная самим Владимиром версия исходного материала.
Читать дальше →

Что такое Windows PowerShell и с чем его едят? Часть 6: Решение практических задач

Время на прочтение7 мин
Количество просмотров22K


В предыдущих статьях мы разобрались с основами среды и достаточно подробно изучили язык программирования Microsoft PowerShell. Завершая цикл, мы рассмотрим работу с процессами и службами, реестром и журналами событий в распределенной среде, а также разберем некоторые способы администрирования операционной системы, настройки стороннего ПО и просмотра сведений об установленном оборудовании. Для этого в PowerShell активно применяются объекты различных типов, изучению которых были посвящены четвертая и пятая части цикла.
Читать дальше →

Подключаем LCD экран к макетной плате LPCXpresso55S69

Время на прочтение12 мин
Количество просмотров5.5K
В рамках проекта All-Hardware довелось мне освоить работу с экраном на макетной плате LPC55S69-EVK фирмы NXP. Пикантность ситуации состоит в том, что штатно эта плата поставляется без экрана, так что в освоение работы также входил поиск экрана, который можно достать в наших краях, и его подключение.



Во второй части статьи, я расскажу о том, какие действия следует выполнить, чтобы повторить мой подвиг на практике. Но сначала я выскажу всё, что накипело за время работы. Правда, всё ниже сказанное является моим личным мнением и часто не совпадает с мнением руководства нашей компании. Но у инженера-программиста, лично прошедшего через это всё, вполне может быть собственное мнение… И вот оно.
Читать дальше →

Вклад авторов