Pull to refresh
263.5
Karma
0
Rating
Владимир @32bit_me

Программист

  • Followers 284
  • Following 3
  • Posts
  • Comments

Дебажим U-boot на реальном железе

Development for Linux *
Translation
Tutorial

Продолжение предыдущей статьи, в которой мы ускорили разработку под embedded linux. Рабочая станция + sftp сервер + nfs сервер ускорили на порядок (10х) доставку изменений кода на целевое железо. Теперь не нужно часами компилировать код. В этой статье продолжаем очеловечивать разработку. На этот раз прикручиваем полноценную графическую IDE и пошаговую отладку кода на целевом железе с помощью программатора J-Link. Но пока только загрузчика U-boot. И автоматизируем развертывание рабочей среды разработчика с помощью Docker.

Читать далее
Total votes 16: ↑16 and ↓0 +16
Views 3.5K
Comments 4

Создаем новое ключевое слово в C++

C++ *Compilers *
Tutorial

C++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.

На C++ есть много хороших библиотек. Но нередко изменения в самом языке делали неактуальными большие куски кода, потому что они становились менее надёжными и быстрыми по сравнению с функционалом в самом языке. Правки в стандарт имеют несоизмеримо более сильное влияние, чем любая библиотека.

В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.

Создать!
Total votes 91: ↑89 and ↓2 +87
Views 18K
Comments 43

SerenityOS: Unix-подобная операционная система с кастомным ядром и графическим интерфейсом в стиле 90-х

Selectel corporate blog History of IT Software

Пару лет назад в сети появилась информация о проекте Serenity — Unix-подобной операционной системе для архитектуры x86 с собственным ядром и винтажным интерфейсом. При этом возможности операционной системы заявлялись вполне современные.

Это ОС, написанная с нуля, которая не базируется на коде уже существующих операционных систем. Авторы SerenityOS активно работали над поставленной целью — создание новой операционной системы, пригодной для выполнения большинства привычных нам задач. Код системы пишется на С++. Сейчас проект достиг нового уровня развития — в среде ОС уже можно поработать, составив собственное мнение о SerenityOS. Подробности о новинке — под катом.
Total votes 89: ↑87 and ↓2 +85
Views 18K
Comments 58

System-on-Chip bus: AXI4 simplified and explained

FPGA *Robotics development *Programming microcontrollers *Circuit design *Manufacture and development of electronics *

Protocol AXI4 was developed for High-bandwidth and low latency applications. It is designed to allow communication between master and slave devices. Master is typically a DMA or CPU and slaves are DRAM controllers, or other specific protocol controllers: UART, SPI, and others. Sometimes one component can implement multiple instances of this protocol. Usually, a prefix is used to differentiate between multiple AXI4 interfaces.

For example, Ethernet MAC can integrate DMA and slave interface used to command MAC. MAC can accept commands on the slave interface that contain data about the location of the next ethernet packet and MAC can start fetching this packet using the separate master interface instance.

This article was motivated by common design mistakes AXI4 designers make when they are designing their Digital IP. (Looking at you Xilinx)

Read more
Total votes 10: ↑10 and ↓0 +10
Views 1.2K
Comments 0

Zynq 7000. Обмен информацией между PS и PL

FPGA *CPU DIY Electronics for beginners

Продолжаю повествование о том, как проходит мое изучение возможностей отладочной платы с SoC Zynq 7000 на базе отладочной платы QMTech. В этой статье я опишу то, как я решал задачу примитивного обмена данными между PS и PL с использованием baremetal application и при использовании Linux. Всем интересующимся добро пожаловать под кат!

Читать далее
Total votes 26: ↑26 and ↓0 +26
Views 2.6K
Comments 6

Особенности создания клона Minecraft «DScraft» для маломощной консоли 2004 года, Nintendo DS

Game development *Old hardware Games and game consoles
Sandbox
Translation

DScraft - это адаптация убер-популярной компьютерной игры Minecraft для Nintendo DS. Хотя DScraft даже близко не так популярен, как оригинальная игра, ему всё равно удалось собрать большое комьюнити, которое существует и сегодня, а саму игру загрузили более 500.000 раз только с одного моего сервера. Мне нравится думать, что это хотя бы частично из-за тех вещей в игре, которые обычно не казались возможными на платформе. Вся разработка заняла примерно полтора месяца. В основном было две вещи, которые раньше заставляли людей думать, что Minecraft на DS почти невозможен: GPU консоли и нехватка памяти.

Читать далее
Total votes 28: ↑28 and ↓0 +28
Views 3.8K
Comments 1

Как выглядит стоматология будущего: зубы — это атавизм

