Search
Write a publication
Pull to refresh
3
0
Send message

Как защититься от переполнения стека (на Cortex M)?

Reading time8 min
Views28K
Если вы программируете на «большом» компьютере, то у вас такой вопрос, скорее всего, вообще не возникает. Стека много, чтобы его переполнить, нужно постараться. В худшем случае вы нажмёте ОК на окошке вроде этого и пойдете разбираться, в чем дело.

image

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

В этой статье я расскажу о собственных изысканиях на эту тему. Поскольку я программирую в основном под STM32 и под Миландр 1986 — на них я и фокусировался.
Читать дальше →

Заглядывая внутрь сопроцессора Intel 8087

Reading time11 min
Views28K

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


Линейка восьмиразрядных процессоров начинает свою историю с апреля 1972 года. Intel 8008 вообще изначально планировался для использования в калькуляторах, устройствах ввода-вывода, но производитель хорошенько «поразмыслив», решил найти линейке новое предназначение — быть центральным процессором ПК. В зависимости от модификаций процессоров тактовая частота составляла 500 или 800 КГц, а производительность равнялась 45000-160000 операций в секунду.


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

Всякие штуки в MetaPost

Reading time8 min
Views16K
В чем рисовать векторные картинки? Для меня, как и для многих других, ответ довольно очевиден: скорее всего, в иллюстраторе. Ну или в инкскейпе. Так же я думал, когда мне заказали отрисовать штук восемьсот картинок для учебника физики. Ничего такого, просто черно-белые технические иллюстрации со всякими блоками, шарами, пружинами, линзами, машинками, тракторами и прочим подобным. Предполагалось, что верстаться книга будет в латехе, а мне были предоставлены вордовские файлы со вставленными картинками — то карандашными набросками, то сканами из других книг — и вроде бы рукопись в каком-то виде. В этом случае первая мысль — рисовать в инкскейпе — уступила фантазиям на тему «как бы это так все автоматизировать». Лучшим вариантом показался в тот момент почему-то MetaPost.



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

Введение в мир поддельных микросхем: методы обнаружения контрафакта

Reading time8 min
Views30K
Статья опубликована 23 декабря 2017 года

Введение


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

На самом деле, это не ваша вина и не ошибка дизайна. Причина — в поддельных микросхемах. Вы можете сказать: «Чип микроконтроллера правильно маркирован и выглядит как оригинальный — это точно оригинал». А я отвечу: а вы уверены, что внутри правильный кристалл?!

На подделках можно сказочно заработать. В исследовании рынка контрафакта говорится, что некоторые фирмы зарабатывают 2 миллиона долларов в месяц на продаже всего одного типа поддельных компонентов.
Читать дальше →

Независимая приёмка ЦОД

Reading time11 min
Views4.8K


Всем привет! Меня зовут Кирилл Шадский, я руководитель отдела управления внешними ЦОД компании ДатаЛайн.
 
Эта статья посвящена наиболее важным аспектам проведения приёмо-сдаточных испытаний, а также возможным проблемам и подводным камням, которые могут попортить немало нервов начинающим «испытателям».

Итак, представьте: довольный подрядчик рапортует нам о пятилетке в четыре года о том, что проблем нет и объект (ЦОД или отдельный зал) готов к эксплуатации. Казалось бы, сейчас самое время приступать к испытаниям, но… на самом деле мы уже опоздали. Приёмо-сдаточные испытания стоит планировать как минимум на этапе проектирования.
Читать дальше →

Как собирают вагоны для пассажирских поездов

Reading time6 min
Views43K


Есть такой Тверской вагоностроительный завод. Завтра у него день рождения. Поэтому тут я расскажу кое-что интересное про сам завод.

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

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

Давайте начнём экскурсию.
Читать дальше →

Очередной сказ о том, как на Мегафоне сравнительно честно отнимают деньги

Reading time2 min
Views109K
upd: уточняю: это не жалоба, а статья-предупреждение, проверьте свои детализации

Дело было вечером, делать было нечего. Сидел я значит на диване, никого не трогал. На телефон (который у меня только для звонков и раздачи интернета) приходит пара смсок с разницей в 2 минуты. Поборов лень, я встал с дивана, подошел к телефону и включил экран. От увиденного я впал в ступор.

