Как стать автором
Поиск
Написать публикацию
Обновить
2
0

Пользователь

Отправить сообщение

История POSIX: путь к портируемому ПО

Время на прочтение8 мин
Количество просмотров8.1K

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

Именно так произошло с Unix, который изначально был написан Кеном Томпсоном на языке ассемблера более пятидесяти лет назад. Первые версии Unix писались для платформы PDP-7, а для портирования его на PDP-11 нужно было переписывать код. Когда Дэннис Ритчи создал язык программирования C, и вместе с Томпсоном они переписали на нём основную часть кода Unix, внезапно оказалась возможной портируемость ПО. Тому были две главные причины. Во-первых, код, написанный на языке высокого уровня, не зависит от платформы, потому что компиляторы транслируют его в язык ассемблера целевой архитектуры. Это ещё важнее для целевых платформ на основе процессоров RISC, так как они требуют написания гораздо большего количества ассемблерных команд, чем процессоры CISC. Даже при портировании Unix на другую платформу основная сложность заключалась лишь в адаптации зависящих от архитектуры частей кода. С другой стороны, сама операционная система абстрагирует все особенности оборудования от пользовательской программы.

Программистам не нужно реализовывать многозадачность, управление памятью и драйверы для используемых ими устройств, потому что всё это часть ядра ОС и работает в адресном пространстве ядра. Пользовательские программы работают в пользовательском адресном пространстве и получают доступ ко всем предоставляемым ОС функциям при помощи интерфейса системных вызовов. В ОС реального времени, например, в Zephyr OS ситуация немного отличается, но принцип изоляции и защиты памяти для пользовательских программ сохраняется. Это приводит к двум выводам:

Читать далее

Мультитул для разработчика электроники

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров23K

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

Идея понятна - заменить генераторы частоты, терминалы RS-485 и CAN одним самодостаточным прибором. В этой статье расскажу о том, что за девайс я собрал.

Читать далее

Просто о сложном: как я написал книгу по реверс-инжинирингу встраиваемых систем

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров7.4K

Большую часть своей карьеры я руководил какими-то коллективами: брал себе стажеров, кого-то курировал, больше 10 лет преподавал в Бауманке. Мне всегда хотелось делиться своими знаниями. И в какой-то момент я понял, что у меня нет источника информации, который я могу дать человеку со словами: «На, прочитай, и на многие вопросы, которые тебя сейчас, в самом начале пути, мучают, ты получишь ответы — кратко, сжато и в доступном виде».

И тогда я подумал, что было бы неплохо написать книгу...

Читать далее

Плохой тайм-менеджмент — официальный спонсор твоих выгораний

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров47K

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

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

Читать далее

Тестирование NAND и eMMC

Уровень сложностиПростой
Время на прочтение24 мин
Количество просмотров14K

Когда я плотно занимался аппаратным тестированием, в рамках разработки embedded-устройств, часто бывало так, что инженеры-разработчики и я оказывались в условиях жесткого ограничения в выборе возможных компонентов NAND или eMMC. И в этой связи очень часто возникала необходимость дополнительных проверок каждого из компонентов на долговечность и качество работы. Очень часто приходилось проверять чипы-кандидаты на общий ресурс записи/чтения, скорости операций и т. п. И мне пришла идея, почему бы не поделиться своим опытом с другими специалистами, перед которыми стоят аналогичные задачи. Я хотел бы рассказать в данной статье, что такое Flash-память, почему они выходят из строя и как я организовал тестирование, как через тестирование минимизировать риски при выборе устройства хранения для разрабатываемого устройства. 

Всем, кому интересна данная тема — приглашаю под кат.

Читать далее

Погружение в матрицу: расширение RISC-V от T-Head

Время на прочтение17 мин
Количество просмотров2.6K

Продолжим нашу «антологию матричных расширений» текстом про независимое матричное расширение RISC-V от компании T-Head. 

Почему мы рассматриваем именно его? Интересно понять, что из себя представляет будущее стандартное матричное расширение RISC-V, попробовать реализовать алгоритм с его использованием, соотнести это со своим предыдущим опытом низкоуровневых оптимизаций. Кроме того, это интересная возможность попробовать написать программу для расширения, которого еще нет ни в одном процессоре, и запустить ее на эмуляторе.

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

Начать погружение

Китайские СВЧ подложки для печатных плат. Можно ли использовать? Мой опыт

