Рубрика «embedded» - 9

Поднимаем SOC: ARM + FPGA

На днях ко мне в руки попала EBV SoCrates Evaluation Board. В двух словах — это плата с SoC от фирмы Altera, на борту которой есть двухъядерный ARM и FPGA Cyclone V.

ARM и FPGA на одном чипе — это должно быть очень интересно! Но для начала всё это добро нужно «поднять».
Об этом процессе я и поведаю в данной статье.

Если вам в руки попала такая или подобная плата и вы не до конца уверены, что же с ней нужно делать. Если вы всегда думали, что FPGA — это что-то сложное и непонятно, как к этому подступиться. Или вы просто любопытный инженер. Тогда заходите. Мы всем рады.

А в качестве маленького бонуса измерим пропускную способность между CPU и FPGA.
Читать полностью »

Возникла задача сделать USB-устройство, которое, будучи вставленным в NAS, воспринималось бы им как USB-линк к источнику бесперебойного питания (именно через такое USB-соединение NAS узнает от ИБП об исчезновении питания, разрядке батарей и т.д.).

1. Внутри USB

Для решения задачи важно понимать, как USB устроен и работает. Очень короткое и доходчивое введение для знающих английский язык называется USB in a NutShell (upd: есть перевод). Затем советую по возможности пролистать книгу "USB Complete".

После этого, если потребуется, уже можно что-то уточнять в спецификациях, изучать классы, знакомиться с USB 3.0 SuperSpeed и т.д., но я уверен, что текста USB in a Nutshell и хороших примеров достаточно, чтобы сделать свое первое экспериментальное устройство.
Читать полностью »

image

Аннотация

В статье описывается фреймворк, позволяющий создавать графические кроссплатформенные приложения, написанные на языке Java, но при этом абсолютно не зависящие ни от Oracle JRE, ни от OpenJDK. Основная идеология фреймворка — по возможности снять с разработчика заботы об обеспечении «родного» look and feel для приложения под каждой операционной системой.

Фактически, на выходе вы получите исполняемый файл, опирающийся только на системные API, на котором нигде не будет клейма «написано на Java».

Все компоненты фреймворка имеют либеральные лицензии (BSD либо Apache), что позволяет использовать их в любых (в том числе, коммерческих) разработках.

Фреймворк находится в стадии публичной alpha-версии, что означает некоторую его работоспособность, но непроверенность. Использование поощряется (я постараюсь прислушаться к жалобам на проблемы и помогу их решить), но работоспособность не гарантируется.

Готовая, собранная версия приложений, демонстрирующих работу фреймворка под всеми платформами, находится здесь.

Всех интересующихся подробностями милости прошу под кат.
Читать полностью »

image

В предыдущих сериях:

  1. Взламываем D-Link DSP-W215 Smart Plug
  2. Взламываем D-Link DSP-W215 Smart Plug. Снова
  3. Взламываем D-Link DSP-W215 Smart Plug. Снова и опять

До сих пор, все найденные в DSP-W215 уязвимости могли быть выполнены только из LAN, ну, если вы не глупец и не открыли доступ к Smart Plug из интернета.
Типичным способом атаки устройств со встроенным веб-сервером, доступным только из внутренней сети, типа того, что у DSP-W215 — через CSRF. Проблема этого метода в том, что любой веб-браузер будет кодировать (urlencode) передаваемые данные, например, адрес возврата, но до этого момента мы использовали уязвимости, которые не декодируют (urldecode) наши данные (уязвимость в функции replace_special_char, которую мы эксплуатировали в предыдущей статье, декодирует только ограниченный набор ASCII-символов).

Бинарный файл my_cgi.cgi, который является основной уязвимой целью, содержит функцию-декодировщик «decode», которая декодирует POST-данные. Этой функции передается два аргумента: указатель на закодированные данные и указатель на буфер, где хранятся раскодированные данные:

void decode(char *encode_buf, char *decode_buf);

Эта функция просто проходит циклом по всем байтам в encode_buf и раскодирует или копирует их в decode_buf:
imageЧитать полностью »

Вот мы снова и опять.
image

