В прошлой статье я сказал, что нам пора переходить к потоковым протоколам. Но начав подготовку рассказа о них, я понял, что сам плаваю в одной очень важной теме. Как уже отмечалось, у меня с Линуксом достаточно своеобразные отношения. В общем, я понял, что сам не могу создать с нуля приложение на С++, которое удовлетворяло бы всем принципам программирования для Redd. Можно было бы попросить кого-то сделать это, а затем просто воспользоваться готовым шаблоном, но цикл статей призван научить всех вести разработку под Redd с нуля. Поэтому я попросил своего начальника (большого специалиста по Линуксу), и он разъяснил мне, что за чем нажимать. Затем я чуть переосмыслил его слова и теперь считаю нужным зафиксировать все знания письменно. Это избавит таких, как я, от мучительных раздумий: «Так… Что он сделал – понятно, но как мне это повторить?». В общем, кто работает под Линуксом, можете пробежать следующие два раздела по диагонали. Вряд ли вы найдёте там что-то новое (дальше – найдёте). А остальным я предлагаю на выбор две методики разработки, которые соответствуют декларируемым принципам работы под Redd: низкие трудозатраты на разработку и удалённая отладка.
Рубрика «системное программирование» - 20
Разработка программ для центрального процессора Redd на примере доступа к ПЛИС
2019-07-04 в 8:46, admin, рубрики: fpga, Компьютерное железо, микроконтроллеры, ПЛИС, программирование микроконтроллеров, системное программированиеPeephole микрооптимизации в С++ и C# компиляторах
2019-07-03 в 8:35, admin, рубрики: .net, C#, c++, CoreCLR, gcc, LLVM, Программирование, системное программированиеВ школе, когда мы решали уравнения или считали формулы, мы пытались их сперва сократить несколько раз, к примеру Z = X - (Y + X)
сокращается в Z = -Y
. В современных компиляторах это подмножество так называемых peephole-оптимизаций, в которых мы по, грубо говоря, набору шаблонов сокращаем выражения, заменяем инструкции на более быстрые для конкретного процессора и т.п. В этой статье я собрал наборчик таких оптимизаций, которые удалось найти в исходниках LLVM, GCC и .NET Core (CoreCLR).
Начнем с простых примеров:
X * 1 => X
-X * -Y => X * Y
-(X - Y) => Y - X
X * Z - Y * Z => Z * (X - Y)
проверим последний пример в С++ и в C#:
int Test(int x, int y, int z) {
return x * z - y * z; // => z * (x - y)
}
и посмотрим на ассемблер от Clang (LLVM), GCC, MSVC и .NET Core:
OpenCV на STM32F7-Discovery
2019-06-26 в 12:40, admin, рубрики: DIY, embox, mcu, opencv, OSDev, stm32, stm32f7discovery, Блог компании Embox, микроконтроллеры, обработка изображений, портирование, портирование приложений, программирование микроконтроллеров, системное программированиеЯ один из разработчиков операционной системы Embox, и в этой статье я расскажу про то, как у меня получилось запустить OpenCV на плате STM32746G.
Если вбить в поисковик что-то вроде "OpenCV on STM32 board", можно найти довольно много тех, кто интересуется использованием этой библиотеки на платах STM32 или других микроконтроллеров.
Есть несколько видео, которые, судя по названию, должны демонстрировать то, что нужно, но обычно (во всех видео, которые я видел) на плате STM32 производилось только получение картинки с камеры и вывод результата на экран, а сама обработка изображения делалась либо на обычном компьютере, либо на платах помощнее (например, Raspberry Pi).
OSDay 19 или почему еще жив язык Си
2019-06-25 в 13:24, admin, рубрики: osday, Блог компании Embox, конференции, операционные системы, системное программированиеНедавно (10-11 июня) в Москве прошла очередная научно-практическая конференция OSDay. На этот раз конференция проходила в математическом институте им. В.А. Стеклова РАН. Формально она была посвящена инструментам разработки операционных платформ и системного программного обеспечения. Как обычно, темы, затрагиваемые на конференции, не ограничились формально заявленными, а поднятые вопросы рассматривались с разных сторон и обсуждались различные подходы к их решению. Различные взгляды и подходы — это, на мой взгляд, то, что выделяет конференцию среди остальных. Так, например, в конце второго дня конференции, буквально под занавес, Дмитрий Завалишин ( dzavalishin ), один из организаторов, спровоцировал бурную дискуссию, о том, что язык программирования Си вообще-то устарел и разрабатывать (в том числе и операционные системы) нужно, как минимум, на языках с управляемой памятью. Свое видение об этой дискуссии и других интересных мне темах, поднятых на конференции, я изложу в данной статье. Кому интересно прошу под кат.Читать полностью »
Карта средств защиты ядра Linux
2019-06-24 в 16:15, admin, рубрики: hacking, linux kernel, security, Блог компании Positive Technologies, информационная безопасность, Разработка под Linux, системное программирование, ядро LinuxЗащита ядра Linux — очень сложная предметная область. Она включает большое количество сложно взаимосвязанных понятий, и было бы полезным иметь ее графическое представление. Поэтому я разработал карту средств защиты ядра Linux. Вот легенда:
Вся правда об ОСРВ. Статья #28. Программные таймеры
2019-06-13 в 9:15, admin, рубрики: api, rtos, микроконтроллеры, осрв, программирование микроконтроллеров, программные таймеры, системное программирование, служебные вызовыИдея программных таймеров была введена в одной из предыдущих статей. Они являются объектами ядра, предоставляющими задачам простой способ запуска событий по времени, или, чаще всего, способ выполнять действия на регулярной основе. Все детали функционала, связанного со временем (точность, обработка прерываний и т.д.) в Nucleus SE были рассмотрены в предыдущей статье.
Разработка собственного ядра для встраивания в процессорную систему на базе ПЛИС
2019-06-06 в 8:07, admin, рубрики: fpga, Компьютерное железо, ПЛИС, программирование микроконтроллеров, системное программирование
Итак, в первой статье цикла говорилось, что для управления нашим оборудованием, реализованным средствами ПЛИС, для комплекса Redd лучше всего использовать процессорную систему, после чего на протяжении первой и второй статей показывалось, как эту систему сделать. Хорошо, она сделана, мы даже можем выбирать какие-то готовые ядра из списка, чтобы включить их в неё, но конечная цель — именно управлять нашими собственными нестандартными ядрами. Пришла пора рассмотреть, как включить в процессорную систему произвольное ядро.
Читать полностью »
Вышла бета-версия Odin — ещё одного языка программирования
2019-06-03 в 15:59, admin, рубрики: Odin, Компиляторы, Программирование, системное программированиеНезависимый разработчик, Бил Джинжер, представил Odin 0.10.0 — бета-версию языка программирования, которым он занимается с 2016 года. Новый язык сочетает элементы Pascal, C, Go, Oberon и напоминает гибрид Go c Rust. Исходный код, FAQ и документацию Odin можно найти на GitHub и сайте проекта.
Читать полностью »
Отчет с завтрака с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов»
2019-06-02 в 16:56, admin, рубрики: fpga, История ИТ, ненормальное программирование, обучение программированию, ПЛИС, Программирование, разработка игр, системное программирование, схемотехника, чарльз уэзерелл, этюды для программистовЗавтрак с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов», затянулся на четыре часа. В конце-концов официантка попросила нас из ресторана в Пало-Альто, сказав что в ресторан большая очередь, а мы тут с восьми утра заседаем. За это время мы обсудили массу интересных вещий: работу Чарльза в Ливерморской лаборатории и Оракле, объектно-ориентированное и функциональное программирование, компиляторы и языки описания аппаратуры, закладки в процессоры, неэффективность нейронных сетей и незаслуженно забытый Пролог, посещение Чарльзом России, обработка текста конечным автоматом в аппаратном сопроцессоре и создание школьниками видеоигр на ПЛИС.
Содержания четырех часов с Чарльзом Уэзереллом хватит для пятидесяти статей на Хабре, поэтому перечислю в основном темы, после чего приведу некоторые детали про три из них:
Читать полностью »
Выпуск Rust 1.35.0
2019-05-24 в 11:51, admin, рубрики: cargo, clippy, open source, release, Rust, rustc, rustdoc, rustfix, rustfmt, stable, выпуск версий, новости технологий, перевод, системное программирование, стабильная версия, языки программированияПредставляю Вашему вниманию перевод публикации о новой версии всеми любимого языка программирования Rust.
Введение
Команда по разработке языка программирования Rust рада анонсировать новую версию, 1.35.0. Rust — это язык программирования, позволяющий каждому разрабатывать надёжное и быстрое ПО.
Если предыдущую версию Rust Вы установили средствами rustup
, получение текущей версии не составит особого труда:
$ rustup update stable
Если у Вас всё ещё нет rustup
, Вы можете получить его с соответствующей страницы на нашем сайте. Детальный обзор данного релиза доступен на GitHub.