Белая Радуга corporate blog Popular science Biotechnologies Health
Есть ближайшее будущее, оно про 3D-принтеры и аугментацию. Вот это уже реальность, хоть и не массовая, мы так делаем:

image
Брекеты для лица: 3D-печать по металлу, ПО проектирования прикуса — и можно смоделировать и пересобрать череп заново.

У нас уже есть крутые штуки в виде 3D-сканеров, цифрового моделирования ортодонтических процессов, 3D-принтеры (фотополимерные и DMLS, не хоббийные FDM) и автоматизированные фрезы. И уже скоро мы ждём новых наработок в виде таргетных бактериофагов, вакцины против адгезивного белка Streptococcus mutans и генно-модифицированных микроорганизмов для заселения полости рта. Возможно, уже недалеко вакцина от кариеса.

Предлагаю пощупать топовую стоматологию, какой она может стать через 10–15 лет и, может, чуть позже, тем более что зубы нам могут и не понадобиться в будущем.

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

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

Потому что мы в переходном процессе эволюции, да-да.
Total votes 90: ↑84 and ↓6 +78
Views 37K
Comments 96

Вопросы на собеседовании для программистов компьютерной графики

Gaijin Entertainment corporate blog Working with 3D-graphics *
Translation

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

Недавно я видел в твиттере довольно много дискуссий о хороших и плохих вопросах на интервью. Некоторые из этих вопросов выглядят полезными.

В основном, наиболее интересные из них выглядят открытыми. Они могут привести к весьма большим и разветвленным обсуждениям или даже не имеют «‎верного» ответа. В конце концов, вам, скорее, нужно не узнать ответ (он всё равно будет 42), а увидеть процесс решения проблемы и/или оценить общие знания и понять собеседуемого.

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

Читать далее
Total votes 18: ↑18 and ↓0 +18
Views 8.5K
Comments 35

Zynq 7000. Собираем Linux и RootFS при помощи Buildroot

FPGA *CPU DIY Electronics for beginners

Продолжаем изучение SoC Zynq 7000 и разбираемся с тем, как организовать подготовку, сборку Linux для отладочной платы QMTech. В прошлой статье я рассмотрел процедуру быстрой сборки (без кастомизации) основных компонентов встраиваемой системы Linux и шаг за шагом прошли путь до приглашения к вводу в работающей ОС. Согласитесь, что если вы новичок - то работа была выполнена колоссальная! К счастью, всю эту работу можно автоматизировать! И в этой статье я хотел бы уделить внимание этому вопросу и рассказать как это сделать с помощью Buildroot. Эту статью можно считать логическим продолжением общего повествования о начале работы с Linux на Zynq.

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

Всем интересующимся - добро пожаловать под кат!

Читать далее
Total votes 16: ↑15 and ↓1 +14
Views 4.4K
Comments 11

Набор в контент-команду FirstVDS — ищем технических авторов для блога на Хабре

FirstVDS corporate blog Habr Content-marketing IT career
Коты и Линукс, скрипты и логи, bash и python, cat и tail, MBR и GPT, Docker и Ansible, SSH и KFC, Vim и emacs. Если шарите в этом, возможно, вы — тот, кто нам нужен. В котах, кстати, разбираться не обязательно.

На связи FirstJohn с предложением, над которым стоит подумать.



Читать дальше →
Total votes 19: ↑8 and ↓11 -3
Views 887
Comments 4

7 очевидных приемов копирайтинга, которые используются не всеми (почему-то)

ITSOFT corporate blog Internet marketing Content-marketing Popular science Brain
Translation

Приемы в текстах, основанные на поведенческих реакциях человека. Некоторые известные (особенно в профессиональных кругах), некоторые новые.

Если вы хотите писать более результативно, читайте до конца!

Читать
Total votes 18: ↑10 and ↓8 +2
Views 4K
Comments 4

USB на регистрах: isochronous endpoint на примере Audio device

Programming microcontrollers *Circuit design *
image<картинка с платой и наушниками>
Еще более низкий уровень (avr-vusb): habr.com/ru/post/460815
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID

Сегодня рассмотрим последний тип конечных точек, изохронный. Он предназначен для передачи данных, критичных к времени доставки, однако не гарантирует ее успешность. Самый классический пример — аудиоустройства: колонки, микрофоны.