Вероломно и без объявления войны в 20:22 по местному времени мне пришла смс с номера 5151: "Подписка Игроклуб Gamifive оформлена. Управление подпиской: moy-m-portal.ru/moi_podpiski". Следующая смска была получена с номера 5591 в 20:24 с содержанием "Приветствует Вас в игровом клубе Gamifive! Сотни увлекательных игр для вашего удовольствия! Играйте без остановки. Просто заходите на gamifive.ru Пароль для авторизации: <пароль из 4-х цифр> Возникнут вопросы — звоните 88005054081 (бесплатно)".
Читать дальше →

Как устроен пассажирский вагон дальнего следования

Reading time9 min
Views118K
Современный вагон при соединении с остальным поездом автоматически включается в локальную сеть и получает параметры с сервера штабного вагона. У одноэтажного вагона Тверского вагоностроительного завода сейчас в мониторинге примерно 280 параметров (начиная от уровня заполнения фекального бака и заканчивая напряжением аккумулятора), а у двухэтажного — около 400.



Начнём с межвагонных связей. Это тормозная пневматическая магистраль (пневматические рукава, которыми вагоны соединяются между собой, железнодорожники называют их «лягушками»), высоковольтная магистраль, аварийная магистраль 110 В, интерком и локальная сеть, плюс радиорелейные мосты между вагонами на случай обрыва локальной сети.
Читать дальше →

Бункер для даты: как мне разрешили погулять по ЦОД RUVDS на территории космического завода

Level of difficultyEasy
Reading time4 min
Views10K
Кто-то любит ходить в кино, кто-то любит ходить в клубы, кто-то любит ходить в музеи — а я давно мечтал походить по дата-центрам, посмотреть на всё своими глазами, пообщаться с теми, кто там работает. Но организовать всё это казалось нереальным. К счастью, определённая узнаваемость, которую заработал poiskvps.ru за эти годы, и которая теперь меня, порой, удивляет — упростила самое сложное: знакомство. Так что за последние два месяца я побывал уже в двух дата-центрах. Что интересного я увидел в питерском, я ещё планирую написать позднее. А сегодня расскажу, каким увидел подмосковный ЦОД компании RUVDS в городе Королёве — их «малую родину», где с первых серверных стоек в бункере на территории ракетного завода они и стартовали. Да, это не только звучит круто, но и выглядит. Вы только посмотрите на эти гермодвери:

image

В конце 2015-го тут и началась история RUVDS. Сперва они просто встали на колокейшн к другой компании, арендовавшей стойки в этом ДЦ. Впрочем, задерживаться они там не стали, вскоре переехав в отдельное помещение внутри бункера, чтобы за его роскошными дверями построить уже свой дата-центр.
Читать дальше →

Сокрытие в Ruby. А ещё скрываем классы из Top-Level

Reading time3 min
Views3.2K

Что бы далеко не ходить, сразу определимся с терминами.


  • Инкапсуляция — упаковка данных и функций в единый компонент.
  • Сокрытие — представляет собой принцип проектирования, заключающийся в разграничении доступа различных частей программы к внутренним компонентам друг друга.

Взято с вики. В языке программирования Ruby с инкапсуляцией вроде как всё хорошо. С сокрытием на первый взгляд тоже, нам доступны локальные переменные, переменные инстансов, разные уровни доступа к методам (public, protected, private). Но иногда этого может не хватать.

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

Зачем при наличии электропитания нужен старый добрый угольный котёл в вагоне

Reading time5 min
Views121K


Это преобразователь питания пассажирского вагона дальнего следования. В современном вагоне электричество нужно почти для всего, начиная от 5 Вольт в розетках USB, 220 В в розетках для пассажиров в каждом купе и на микроволновке у проводника, 110 В для системы управления. И ещё не считая таких мелочей, как насосы, водонагреватели, кондиционеры, обеззараживатели и моторы дверей.

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

И при этом всём даже на самые современные вагоны продолжают ставить угольные котлы.
Читать дальше →

Пример программирования FPGA-ускорителя

Reading time14 min
Views15K


Не так давно мы рассказали о новой услуге Selectel — облачных высокопроизводительных вычислениях на FPGA-ускорителях. В новой статье на эту тему рассмотрим пример программирования FPGA для построения множества Мандельброта, — известного математического алгоритма для визуализации фрактальных изображений. В статье использован материал с сайта Эйлер Проджект.


