Рубрика «uart» - 5

MIPSfpga представляет собой предназначенный для образовательных целей микропроцессор MIPS32 microAptiv фирмы Imagination, который имеет кэш-память и блок управления памятью. Код процессора на языке Verilog доступен пользователю и может использоваться для моделирования и реализации процессора на FPGA плате.

В даной статье будет описано на примере Digilent cmodA7 как портировать процессор MIPSfpga-plus на другие платы.

Портирование MIPSfpga на другие платы и интеграция периферии в систему. Часть 1 - 1

На сегодняшний день MIPSFPGA портирован на популярные платы таких фирм как ALTERA и Xilinx, среди них Basys 3, Nexys4 ddr, и другие (полный список находится на github). Такие платы наиболее популярны среди разработчиков на FPGA. Цена на такие платы довольно не маленькая, да и загружаются программы в ядро MIPSfpga с использованием интерфейса EJTAG и адаптера Bus Blaster ценой около 50$. Адаптер Bus Blaster получает команды по высокоскоростному кабелю USB 2.0 и преобразует их в последовательный протокол EJTAG, это позволяет загружать программы в ядро MIPSfpga и управлять отладкой программ, которые на нем выполняются. Проблема с относительно дорогим Bus Blaster была решена введением в систему MIPSfpga ряда улучшений. Улучшеный вариант системи MIPSfpga, названый MIPSfpga-plus включает в себя такие новые функции:

— Возможность загрузки программного обеспечения с использованием USB-to-UART коннектора ценой в $ 5 FTDI вместо $ 50 Bus Blaster, который иногда не так уж и легко достать.

— Возможность изменять тактовую частоту на лету с 50 или 25 МГц до 1 Гц (один цикл в секунду) для наблюдения за работой процессора в режиме реального времени, включая промахи в кэш-памяти и перенаправления конвеера.

— Пример интеграции датчика освещенности с протоколом SPI.

— Небольшая последовательность инициализации программного обеспечения, которая вписывается в 1 КБ вместо 32 КБ памяти, что позволяет переносить MIPSfpga на более широкий выбор плат FPGA без использования внешней памяти. Реализация UART описана в статье: MIPSfpga и UART.
Читать полностью »

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

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

Эта история о том, что можно сделать самостоятельно, имея начальные навыки, желание и время разобраться в процессе обновления програмного обеспечения ПО встраиваемых устройств.

image

Для нетерпеливых: в конце получился полноценный аппарат с актуальной версией загрузчика U-Boot, image Debian Jessie и image OpenMediaVault на борту.

Читать полностью »

Сейчас немного научившись программировать под наш микроконтроллер, попробуем связать его с внешним миром. Аппаратные интерфейсные модули STM32 поддерживают много много различных внешних интерфейсов. Начнем с самого часто используемого интерфейса UART. Что это за интерфейс можно прочитать здесь и здесь.
Читать полностью »

Довольно часто разработчики ядер под Android устройства сталкиваются с тем, что собранное из исходников ядро просто напросто не работает. И при этом часто разработчик, собравший ядро, не имеет никаких специальных средств для отладки. В данной ситуации без kmsg логов довольно трудно что либо сделать. Конечно же в Linux ядре уже имеется несколько способов копирования содержимого kmsg буфера в специальную область памяти, но если вам интересно узнать ещё об одном способе, то прошу под кат.
Читать полностью »

C утилитой для ПК и платой — программатором,
с использованием SPL,
с полноценной системой команд и проверкой CRC32,
с гарантией доставки и переотправки сбойной или потерянной команды,
с проверками ошибок, отладочными сообщениями и урезанным printf'ом.
Оптимизирован под современные USB-UART преобразователи и потоковую передачу.

STM32F405: прошить 400кб за 10 секунд или быстрый UART-загрузчик заточенный под USB-UART, размером менее 4 килобайт - 1
Читать полностью »

Аннотация

В статье рассмотрен вариант модификации серийно выпускаемых многопортовых адаптеров расширения ввода-вывода, построенных на микросхемах NetMOS / MosChip MSC98XX-CV и SystemBase SB16C1052PCI, для реализации последовательного физического интерфейса RS-422 со скоростями обмена данными до 1 Мбод.

Текст

Со времен компьютеров IBM PC последовательные порты персональных ЭВМ, рабочих станций и серверов, функционирующие по протоколу UART, в большинстве случаев используют физический сигнальный интерфейс RS-232. Раньше последовательные порты, или COM-порты в терминологии системного программного обеспечения, применялись главным образом для подключения манипуляторов типа мышь и модемов для коммутируемых телефонных линий и прочих низкоскоростных каналов связи. В современной вычислительной технике эти периферийные устройства подключаются по шине USB. Тем не менее, последовательные порты RS-232 продолжают использоваться для сопряжения с различным технологическим оборудованием, например, со сканером штрих-кода, а также для различных отладочных и диагностических нужд для работы в режиме терминала со встроенным программным обеспечением таких устройств, как сетевые коммутаторы третьего уровня, контроллеры, источники бесперебойного питания и т.п.

