LINUX.ORG.RU

Статьи «Разработка»

Активные теги:

 ,

Создание пакетов для Python-приложений с помощью pyproject.toml

Создание пакетов для Python-приложений с помощью pyproject.toml

Вам больше не нужны poetry и pipenv - достаточно лишь pyproject.toml.

( читать дальше... )

 ,

rtxtxtrx
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Эта статья является продолжением предыдущей публикации, в которой описывается разработка сетевой библиотеки на C++20. В данном продолжении акцент сделан на более детальном описании разработки алгоритма Raft и его интеграции с сетевой библиотекой.

( читать дальше... )

 , , ,

Reset
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Введение

С годами работы в области распределённых систем, я понял, что мой опыт не будет полным без реализации алгоритма Raft. Это осознание побудило меня к действию: я решил создать свою реализацию, используя асинхронные возможности C++20.

( читать дальше... )

 , , , ,

Reset
()

Линукс, ассемблер и X11

Линукс, ассемблер и X11

Это текстовая версия моей статьи про разработку графического приложения на чистом ассемблере под линукс.

( читать дальше... )

 , ,

alex0x08
()

Проблемы надёжной доставки данных до постоянного хранилища и fsync()

Когда речь идёт об организации надёжного хранения данных на диске, возникает проблема: надо как-то узнавать о том, что данные на диск не смогли записаться, и принимать по этому поводу какие-то меры.
Есть, конечно, и другая проблема: даже если данные на самом деле записались, они всё равно могут позже потеряться из-за аппаратного сбоя. Но это другая тема и тут мы не будем её рассматривать.

( читать дальше... )

 , ,

firkax
()

Осваиваем STM32 снизу: часть 9 - подключаем libc

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 9: подключаем libc

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

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 8 - используем CMSIS

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 8: используем CMSIS

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

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 7 - Hello world через UART

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 7. Hello world через UART

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

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 6 - Мигаем с таймером

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 6. Мигаем с таймером

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

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 5 - Мигаем на C

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 5: Мигаем на C

Эта часть будет комбинацией частей 3 и 4. Мы перепишем код из части 3 на C, используя «инфраструктуру» для сборки из части 4 и познакомимся с некоторыми не всегда очевидными моментами, которые надо помнить при работе с микроконтроллером из кода на C.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 4

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 4: Начинаем работать с C

Знание ассемблера важно, но многие программы разумней писать на C. В этой части мы напишем простую программу на C, скомпилируем её, исследуем получившийся объектный файл, правильно скомпонуем и запустим. После этого ещё немного изучим gdb.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 3 - мигаем светодиодом

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 3: мигаем светодиодом

Мигание светодиодом это традиционный hello world для микроконтроллеров. Это один из самых простых способов взаимодействия с окружающей средой без помощи отладчика. В этой части именно этим мы и займёмся.

Сразу оговоримся, что эта часть и далее уже очень сильно зависят от конкретного процессора и даже платы. Все адреса приведены со ссылками на reference manual, что должно помочь в переводе кода на другие процессоры.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 2 - пишем простейшую прошивку

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 2: пишем простейшую прошивку

Вообще говоря, прошивка уже была описана в первой части. Нам нужно создать такой файл, в котором будет записано некое число из четырёх байтов, которое процессор присвоит регистру sp, далее там будет записан, к примеру, адрес 0x08000131 в следующих четырёх байтах, далее будут располагаться 296 нулевых байтов (0x130 - 4 - 4 = 304 - 4 - 4 = 296), а за ними 2 инструкции по 4 байта, которые и будут что-то делать. Итого файл прошивки должен занимать 4 + 4 + 296 + 4 + 4 = 312 байтов. Содержимое этого файла мы запишем в микроконтроллер по адресу 0x08000000, где и располагается флеш-память.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 1 - подключаем и исследуем плату

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Все файлы можно взять тут.

В данной серии статей мы попробуем поработать с процессором STM32 с помощью GNU утилит, немного познакомимся с ассемблером и отладкой.

Примеры написаны для популярной платы blue pill, построенной на микроконтроллере STM32F103C8T6.

( читать дальше... )

 ,

vbr
()

Как кушать вилкой. ... или о fork() в двух словах

Статья о создании процессов в Linux

( читать дальше... )

 

PPP328
()

Встроенный бинарник на Linux

Встроенный бинарник на Linux

Это текстовая версия статьи, оригинал с картинками вот тут.

Продолжаю раскрывать интересную тему запуска программ нестандартными способами. В этот раз расскажу про запуск ELF-бинарника из скрипта и без записи в файловую систему.

( читать дальше... )

 , ,

alex0x08
()

Один бинарник на четыре системы

Это текстовая версия статьи, оригинал с картинками вот тут

( читать дальше... )

 , , , ,

alex0x08
()
: Решение для pycharm 2022 OSError: [Errno 98] Address already in use (4 комментария)

Использование системы сборки SCons для сборки проекта на языке Fortran

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

SCons не использует внешние низкоуровневые системы сборки, как это делают CMake или Meson, полагаясь на свою собственную встроенную. Есть экспериментальная поддержка внешней низкоуровневой системы сборки Ninja, но её поддержка очень экспериментальная.

Если скорость сборки вашего проекта слишком критична (это должен быть очень большой проект), то, возможно, SCons вам скорее не подойдёт. Оценка разницы в скорости здесь всё равно не приводится, но желающие могут протестировать её на примере проекта The Battle for Wesnoth, где помимо файла проекта SCons (файл SConstruct) поддерживается система сборки CMake.

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

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

Разумеется, что возможности SCons далеко не исчерпываются тем, что рассматривается в данной статье. С более подробной справкой можно ознакомиться:

( читать дальше... )

 , ,

grem
()

Funtoo from Scratch

Руководство по сборке Funtoo в окружении, не основанном на Funtoo Linux. Цель — показать процесс создания stage3 Funtoo в «произвольном» linux-окружении на примере GNU сборки.

( читать дальше... )

 , ,

vvn_black
()