Search
Write a publication
Pull to refresh
297
0.2
Дмитрий Кашицын @Halt

Программист, линуксоид, паяльник-железячник

Send message

STM32: SPI: LCD — Вы всё делаете не так [восклицательный знак]

Reading time8 min
Views90K
Надеюсь сообщество простит меня за такой заголовок, просто в последнее время все чаще и чаще сталкиваюсь с программами в которых к микроконтроллерам STM32 подключают различные дисплеи с интерфейсом SPI и очень часто передачу данных при этом делают не правильно.
Как следствие — либо код не работает совсем и тогда в него внедряют различные задержки, или пишут код таким образом что он гарантированно будет работать медленно (по сравнению с возможной скоростью). А кто то, не разобравшись просто копирует чужой «с костылями» код, и потом такие «произведения» ходят по интернету из примера в пример…
Блок SPI описанный в данной статье точно есть у контроллеров семейств: STM32F1, STM32F2, STM32F4. По другим смотрите Reference Manual.

Откуда растут такие проблемы и каким образом они решаются под катом.
Читать дальше →

Так ли безопасен Tox, как его малюют?

Reading time6 min
Views104K
Tox Sux
Всем привет!

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

В последнее время наблюдается нездоровая тенденция переоценивать защищенность подобных систем только на основании того, что они P2P. Буду излагать объективные факты и дополнять их своими комментариями, чтобы не бросаться громкими фразами в пространство. Выводы предлагаю делать самостоятельно.

Заранее отвечу на вопрос: мой pull request был принят.
А теперь факты:

Несколько фан-теорий о Звездных Войнах

Reading time11 min
Views36K
Всем привет!

Предлагаю гиковский разговор на тему Звездных Войн(ЗВ). Для начала, небольшой q&a, о чем я.

Что это?

Немного фанатских теорий на тему Звездных Войн (кроме очевидного)… Под определённым углом можно избавиться от некоторых сюжетных нестыковок, потерь, при переходе от эпизода к эпизоду, нелепых совпадений и.т.д.

Зачем мне это читать?

Если не любите ЗВ — незачем. В противном случае может быть увидите новые сюжетные линии в знакомой истории. Возможно, вам, как и мне, от этого станет интереснее смотреть фильм, а может вы все это и так заметили, но вам не с кем было об этом поговорить.

Это что фанфик?

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

Спойлеры?

Да, без них — никак, но только из оригинальной и новой трилогии, игры Force Unleashed и немного из мультсериалов «Войны Клонов» и «Повстанцы». Седьмой эпизод, как бы мне этого не хотелось, включать не буду, ещё не все посмотрели.

Расширенная вселенная?

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

Обзор и сравнительное тестирование ПЭВМ «Эльбрус 401‑PC». Часть первая — аппаратное обеспечение

Reading time9 min
Views92K
Недавно у нас проездом побывал интересный гость — отечественный персональный компьютер с 4‑ядерным процессором «Эльбрус» оригинальной архитектуры, разработанной фирмой МЦСТ. После знакомства с его особенностями и проведения замеров производительности, хотелось бы поделиться впечатлениями и результатами.

Вид системного блока Эльбрус 401-PC спереди и сбокуВид материнской платы MBE2S‑PC v4 с процессором Эльбрус-4С, ракурс с юга

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

Стражи ночи

Reading time9 min
Views82K
Будучи высококвалифицированным исследователем, я потратил немало времени на продвижение науки вперёд. Но я родился на Юге и искренне убеждён, что прогресс — это выдумка, и что нужно готовиться к Судному дню, к жатве того, что мы посеяли и к появлению быстрых зомби, медленных зомби, и даже вежливых зомби, которые обращаются к вам «сэр» или «мадам», но в итоге пытаются съесть ваш мозг дабы заполучить ваши навыки. Когда нагрянет революция, нужно быть готовым; поэтому в моменты тишины и покоя, когда я не произвожу очередной прорыв в науке, я размышляю над тем, что же я буду делать, когда прогноз погоды изменится на «РЕКИ КРОВИ ЦЕЛЫЙ ДЕНЬ ДО СКОНЧАНИЯ ВРЕМЁН».

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