Анализ вакансий HeadHunter

Reading time6 min
Views29K


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

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

Почти все, что вы хотели знать про плавающую точку в ARM, но боялись спросить

Reading time10 min
Views29K
Привет, Хабр! В этой статье я хочу рассказать про работу с плавающей точкой для процессоров с архитектурой ARM. Думаю, эта статья будет полезна прежде всего тем, кто портирует свою ОС на ARM-архитектуру и при этом им нужна поддержка аппаратной плавающей точки (что мы и делали для Embox, в котором до этого использовалась программная реализация операций с плавающей точкой).

Итак, приступим.
Читать дальше →

Модели Эло и ЭлоБета в снукере

Reading time24 min
Views5.4K

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


Её основной недостаток заключается в том, что она учитывает только факт турнирного достижения без учёта "сложности" матчей. Такого недостатка лишена модель Эло, которая следит за "силой" игроков и обновляет её в зависимости от результатов матчей и "силы" соперника. Однако, и она подходит не идеально: считается, что все матчи проходят в равных условиях, а в снукере они играются до определённого количества выигранных фреймов (партий). Для учёта этого факта, я рассмотрел другую модель, которую назвал ЭлоБета.


В данной статье изучается качество моделей Эло и ЭлоБета на результатах снукерных матчей. Важно отметить, что основными целями являются оценка "силы" игроков и создание "справедливого" рейтинга, а не построение прогностических моделей для получения выгоды.


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

3D-печать на футболках

Reading time2 min
Views13K


Все мы давно привыкли к 3D-печати. Чаще всего модель печатается обособленно, сама по себе. Иногда — на куске ткани.


Мне же пришла идея: что, если попробовать напечатать что-нибудь прямо на футболке? На сколько это реально, какие затруднения могут возникнуть?


Я провела несколько экспериментов и хочу поделиться полученным опытом.

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

Электрички разные. Очень

Reading time6 min
Views60K

Рельсовый автобус РА-1 с дизельным двигателем

Электричка — это электропоезд. Ласточка и Сапсан, по идее, электрички, но при этом они поезда дальнего следования (а Ласточка бывает ещё и пригородного). Поэтому когда мы говорим про электричку, то обычно имеем в виду поезд пригородного сообщения с билетом без фиксации мест. То есть где можно стоять. Но не всё из этого множества электропоезда, потому что бывают рельсовые автобусы, автомотрисы и дизельные поезда — например, между станциями Кривандино и Рязановка как раз ходит РА-1.

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

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

Google's Shell Style Guide (на русском)

Reading time14 min
Views24K

Предисловие


Какой Shell использовать


Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


Когда использовать Shell


Shell следует использовать только для небольших утилит или простых скрптов-оберток.


Хотя shell-скриптинг не является языком разработки, он используется для написания различных утилит во всем Google. Это руководство по стилю является скорее признанием его использования, а не предложением использовать его в широком применении.

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

Как собрать досовский COM-файл компилятором GCC

Reading time10 min
Views16K
Статья опубликована 9 декабря 2014 года
Обновление от 2018 года: RenéRebe сделал на базе этой статьи интересное видео (часть 2)

В минувшие выходные я участвовал в Ludum Dare #31. Но даже до объявления тем конференции из-за своего недавнего увлечения я хотел сделать олдскульную игру под DOS. Целевой платформой выбрана DOSBox. Это самый практичный способ запуска DOS-приложений несмотря на то, что все современные процессоры x86 полностью обратно совместимы со старыми, вплоть до 16-битного 8086.

Я успешно создал и показал на конференции игру DOS Defender. Программа работает в реальном режиме 32-битного 80386. Все ресурсы встроены в исполняемый COM-файл, никаких внешних зависимостей, так что игра целиком упакована в бинарник 10 килобайт.


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

Блочные устройства QEMU

Reading time9 min
Views27K

image


В QEMU есть несколько способов подключить блочное устройство для виртуальной машины. Изначально это было реализовано следующим способом:


 -hda /dev/sda1

Таким образом виртуальные диски подключались в давние дни виртуализации. Его можно использовать и сегодня, если мы просто хотим протестировать некоторые liveCD. К сожалению, он имеет свои недостатки

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

Information

Rating
Does not participate
Registered
Activity