Работа с СОМ-портом на Си в 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 и плата arduino ( связь arduino и компьютера )

Linux и arduino — заметки на полях

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

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

Программирование флэш-памяти микроконтроллеров 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 отрелизился ( простым языком это означает что в ближайшее время новых версий не будет ) В этой статье я коротко пробегусь по изменениям в составе дистрибутива и для полного счастья научу вас работать с принтером в этой системе.

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

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.

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

Микроконтроллер вместо LPT порта под Linux.

    Одним из самых простых интерфейсов для программирования был LPT порт, он позволял не только относительно быстро передавать данные в эпоху до USB, но и контролировать каждый вывод порта (bit bang), что давало возможность реализовывать различные протоколы программно. Наиболее полно потенциал параллельного порта можно было раскрыть в однозадачных операционных системах типа DOS, в которых, например, можно было выводить звук через ЦАП, подключенный к LPT порту, что весьма затруднительно сделать в современных многозадачных операционных системах не реального времени. Но время DOS ушло, так и LPT порт все реже встречается на материнских платах компьютеров, не говоря уже о ноутбуках.
    Долгое время я пользовался JTAG-кабелем на порт LPT, клоном Xilinx parallel III, однако после замены материнской платы, я не нашел места куда его подключить. Конечно, можно приобрести USB JTAG от Xilinx, но мы не ищем легких путей.


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

Скринкаст про развертывание кроссплатформенной среды разработки для программирования ARM-микроконтроллеров

ARM
В видео показано, как начать разработку под ARM-микроконтроллеры. Решение универсально для любой операционной системы: Windows, Linux и Mac. Но запись сделана в Ubuntu, так как это моя основная ОС. Используются только опенсорсные инструменты: Eclipse, GCC.

Что есть в видео: установка Eclipse, GCC, плагина GNU ARM Eclipse, CMSIS, создание и настройка проекта с добавлением startup-файла и сценария линковщика, компиляция проекта.


Youtube.

Видео лучше смотреть на Ютубе в максимальном разрешении. Звука нет.

Если сообщество пожелает, то сделаю видео про настройку проекта под STM32 и покажу отладку с помощью GNU Debugger.

Все необходимое ПО:

Получение синхронных данных с помощью микросхемы Cypress CY7C68013A (FX2LP) на примере устройства видеозахвата для старых компьюторов.

Постановка задачи.

     Так произошло, что у меня накопилось несколько советских компьютеров, и однажды у меня возникло желание их включить, однако свободного телевизора под рукой не оказалось. Решить данную проблему можно несколькими способами: приобрести телевизор или tv-тюнер, собрать удвоитель числа строк и подключить его к монитору с VGA разъемом или послать видео поток на компьютер и там его обработать. В данной статье будет рассмотрен последний вариант.
скриншот БК0010-01


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

В поддержку темы линуксовых плат: Black Swift топик-ссылка

Сейчас на странице личных блогов висит почти подряд аж два поста про ARM платы, а вот про этот, ИМХО очень интересный проект, на we.ee.ru записок нету - решил исправить несправедливость. Плата очень интересна, например, для встраивания во всякую технику в качестве коммуникационного модуля для IoT - из коробки на борту WiFi со PCB-антенной и два Phy 100-BaseTX. Жаль только всего 1 UART. Зато размеры почти как у SD-карточки и стоимость меньше $30. И, что интересно, отечественная разработка.

Управление сервомашинкой из Cubieboard2

Продолжая тему разработки модулей ядра сегодня посмотрим на использование таймеров и прерываний. Это пожалуй 2 наиболее специфичные функции, которые умеет микроконтроллер и обычно недоступны при разработке классического приложения для ОС Linux(да и Windows тоже), а при работе с внешними устройствами эти функции очень нужны. В качестве примера — управление сервомашинкой и кино в жанре «прибытие поезда».

Читать дальше
  • +12
  • 08 августа 2014, 23:42
  • kest