Но! Но… Самым важным членом моей банды будет системный программист, ибо в гоббсовском кошмаре невероятных масштабов умеющему отладить драйвер устройства или распредёленную систему человеку можно доверять; системный программист видел ужасы Вселенной и понимает безысходность бытия. Системный программист писал драйверы для устройств, прошивку которых создавал то ли пьяный ребёнок, то ли трезвый карась. Системный программист отлавливал проблему с сетью через восемь машин, три часовых пояса и с дружеским визитом в Омск, откуда ее перенаправили в левое переднее копыто той лошади, что избавила Трою от перенаселения.1 Системный программист читал исходники ядра для лучшего понимания процессов мироздания и видел комментарий «И ЭТО РАБОТАЕТ ЛОЛ» в коде планировщика, и не смеялся он, но плакал; и отправил он патч ядра для восстановления баланса Силы и устранения инверсии приоритетов, что приводила к зависанию MySQL. Системный программист знает, что делать, когда общество падёт, потому что он уже живет в мире, где царит беззаконие.
Читать дальше →

Объединение печатных плат с gerbmerge

Reading time7 min
Views18K
Мы — небольшой стартап, который занимается разработкой современной электроники. Разумеется, мы регулярно делаем тестовые партии небольшого размера, для изготовления которых заказывать полноценное производство не имеет смысла — стоимость подготовки будет самой крупной статьёй бюджета. Поэтому мы регулярно придумываем, как быстрее, дешевле и эффективнее собирать эти партии самостоятельно. Иногда в процессе рождается что-то новое или допиливается что-то старое. Результатом мы и будем с вами периодически делиться.

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

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

У нас в данном случае было и то, и другое — и комплект, и желание сэкономить на производстве пробной партии.



Это — один проект. В нём 32 платы 13 разных видов. Как собрать такой проект за четверть часа — ниже.

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

«Air Bonsai» – парящее дерево

Reading time3 min
Views33K
Приветствуем наших читателей на страницах блога iCover! Некоторые технологические новинки приходят и уходят, так и не сумев привлечь нашего внимания, другие, напротив, ярки и неожиданны, запоминаются моментально и задерживаются на годы. Возможно, именно таким событием суждено стать неординарному японскому стартапу “Air Bonsai“ Масанори Имаеcи (Masanori Imayoshi) и Хикару Хоcи (Hikaru Hoshi), совместившему в своей концепции философию древнего японского искусства Бонсай и возможности самых современных технологий.

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

ssh: Вытаскиваем для себя чужой порт из-за NAT

Reading time2 min
Views41K

Что делает ssh -R © erik, unix.stackexchange.com

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

Опция -R


В ssh есть режим, в котором он открывает порт на сервере и, через туннель от сервера до клиента, перенаправляет соединения в указанный адрес в сети клиента.

То есть нам нужно поднять sshd, попросить человека выполнить

$ ssh -N -R server_port:target:target_port sshd_server

И у нас на машине с sshd откроется порт server_port, который будет туннелироваться в target:target_port в сети этого человека.

Как в sshd_config ограничить права

... а также запустить sshd от пользователя

Несколько вещей, о которых стоит помнить программисту в возрасте

Reading time11 min
Views128K
Если вы из тех, кто «работал ещё Там-То!» и «делал ещё То-То!», а сейчас счастливо отдыхаете на пенсии — эта статья не для вас. Просто спасибо за труд и примите мои поздравления. Но если же вы, как и я, даже став немного старше всё ещё ощущаете страсть к программированию, радуетесь виду кода и не можете устоять перед желанием написать ещё что-нибудь, тогда продолжайте читать.

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