В последнем эксплоите к DSP-W215 я говорил, чтобы функция get_input_entries не падала, нужно использовать имя «storage_path» в POST-запросе. Так нужно было сделать из-за того, что есть еще одно переполнение буфера, на этот раз в функции get_input_entries, которую вызывает get_input_entries, если имя пост параметра отлично от «storage_path» или «path»:
image

В функцию replace_special_char передается один аргумент — указатель на обрабатываемое POST-значение:
imageЧитать полностью »

Расщепляем Quark. Микроархитектура нового процессора Intel

Кварк — это фундаментальная, то есть бесструктурная элементарная частица, введенная в теорию в 1964 году, которую до настоящего времени не удалось описать как составную. Intel Quark — это процессор для Интернета Вещей, выпускаемый Intel с осени 2013, но до сих пор не имеющий публичного описания своей внутренней структуры и воспринимающийся вне Intel как «черный ящик». — Как вы яхту назовете, так она и поплывет? Но я в это не верю. Скорее уж, как вы яхту назовете, так она вас назовет (если в ней стоит бортовой компьютер). В общем, в этом посте я исправлю ситуацию и расскажу, как устроен Quark.
Читать полностью »

image

Выход нового SoC процессора Intel Quark и первых систем на его базе заставили сжаться мое сердце и предаться воспоминаниям. У каждого инженера-системщика был любимый проект, даже детище, родиться которому и выйти в свет так и не было суждено по разным причинам.
Хочу немного рассказать о своем подобном проекте и порассуждать, что было бы, если б тогда мне были доступны сегодняшние технологии типа Quark. Также хотелось бы спросить Хабросообщество: что бы вы смогли реализовать, имея выбор из сегодняшних систем. Ну а комментарии к этому посту — самое подходящее место для холивара ARM vs. x86, так как Intel вступает на опасную территорию, где давно правят контроллеры с RISC-ядрами от ARM и Atmel. Но тогда просьба сравнивать не просто железки (мегагерцы, килобайты, и милливатты), но рассматривать в комплексе с программной экосистемой и в контексте конкретного применения контроллеров.
Читать полностью »

В первой части статьи я рассказал о компании DMP Electronics, малоизвестном тайваньском производителе x86-совместимых процессоров семейства Vortex86, а также материнских плат и компьютеров на их базе. Во второй части я обещал привести сравнительные характеристики процессора Vortex86MX, и сделать обзор компьютера eBox-3300MX на его базе. К сожалению, по не зависящим от меня причинам, вторая часть ещё не закончена, и я вынужден опубликовать третью часть раньше второй. В третьей части речь пойдёт об Arduino.

Не прошло и месяца, как Intel объявила о начале продаж первого x86-совместимого Arduino-контроллера, а DMP Electronics уже выпустила свою версию платы на базе своего собственного процессора Vortex86EX. Новая плата получила название 86Duino.x86 compatible, часть 3: «86Duino наносит ответный удар»Читать полностью »

x86 compatible, часть 1: «Тёмная лошадка с Тайваня»Пожалуй, самый частый вопрос, который разработчики KolibriOS слышат в свой адрес: "Когда вы собираетесь портировать Колибри на ARM?" Мы всегда отвечаем, что это невозможно, KolibriOS написана на ассемблере FASM с использованием инструкций x86, и портирование её на ARM будет означать практически полное переписывание с нуля. Но главная причина в том, что на рынке есть достаточно компьютеров на x86-совместимых процессорах, размером как Raspberry Pi и стоимостью всего на $5-$35 дороже, а это делает портирование не только невозможным, но также и бесполезным занятием. Чтобы читатели не говорили, что x86-совместимый компьютер за $40 — это «сферический конь в вакууме», я решил написать обзорный цикл из 3 статей о нескольких таких компьютерах. Сразу оговорюсь, что статьи не спонсируются — всё это железо я покупал на свои деньги, и на части него я практически каждую неделю тестирую Колибри — не стала ли она, случаем, слишком медленной? Кому интересно — прошу под кат.
Читать полностью »

Я бы хотел продолжить тему блока впрыска топлива на базе stm32 и рассказать о текущем статусе проекта rusEfi.

rusEfi: opensource проект DIY инжектора

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


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