Работа с СОМ-портом на Си в linux
Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Чаще всего появляется задача сопрячь какой-то датчик, либо удалённое устройство с одноплатником. Да, что греха таить, сейчас в 2020 году UART, наверное, самый распространённый интерфейс для обмена данными, несмотря на всю его архаичность.
Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.
В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А не понимание того, что там происходит и приводит к различным трудноуловимым багам.

Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь
Исторически сложилось, что СОМ-порт в UNIX использовался как терминал. То есть, как устройство для отображения и получения информации работы с ЭВМ. Отсюда идёт всё базовое наследие работы UART.
Читать дальше
Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.
В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А не понимание того, что там происходит и приводит к различным трудноуловимым багам.

Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь
Исторически сложилось, что СОМ-порт в UNIX использовался как терминал. То есть, как устройство для отображения и получения информации работы с ЭВМ. Отсюда идёт всё базовое наследие работы UART.
Читать дальше
Linux и плата arduino ( связь arduino и компьютера )
Linux и arduino — заметки на полях
Дорогие читатели, так как не вижу большой активности в этом блоге, решил его немножко оживить.Хочется верить, что этот материал будет полезным еще каким-нибудь начинающим линуксоидам — ардуинистам, будем считать вступительную часть законченной, переходим к практике.
Читать дальше
- +1
- 28 сентября 2017, 22:50
- kostyalamer
- 121
Программирование флэш-памяти микроконтроллеров STM32F через ST-LINK V1 из System Workbench for STM32 IDE (SWSTM32) в ОС Ubuntu (GNU/Linux)
НЕ СОВЕТУЮ ПОВТОРЯТЬ ТО, ЧТО НАПИСАНО В ДАННОЙ СТАТЬЕ!
ВОЗНИКАЛИ ПРОБЛЕМЫ ВПЛОТЬ ДО ПОЛНОЙ БЛОКИРОВКИ ПРОГРАММИРУЕМОЙ МИКРОСХЕМЫ.
СОВЕТУЮ ИСПОЛЬЗОВАТЬ БОЛЕЕ СОВРЕМЕННЫЕ ПЛАТЫ С ПРОГРАММАТОРАМИ ST-LINK V2, которые поддерживает программа System Workbench for STM32 IDE (SWSTM32) в ОС Ubuntu.
Приношу извинения за доставленные неудобства, если таковые имели место! Статью со временем удалю или поменяю тему статьи вместе с названием.
Читать дальше
Релиз "живого" дистрибутива CoderLive на базе ALT Linux .
Итак, уважаемые читатели, CoderLive отрелизился ( простым языком это означает что в ближайшее время новых версий не будет ) В этой статье я коротко пробегусь по изменениям в составе дистрибутива и для полного счастья научу вас работать с принтером в этой системе.
Читать дальше
Читать дальше
- 0
- 13 февраля 2016, 13:19
- kostyalamer
- 10
CoderLive - дистрибутив Linux-a на флешке , работа с платами Arduino.
Дистрибутив на флешке это «живая» система не требующая установки. Возможно читатель знаком с понятием LiveCD (или LiveDVD ), если не по Linux-у, то хотя бы по разным реаниматорам предназначенным для восстановления «рухнувшей» windows. Живая флешка, штука еще более интересная — она позволяет работать с Live системой как с установленной с автоматическим сохранением всех ваших данных, при этом жесткие диски компьютера вообще не используются.
На этой самой флешке уже имеются: свежайшая Arduino v1.6.7 с интегрированным в нее ArduBlock ( это такой интересный плагин, добавляющий в ардуину возможности визуального программирования и напоминающий Scratch — очень хорош для начального обучения детей робототехнике ), FLProg — Визуальная система программирования Arduino реализующая языки LD и FBD ( кто программировал PLC думаю будет рад, остальные с интересом посмотрят ), Fritzing — о котором здесь недавно писали ( в разделе софт ) и еще много других интересных вещей о которых я расскажу в этой статье. Все это собрано на пакетной базе ALT Linux с рабочим столом Window Maker.
Читать дальше
На этой самой флешке уже имеются: свежайшая Arduino v1.6.7 с интегрированным в нее ArduBlock ( это такой интересный плагин, добавляющий в ардуину возможности визуального программирования и напоминающий Scratch — очень хорош для начального обучения детей робототехнике ), FLProg — Визуальная система программирования Arduino реализующая языки LD и FBD ( кто программировал PLC думаю будет рад, остальные с интересом посмотрят ), Fritzing — о котором здесь недавно писали ( в разделе софт ) и еще много других интересных вещей о которых я расскажу в этой статье. Все это собрано на пакетной базе ALT Linux с рабочим столом Window Maker.
Читать дальше
- +4
- 16 января 2016, 12:41
- kostyalamer
- 29
Микроконтроллер вместо LPT порта под Linux.
Одним из самых простых интерфейсов для программирования был LPT порт, он позволял не только относительно быстро передавать данные в эпоху до USB, но и контролировать каждый вывод порта (bit bang), что давало возможность реализовывать различные протоколы программно. Наиболее полно потенциал параллельного порта можно было раскрыть в однозадачных операционных системах типа DOS, в которых, например, можно было выводить звук через ЦАП, подключенный к LPT порту, что весьма затруднительно сделать в современных многозадачных операционных системах не реального времени. Но время DOS ушло, так и LPT порт все реже встречается на материнских платах компьютеров, не говоря уже о ноутбуках.
Долгое время я пользовался JTAG-кабелем на порт LPT, клоном Xilinx parallel III, однако после замены материнской платы, я не нашел места куда его подключить. Конечно, можно приобрести USB JTAG от Xilinx, но мы не ищем легких путей.
Читать дальше
Долгое время я пользовался JTAG-кабелем на порт LPT, клоном Xilinx parallel III, однако после замены материнской платы, я не нашел места куда его подключить. Конечно, можно приобрести USB JTAG от Xilinx, но мы не ищем легких путей.
Читать дальше
- +3
- 07 января 2016, 16:11
- Jarik65535
- 18
Скринкаст про развертывание кроссплатформенной среды разработки для программирования ARM-микроконтроллеров
В видео показано, как начать разработку под ARM-микроконтроллеры. Решение универсально для любой операционной системы: Windows, Linux и Mac. Но запись сделана в Ubuntu, так как это моя основная ОС. Используются только опенсорсные инструменты: Eclipse, GCC.
Что есть в видео: установка Eclipse, GCC, плагина GNU ARM Eclipse, CMSIS, создание и настройка проекта с добавлением startup-файла и сценария линковщика, компиляция проекта.
Youtube.
Видео лучше смотреть на Ютубе в максимальном разрешении. Звука нет.
Если сообщество пожелает, то сделаю видео про настройку проекта под STM32 и покажу отладку с помощью GNU Debugger.
Все необходимое ПО:
Что есть в видео: установка Eclipse, GCC, плагина GNU ARM Eclipse, CMSIS, создание и настройка проекта с добавлением startup-файла и сценария линковщика, компиляция проекта.
Youtube.
Видео лучше смотреть на Ютубе в максимальном разрешении. Звука нет.
Если сообщество пожелает, то сделаю видео про настройку проекта под STM32 и покажу отладку с помощью GNU Debugger.
Все необходимое ПО:
Получение синхронных данных с помощью микросхемы Cypress CY7C68013A (FX2LP) на примере устройства видеозахвата для старых компьюторов.
Постановка задачи.
Так произошло, что у меня накопилось несколько советских компьютеров, и однажды у меня возникло желание их включить, однако свободного телевизора под рукой не оказалось. Решить данную проблему можно несколькими способами: приобрести телевизор или tv-тюнер, собрать удвоитель числа строк и подключить его к монитору с VGA разъемом или послать видео поток на компьютер и там его обработать. В данной статье будет рассмотрен последний вариант.
Читать дальше
- +11
- 11 июля 2015, 01:06
- Jarik65535
- 71
В поддержку темы линуксовых плат: Black Swift
Сейчас на странице личных блогов висит почти подряд аж два поста про ARM платы, а вот про этот, ИМХО очень интересный проект, на we.ee.ru записок нету - решил исправить несправедливость. Плата очень интересна, например, для встраивания во всякую технику в качестве коммуникационного модуля для IoT - из коробки на борту WiFi со PCB-антенной и два Phy 100-BaseTX. Жаль только всего 1 UART. Зато размеры почти как у SD-карточки и стоимость меньше $30. И, что интересно, отечественная разработка.
- +3
- 15 февраля 2015, 22:39
- Alatar
- habrahabr.ru/company/blackswif...
- 55
Управление сервомашинкой из Cubieboard2

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