Я смирился с мыслью, что мой лучший код уже написан — в прошлом. Мне было уже 54 года (немало!) и я, вероятно, уже не мог писать код так же хорошо, как и раньше. Кто знает — может быть у меня уже начала отказывать память, ну или я просто выучил всё, что был способен в жизни выучить. Мой настрой подкреплялся наблюдениями окружающей меня реальности. Все новые технологии выглядели для меня чудаковато. Я ненавидел Node.js. Я считал все фреймворки для веб-разработки ужасными. И я сетовал на то, что классические способы разработки ПО разрушились и превратились в набор клише, которые нынче впариваются под умными названиями типа Agile или «экстремальное программирование». Я скучал за днями, когда люди писали спецификацию на будущее ПО, программировали, а затем тщательно тестировали его. И когда в каждой статье не было тысячи жаргонных словечек.
Читать дальше →

Пишем DXE-драйвер для снятия скриншотов с BIOS Setup и других UEFI-приложений

Reading time18 min
Views37K
В прошлой статье про SecureBoot мне очень не хватало возможности сделать снимок экрана при настройке UEFI через BIOS Setup, но тогда выручило перенаправление текстовой консоли в последовательный порт. Это отличное решение, но доступно оно на немногих серверных материнских платах, и через него можно получить только псевдографику, а хотелось бы получить настоящую — она и выглядит приятнее, и вырезать ее каждый раз из окна терминала не надо.
Вот именно этим мы и займемся в этой статье, а заодно я расскажу, что такое DXE-драйвер и как написать, собрать и протестировать такой самостоятельно, как работают ввод с клавиатуры и вывод на экран в UEFI, как найти среди подключенных устройств хранения такое, на которое можно записывать файлы, как сохранить что-нибудь в файл из UEFI и как адаптировать какой-то внешний код на С для работы в составе прошивки.
Если вам все еще интересно — жду вас под катом.
Драйверов богу драйверов! Скриншотов к трону скриншотов!

Rust и парадокс Блаба

Reading time11 min
Views33K

Несколько недель назад я наткнулся на сравнительный анализ Rust, D и Go от Андрея Александреску. Андрей, уважаемый член сообщества C++ и главный разработчик языка программирования D, нанес Rust сокрушительный удар под конец своего повествования, высказав нечто, что выглядит довольно проницательным наблюдением:



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



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

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

Советы о том, как писать на С в 2016 году

Reading time20 min
Views92K

Если бы язык С был оружием

От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016.

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

Итак, статья ...


Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами.

Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста.
Читать дальше →

Векторное управление электродвигателем «на пальцах»

Reading time17 min
Views354K
— Что такое векторное управление?
— Держать ток под 90 градусов.


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

Способы отладки ПО микроконтроллеров в электроприводе

Reading time14 min
Views53K
image

Как отлаживают программы микроконтроллеров? Берется JTAG, осциллограф – пара дней/недель и программа отлажена. Таким будет типичный ответ, и в большинстве случаев он будет правильным… Но не всегда. Микроконтроллеры решают очень разные задачи, и в этой статье мы рассмотрим, что делать, если нужно разработать громоздкое ПО низкоуровневого управления каким-либо силовым электрооборудованием, например, преобразователями частоты для электродвигателей, DC/DC преобразователями заряда АКБ для поезда, корректорами мощности, сервоприводами и т.п. Оборудованием, где протекают килоамперы и ШИМят киловольты, где на счету каждая коммутация IGBT ключей инвертора, где время реакции микроконтроллера на нештатную ситуацию измеряется в микросекундах, а само оборудование в герметичных корпусах устанавливается и эксплуатируется где-нибудь на заводах Якутии. Если вы хотите узнать, какие особенности это накладывает на способы отладки – добро пожаловать под кат.
Читать дальше →

Что нам стоит полином Жегалкина построить…

Reading time2 min
Views169K
Думаю, каждый, кто изучал или изучает в университете дискретную математику, знаком с понятием многочлена Жегалкина.

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

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

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

Под катом приведен один удобный алгоритм, для построения полиномов Жегалкина, который студенты воспринимают «на ура», т.к. требует только выполнение «механических действий» без применения каких-либо умственных усилий. Краткое описание метода можно найти в Википедии, но на мой взгляд по нему не совсем понятно, как быстро проводить вычисления. Мне метод известен под названием «метод треугольника Паскаля».
Читать дальше →