Время на прочтение3 мин
Количество просмотров3.8K

Привет! Меня зовут Олеся, в свободное время веду блоги о разработке. Много пишу о СВЧ печатных платах. В последнее время всё большую долю рынка в области электроники занимают китайские производители. В этой статье я ответила на вопрос, поставленный в названии.

далее

Устройство памяти процессов в ОС Linux. Сбор дампов при помощи гипервизора

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров12K

Иногда для анализа ВПО или, например, для отладки какого-либо процесса может потребоваться дамп памяти процесса. Но как его собрать без отладчика? Постараемся ответить на этот вопрос в этой статье.

Задачи:

- Обозначить цель сбора дампа процесса.

- Описать структуру памяти процессов в Linux и отметить различия в старой и новой версиях ядра ОС

- Рассмотреть вариант снятия дампа памяти процесса внутри виртуальной машины на базе связки гипервизора Xen и фреймворка с открытым исходным кодом DRAKVUF.

Читать далее

Фен и нижний подогрев. Снятие/установка BGA без реболлинга

Время на прочтение5 мин
Количество просмотров12K

Приветствую, Хабр!

В статье хочу показать процесс снятия чипов в BGA корпусе и установки на новую плату не перекатывая шарики. Опишу некоторые нюансы, которые позволяют осуществлять данную операцию более или менее безболезненно.

Читать далее

7 производителей печатных плат вместо JLCPCB. Где можно заказать платы в 2023 году

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров97K

Привет, Хабр! Я – Дима, в компании отвечаю за закупку компонентов. Долгове время у нас было два поставщика печатных плат. Один из них вышеупомянутый JLCPCB. После того, как он ушел из России, пришла проблема откуда не ждали – второй поставщик начал подводить по срокам и отгружать откровенный брак. 

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

Для удобства в конце привожу сводную таблицу с кратким описанием преимуществ и недостатков производителей.

Читать далее

Фитнес-трекер для скейта

Время на прочтение18 мин
Количество просмотров20K

Привет, Хабр!

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

Компоненты, схема, плата, производство в Китае и результаты, обо всём этом –– под катом.

Читать далее

Тактовая кнопка, как подключить правильно к "+" или "-"

Время на прочтение5 мин
Количество просмотров27K

Вы ни когда не задумывались, почему в схемах иногда кнопки подтягивают к "+" питания, а иногда к общему проводу? Если прямо сейчас набрать в поиске: "тактовая кнопка ардуино" - то на большинстве картинок мы увидим именно прямое подключение, когда резистор подключен на землю. Но, если посмотреть схемы без участия ардуино, то ситуация меняется в корне, чаще можно будет встретить инвертированное включение. Так как же будет подключать кнопку правильнее? Давайте вместе попробуем разобраться в этом вопросе!

Читать далее

Как я разрабатывал Российский планшет

Время на прочтение8 мин
Количество просмотров51K
Доброго времени суток, друзья!



В этой статье не будет Arduino, Raspberry, Olimex, переноса внутренностей планшета в свой «кастомный» корпус из картона и пластыря и т.д. Только суровая разработка, только хардкор…
Читать дальше →

Достучаться до небес, или FSM на шаблонах

Время на прочтение13 мин
Количество просмотров17K

Здравствуйте! Меня зовут Александр, я работаю инженером-программистом микроконтроллеров.

Пишу на С/С++, причем предпочитаю плюсы, ибо верую в их эволюционную неизбежность в embedded.

Мир встроенного ПО, язык С++ динамично развиваются, поэтому разработчикам важно не отставать и поддерживать свои скиллы и наработки актуальными моменту.

Я стараюсь следовать этому очевидному посылу, благо небожители ведущие С++ программисты и консультанты щедро делятся своим опытом и идеями на разных площадках (например здесь, или здесь).

Некоторое время назад я посмотрел мощный доклад Сергея Федорова про построение конечного автомата с таблицей переходов на шаблонах.

Читать далее

Как перестать писать прошивки для микроконтроллеров и начать жить

Время на прочтение8 мин
Количество просмотров49K

Здравствуйте, меня зовут Евгений, и мне надоело писать прошивки для микроконтроллеров. Как это это случилось и что с этим делать, давайте разберемся.

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

Информация

В рейтинге
5 651-й
Зарегистрирован
Активность