Быстрое удаление пробелов из строк на процессорах ARM

Автор: admin от 9-07-2017, 18:50, посмотрело: 76

Быстрое удаление пробелов из строк на процессорах ARMПредположим, что я дал вам относительно длинную строку, а вы хотите удалить из неё все пробелы. В ASCII мы можем определить пробелы как знак пробела (‘ ’) и знаки окончания строки (‘r’ и ‘n’). Меня больше всего интересуют вопросы алгоритма и производительности, так что мы можем упростить задачу и удалить все байты со значениями меньшими либо равными 32.



В предыдущией статье, где я задавал вопрос об удалении пробелов на скорость, лучшим ответом было использование векторизации с помощью 128-битных регистров (SSE4). Оно оказалось в 5-10 раз быстрее подхода в лоб.



Очень удобно, что во всех процессорах имеются 128-битные векторные регистры, также как в процессорах x64. Неужели процессоры ARM могут работать настолько же быстро, как процессоры x64?
->

Категория: Программирование

 

Генерируем произвольные последовательности на выводах платы Raspberry Pi

Автор: admin от 8-06-2017, 01:05, посмотрело: 163

Генерируем произвольные последовательности на выводах платы Raspberry Pi

Автор: Николай Хабаров, Embedded Expert DataArt, евангелист технологий умного дома.

В этой статье я расскажу, как написать обычное user space-приложение на Python для современного ARM-процессора с ОС Linux для генерирования сложных последовательностей импульсов на выводах платы. Суть идеи — использовать DMA-модуль процессора для копирования из предварительно подготовленного буфера в памяти в GPIO с высокой точностью по времени.

Когда речь заходит о необходимости сгенерировать сложную последовательность импульсов, например, для шаговых двигателей, обычно используют старые добрые простенькие микроконтроллеры с установленной специальной операционной системой реального времени или вообще без операционной системы. Реализация при этом, в лучшем случае, написана на C++. Сейчас процессоры шагнули далеко вперед и имеют массу преимуществ: производительность, возможность использования операционной системы Linux со всей инфраструктурой и ПО, а также высокоуровневых языков программирования, таких как Python. И все же современные микроконтроллеры для генерирования сложных последовательностей на выводах GPIO, как правило, не используют.

Я реализовал генерацию импульсов для управления шаговыми двигателями проекта PyCNC — проекта контроллера машин с ЧПУ, станков, 3D-принтеров, полностью написанного на Python и запускаемого на современном ARM-процессоре на плате Raspberry Pi.

Статья может быть полезна желающим реализовать генерацию сложных последовательностей установки уровней на выводах одного или нескольких GPIO на других высокоуровневых языках программирования, используя DMA-модули других процессоров.

Категория: Веб-разработка, Linux

 

Rust, Eclipse и STM32

Автор: admin от 23-03-2017, 08:55, посмотрело: 117

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

  • Свежий GNU ARM Embedded Toolchain

  • System Workbench for STM32 (опционально)

  • Свежий Eclipse CDT

  • GNU ARM Eclipse Plugin

  • Rust

  • RustDT. Для комфортной разработки также рекомендуется установить Racer, Rainicorn и rustfmt.



Идея состоит в том, чтобы с скомпилировать написанную на Rust программу в библиотеку, которую можно будет слинковать с помощью тулчейна для ARM.
В итоге мы сможем даже вполне комфортно дебажить смешанный код на Rust и С.

Категория: Программирование

 

Повесть о невозможном баге: big.LITTLE и кэширование

Автор: admin от 24-01-2017, 16:55, посмотрело: 136

Когда кто-то произносит слово многоядерный, то мы бессознательно подразумеваем SMP. Это успешно срабатывало для нас до недавнего времени, пока ARM не объявила о big.LITTLE. Архитектура ARM big.LITTLE является первым массово производимым примером архитектуры AMP, и как мы увидим далее, она поднимает планку сложности многоядерного программирования еще выше.

Категория: Программирование, Веб-разработка

 

Кросскомпиляция под ARM

Автор: admin от 17-01-2017, 13:30, посмотрело: 279

Достаточно давно хотел освоить сабж, но всё были другие более приоритетные дела. И вот настала очередь кросскомпиляции.

В данном посте будут описаны:


  • Инструменты

  • Элементарная технология кросскомпиляции

  • И, собственно, HOW2


  • Кому это интересно, прошу под кат.

    Категория: Операционные системы » Linux

     

    Real-time BeagleBone: использование высокоскоростных выводов

    Автор: admin от 11-01-2017, 19:30, посмотрело: 276

    Real-time BeagleBone: использование высокоскоростных выводов

    Здравствуйте, уважаемые хабравчане! Давно уже являюсь читателем Хабра, но до сих пор не мог найти достойной темы для публикации. И вот, наконец, хорошенько прошерстив Хабр и GT, удивился отсутствию публикаций, посвященных программируемой подсистеме реального времени (Добро пожаловать

    Категория: Программирование, Linux

     

    Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 2, начало…

    Автор: admin от 26-12-2016, 09:40, посмотрело: 342

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


    В прошлой части я рассказывал как реализовать опрос состояния порта МК, например для опроса подключенной к ней кнопки. Вообще порт в STM32 МК устроен весьма сложно. Вот схема GPIO порта из мануала:
    Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 2, начало…

    Категория: Программирование

     

    Запускаем Linux на FPGA: Hello, World

    Автор: admin от 19-09-2016, 11:25, посмотрело: 178

    Запускаем Linux на FPGA: Hello, World

    Вдохновившись серией статей на сайте проекта Марсоход, в которых автор пытается запустить на FPGA-плате Марсоход 2 открытую систему на кристалле Amber SoC и Linux, я решил попробовать повторить этот опыт на своей плате Terasic DE2-115. Но, вместо древней как говно мамонта устаревшей версии Linux 2.4.27, я буду запускать последнюю версию Linux на данный момент — 4.8.0-rc5.

    Категория: Программирование, Системное администрирование, Веб-разработка, Linux

     

    Немного о ARM Security Extensions (aka ARM TrustZone)

    Автор: admin от 10-09-2016, 15:20, посмотрело: 228

    О чем эта статья


    На Хабре уже несколько раз упоминали о

    Категория: Программирование, Системное администрирование, Информационная безопасность

     

    Жизнь в условиях тотального подключения к сети

    Автор: admin от 8-09-2016, 10:40, посмотрело: 129

    Стало известно, что один из ведущих телекоммуникационных холдингов Японии, SoftBank (владелец SoftBank Mobile), приобрел за 23,4 млрд фунтов стерлингов британскую компанию ARM Holdings, специализирующуюся на разработке микропроцессоров. Новость оказалась несколько неожиданной, особенно с учетом того, что сфера интересов SoftBank в основном распространяется на рынок мобильной связи, и освещалась главным образом с точки зрения последствий для британского технологического сектора, особенно на фоне результатов голосования за выход Великобритании из Евросоюза, однако она несет в себе определенный посыл и для операторов мобильной связи, и для Интернета вещей (IoT) и даже для промышленного Интернета вещей, которым стоит уделить отдельное внимание.

    Жизнь в условиях тотального подключения к сети
    : Жизнь в условиях тотального подключения к сети

    Категория: Программирование, Веб-разработка, Информационная безопасность

     
    Назад Вперед