Помехи в глобальных навигационных спутниковых системах

Reading time4 min
Views30K
Эта статья была написана в связи с тем, что в русскоязычном сегменте интернета очень трудно найти подобную информацию, а в англоязычном её следует собирать по крупицам. Я работаю в сфере разработки навигационных приёмников, и, в частности, помехоустойчивых. Эта статья содержит небольшой ликбез о навигации как таковой, о типичном построении приёмников, а также об основных помехах и их влиянии. Если эта тема окажется интересной хабрасообществу, будет написано продолжение о различных методах борьбы с помехами и их эффективности.

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

Датчик CO2 — прибор, который подскажет когда проветрить, чтобы думалось эффективнее

Reading time7 min
Views158K
image

Помните, на Хабре в разделе GTD была любопытная статья от BarsMonster о том, что кроме лени, прокрастинации и проблем с планированием времени может мешать эффективной работе и жизни?
Если кто пропустил эту статью — очень рекомендую!

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

В этой статье я поделюсь с вами результатами своих изысканий.
Проводил замеры в небольшой квартире, торговом зале на 100 квадратов, а также в небольшой приёмной одной компании. Кому интересно, добро пожаловать под Cut (осторожно, траффик).
Читать дальше →

Как начать работать с MIPSfpga

Reading time3 min
Views26K
MIPSfpga — это пакет, который содержит процессорное ядро в исходниках на Verilog, которое можно менять, добавлять новые инструкции, строить многопроцессорные системы, менять одновременно софтвер и хардвер, симулировать на симуляторе верилога, синтезировать для ПЛИС/FPGA и т.д. Его можно в целях эксперимента например запускать с частотой 1 такт в секунду и выводить наружу информацию о состоянии кэша, конвейера, и любых структур внутри процессора. При этом ядро MIPS microAptiv UP внутри MIPSfpga — это то же ядро которое например используется в платформе IoT Samsung Artik 1 и Microchip PIC32MZ, т.е. студенты получают возможность работать с тем же кодом, с которым работают инженеры в Samsung и Microchip.

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



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

Isotoxin: свободный мультипротокольный мессенджер с поддержкой Tox

Reading time7 min
Views31K
Вы наверняка слышали о Tox. Напомню: это свободный защищенный p2p протокол для передачи сообщений, аудио и видео потоков между участниками Tox-сети. По сути — это альтернатива скайпу. Когда я впервые услышал о Tox, мой градус неприязни к скайпу был еще не слишком высок, но я уже начал поиск альтернатив. Мне очень понравилась идея, лежащая в основе Tox: мы пишем протокол со всеми нужными плюшками, а вы пишете к нему клиенты. Когда появились первые клиенты для сети Tox, я подумал: «черт возьми, я смогу сделать это не хуже!». Вобщем, подталкиваемый неприязнью к скайпу, я взялся за проект мессенджера своей мечты. Сейчас, когда в моем локальном hg-репозитории первому комиту исполнилось 19 месяцев и был сделан 414-й комит, я наконец то созрел до того, чтобы рассказать об этом клиенте широкой аудитории Хабра.


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

Сколько это стоит: Гигабайт трафика в Африке

Reading time2 min
Views74K
Ценообразование в сфере интерент-провайдеров продолжает видоизменяться в том числе и под влиянием IaaS-провайдеров, которые позволяют создавать новые бизнес-модели.

Инновационные сервисы вроде Netflix формируют новые категории информационных продуктов и услуг, задавая совершенно иной уровень потребления с точки зрения объемов данных.

Сегодня мы решили проанализировать заметку Маршалла Брейна (Marshall Brain), автора проекта HowStuff Works. Он привел пример самой дорогой интернет-связи в мире.

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

Information

Rating
2,824-th
Location
Алматы (Алма-Ата), Алма-Атинская обл., Казахстан
Date of birth
Registered
Activity