Как ни странно, этот тип конечной точки оказался самым мозговыносящим (и это после всего, что я успел повидать с stm'ками!). Тем не менее, сегодня мы сделаем аудиоустройство и заодно чуть-чуть допилим ядро библиотеки USB. Как обычно, исходные коды доступны:
github.com/COKPOWEHEU/usb/tree/main/4.Audio_L1
github.com/COKPOWEHEU/usb/tree/main/4.Audio_F1
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Views 3K
Comments 9

Embedded Linux в двух словах. Первое

Configuring Linux *Open source *C *DIY
Tutorial

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

Платформой послужит плата BeagleBone Black с процессором производства Техасских Инструментов AM3358 и ядром Arm Cortex-A8, и, чтобы не плодить мигающие светодиодами мануалы, основной задачей устройства будет отправка смайлов в топовый чат, широко известного в узких кругах, сайта,  в соответствии с командами от смайл-пульта. Впрочем, без мигания светодиодами тоже не обошлось.

Читать далее
Total votes 47: ↑45 and ↓2 +43
Views 17K
Comments 15

Лингвистическая фантастика. Книги, в которых язык больше, чем просто средство для общения

Science fiction

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

Очень приятно знакомиться с изобретательными способами показать, что речь — это инструмент, причем весьма функциональный и пластичный. На тему необычных языковых систем, вопросов взаимопонимания и того, как слово может влиять на человека (и не только) можно сказать не меньше интересных вещей, чем по поводу искусственного интеллекта или терраформирования Марса. Вот несколько тому примеров.

Читать далее
Total votes 34: ↑32 and ↓2 +30
Views 20K
Comments 23

Stm32 + USB на шаблонах C++. Продолжение. Делаем HID

C++ *Programming microcontrollers *

В прошлый раз показал один из способов распределение ресурсов между конечными точками, а именно регистров EPnR, памяти под дескрипторы буферов и под сами буферы. Предлагаю продолжить начатое и рассмотреть написанную библиотеку на примере создания простого HID-устройства, позволяющего управлять светодиодом.

Читать далее
Total votes 22: ↑21 and ↓1 +20
Views 5K
Comments 13

Еще больше доступной акустики — делимся обзорами трех пар примечательных систем полочного типа

Аудиомания corporate blog Gadgets Computer hardware Periphery Sound

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

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 27K
Comments 29

Введение в неблокирующие алгоритмы

Programming *C++ *C *Development for Linux *
Translation

Неблокирующие алгоритмы широко применяются в ядре Linux когда традиционные примитивы блокировки либо не могут быть использованы, либо недостаточно быстры. Эта тема многим интересна и время от времени всплывает на LWN. Из недавнего — вот эта июльская статья, которая собственно и сподвигла меня написать свою серию. Ещё чаще разговор заходит про механизм read-copy-update (RCU — руководство 2007 года всё ещё актуально), подсчёт ссылок, и способы сделать более понятные, высокоуровные API ко всему этому разнообразию. Ну а сейчас вас ждёт погружение в идеи, стоящие за неблокирующими алгоритмами, а также их использованием в ядре.


Знание низкоуровневой модели памяти в целом считается продвинутым уровнем понимания, которого страшатся даже опытные программисты-ядерщики. Словами нашего редактора (из его июльской статьи): «Понять модель памяти можно лишь правильно повёрнутым мозгом». Говорят, что моделью памяти Linux (и файлом memory-barriers.txt в частности) можно пугать детей. Порой для достижения эффекта достаточно всего лишь рявкнуть “acquire” или “release”.


И в то же время, механизмы вроде RCU и seqlocks так широко применяются в ядре, что практически каждый разработчик рано или поздно сталкивается с фундаментально неблокирующими интерфейсами. Поэтому многим будет полезно иметь хотя бы базовое представление о неблокирующей синхронизации. В этой серии статей я расскажу, что же на самом деле означает acquire и release-семантика, а также приведу пять сравнительно простых паттернов, которые покрывают большинство вариантов использования неблокирующих примитивов.

Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Views 15K
Comments 60

Умный print для C

C *

Для тех кто пишет на С, возможно, будет интересно как мне удалось создать умную функцию print(), в которую можно кидать переменные любого типа — дженерик print.

show me the code
Total votes 90: ↑87 and ↓3 +84
Views 13K
Comments 29

Анализ исходного кода Another World

Game development *Reverse engineering *
Translation
image

Я потратил две недели на чтение и реверс-инжиниринг исходного кода Another World (в Северной Америке игра вышла под названием Out Of This World). Моя работа основана на обратной разработке Грегори Монтуа (Gregory Montoir) оригинального исполняемого файла для DOS из двоичного кода в C++.

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

Всё это умещалось на гибкий диск ёмкостью 1,44 МБ и работало на 600 КБ ОЗУ. Совсем неплохо для 1991 года! Как обычно, я привёл свои заметки в порядок — это поможет кому-нибудь сэкономить несколько часов работы.
Total votes 74: ↑74 and ↓0 +74
Views 20K
Comments 16

Information

Rating
3,628-th
Date of birth
Registered
Activity