Последовательный сигнальный интерфейс RS-232 использует двухполярные сигналы с амплитудой от 5 до 15 вольт, при этом отрицательное напряжение соответствует логической единице, а положительное напряжение – логическому нулю. Сигналами с такой амплитудой невозможно передавать данные на высоких скоростях, в силу чего максимальная скорость для стандартного последовательного порта ограничена 115,2 кбод. При синхронизации UART класса 16С550 от сигнала с частотой 1,8432МГц скорости 115,2 кбод соответствует установка регистра DLL в ноль, а регистра DLM в 00000001.
Читать полностью »

Введение

Началось всё с того, что я купил себе Orange Pi, поддавшись рекламному слогану «аналог Rasberi Pi всего за 15$». Девайс был заказан на алиэкспрессе и прибыл через пятнадцать дней ещё в феврале. Тогда же были куплены все необходимые дополнительные компоненты: радиатор на процессор, 15 ваттный блок питания, карточка micro SD объемом 32 Гб, HDMI-кабель для подключения монитора. За неимением времени он пылился в ящике стола аж до июня. И вот наконец дошли руки проверить его работоспособность.

На стандартных прошивках, предлагаемых на официальном сайте работоспособность не вызвала нареканий. Но стандартные прошивки меня не устраивают по той причине, что уж так я устроен — любой попавший мне в руки девайс должен быть кастомизирован по полной программе. Поэтому в руки был взят U-boot, исходники которого скачаны с официального FTP, а так же сборка Arch Linux для ARM. В качестве опорного мануала и отправной точки для копания был взят вот этот мануал для Banana Pi.

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

Ну не беда, подумал я. На «апельсине» распаян UART, подключусь как я к нему терминалом да посмотрю что происходит. Были куплены необходимые детали и провод и спаян вот такой кабель (картинка под спойлером)

Нубский вариант кабеля

Как «чайник» делал UART <-> RS232 конвертер для Orange Pi - 1

Тот кто в теме, сразу поймет в чем я был не прав, сделав такой кабель, и таких среди читающих больше половины. Я же заподозрил неладное после того как увидел кракозябры, которые плевал в терминал мой «апельсин». Именно понимание причины моей глупейшей ошибки и побудило меня к действиям, описанным ниже.

Читать полностью »

RS232 устройство 3-в-1 для домашнего Linux сервера: Часть 2 (Серверная)

Для устранения некоторых недостатков сервера, собранного из бытовых комплектующих, разработал недавно устройство, которым хочу поделиться. Его подробное описание, со схемой и исходными кодами, доступно на Geektimes в первой части.

WRN устройство

Устройство получило наименование WRN от составляющих его подсистем:

  • Аппаратный сторожевой таймер, работающий с watchdog демоном;
  • Генератор истинно случайных чисел;
  • Радиомодуль nRF24L01+ для сбора данных с автономных датчиков.

В этой части статьи будет рассмотрено как взаимодействовать с последовательным портом из пространства ядра (kernel space) и как организовать работу с несколькими подсистемами устройства через RS232 в Linux.

Читать полностью »

Серверы, собранные из специально не предназначенных для этого комплектующих, обычно имеют два недостатка. У них отсутствует аппаратный сторожевой таймер и часто не хватает энтропии для ряда сервисов. Нехватка энтропии особенно актуальна для не сильно нагруженных серверов. Это связанно с тем, что ядро Linux в качестве источника энтропии использует активность системы, а именно: сетевого оборудования, дисковой подсистемы и аппаратных прерываний.

Также в домашнем сервере часто возникает необходимость иметь более экономный, по сравнению с Wi-Fi, радиомодуль для коммуникации с автономными датчиками.

Существует большой выбор устройств, с помощью которых можно решить любую из этих проблем, но подключение каждого из них требует отдельный порт. Оценив ситуацию, в итоге решил разработать устройство 3-в-1 подключаемое в RS232 (COM) порт. Остальные требования получились следующими:

  • Аппаратный сторожевой таймер, пригодный для работы со стандартным демоном watchdog;
  • Генератор истинных случайных чисел на базе эффекта обратного лавинного пробоя p-n перехода;
  • Радиомодуль nRF24L01+ для сбора данных с автономных датчиков.

Таким образом устройство получило наименование WRN от названий составляющих его подсистем: WDT (WatchDog Timer), RNG (Random Number Generator), nRF24L01+.

WRN устройство

Читать полностью »

Аудио плеер на AVR - 1

Во время очередной ревизии радиоэлектронного барахла и распихивания по коробочкам мне попался контроллер AVR atxmega256a3u. Дабы развеять скуку было решено сделать некое подобие звуковой карты, а точнее ЦАП, подключаемый к компьютеру. Что из этого получилось смотрите под катом.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js