Как стать автором
Обновить
1
0

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

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

STM32F4: GNU AS: Настраиваем среду компиляции (Часть 4)

Время на прочтение15 мин
Количество просмотров9.3K
В прошлых публикациях я показал от чего можно оттолкнуться при написании программ для STM32F4, настроили среду компиляции, определили файл компоновщика, получили шаблонный файл программы на языке ассемблера, попробовали настроить GPIO микроконтроллера и помигать светодиодом.

Ссылки на прошлые публикации:
STM32F4: GNU AS: Программирование на ассемблере (Часть 1)
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)

Обсуждение этой публикации, задать вопросы, внести предложения можно в VK: vk.com/topic-200545792_46642149

Теперь пришло время разобраться в компиляции программ состоящих из нескольких файлов, разобрать способ написания программ для нескольких отладочных плат, научиться выносить настройки программы для удобного их изменения
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии0

STM32F4: GNU AS: Прерывания, Системный таймер (SysTick) (Часть 6)

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


обсуждение этой и других статей цикла: vk.com/topic-200545792_46642273

В первых публикациях — мы тактировали микроконтроллер от внутреннего тактового генератора (HSI)… ну если быть совсем точным, то мы вообще не настраивали тактирование микроконтроллера, и пользовались тем состоянием которое было у микроконтроллера при старте (включении питания, сбросе). Для первых программ это вполне допустимо, но для будущих проектов этого не достаточно, поэтому в пятой части публикации я предложил модуль настройки тактирования микроконтроллера (sysclk) на его «родную» (определенную производителем) частоту в 168 МГц.
Теперь организуем задержку на заданное количество миллисекунд при помощи системного таймера (SYSTICK).
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Новое исследование предполагает, что чёрная дыра, вращающаяся вокруг планеты, может быть признаком развитой цивилизации

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

В 1971 году английский физик-математик и лауреат Нобелевской премии Роджер Пенроуз предложил, как можно извлечь энергию из вращающейся чёрной дыры. Он утверждал, что это можно сделать, создав своего рода «упряжь» вокруг аккреционного диска чёрной дыры, где падающая материя разгоняется до скорости, близкой к скорости света, что приводит к выделению энергии в нескольких длинах волн. С тех пор многие исследователи предполагают, что продвинутые цивилизации могут использовать этот метод (процесс Пенроуза) для энергетической подпитки своей цивилизации и что это может быть явным технопризнаком – признаком работы внеземного разума — который мы можем засечь.

Читать далее
Всего голосов 20: ↑18 и ↓2+25
Комментарии35

Итак, вы думаете, что знаете Git? Часть первая: старый добрый Git

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

Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.


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



Давайте покопаемся!
Всего голосов 22: ↑21 и ↓1+23
Комментарии6

Стилистический анализатор: синхронизация объявлений и определений static функций

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

Представлена утилита-надзиратель, что последовательность определения static функций совпадает с последовательностью объявляения static функций.

Читать далее
Всего голосов 7: ↑5 и ↓2+7
Комментарии21

Помоги компилятору помочь тебе

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

Предисловие


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


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


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

Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии53

Современный CMake: 10 советов по улучшению скриптов сборки

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

CMake — это система сборки для C/C++, которая с каждым годом становится всё популярнее. Он практически стал решением по умолчанию для новых проектов. Однако, множество примеров выполнения какой-либо задачи на CMake содержат архаичные, ненадёжные, раздутые действия. Мы выясним, как писать скрипты сборки на CMake лаконичнее.

Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии29

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM

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


Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления заново, но до того, весь функционал устройства будет потерян. Пока не будет завершено обновление, работать оно уже не будет. Самым красивым способом является использование двух областей для размещения «прошивки» — основной и запасной. На рисунке ниже это красная и синяя области. Исходно активная красная, а обновление будет загружаться в синюю. Сбой загрузки не страшен. Если он произойдёт, управление останется у красной области. При успехе операции, активной станет синяя область, а новое обновление будет загружаться в красную. Ну, и так далее. Каждое обновление будет приводить к рокировке.



К сожалению, в системах Cortex M такой путь напрямую невозможен. Программа привязана к абсолютным адресам и не может исполняться в произвольном месте. С чем это связано и как мы сделали её перемещаемой, подправив компилятор LLVM, рассказано в данной статье.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+10
Комментарии13

STM32F4: GNU AS: Подключение дисплея на PCD8544 (Часть 7)

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


Обсуждение этой и других статей цикла: vk.com/topic-200545792_46642280

Поскольку мигающим светодиодом интерфейс пользователя построить сложно, решил подключить к STM32F407 простенький SPI дисплей из Китая. Интерфейс дисплея PCD8544, подключение по SPI, на aliexpress и ebay обычно ищется по строке LCD nokia 5110, питание дисплея как раз от 2.7 до 3,3 вольт.
По информации полученной из даташита частота SPI дисплея не должна превышать 4 Мгц, однако все имеющиеся у меня экземпляры надежно работали при такте SPI в 21 Мгц…

Описание проекта, исходные тексты программы, настроенный файл автоматической компиляции и сборки проекта под «катом»:
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии7

Перенаправляем printf() из STM32 в консоль Qt Creator

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

kdpv.svg


Нередко при отладке ПО микроконтроллера возникает необходимость вывода отладочных сообщений, логов, захваченных данных и прочего на экран ПК. При этом хочется, чтобы и вывод был побыстрее, и чтобы строки отображались не где-нибудь, а прямо в IDE — не отходя от кода, так сказать. Собственно, об этом и статья — как я пытался printf() выводить и отображать внутри любимой, но не очень микроконтроллерной, среды Qt Creator.

Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии20

Теория звука. Что нужно знать о звуке, чтобы с ним работать. Опыт Яндекс.Музыки

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

Для работы над Яндекс.Музыкой нам всегда важно помнить о разных тонкостях, которые таит в себе звук. Что такое громкость, как она меняется и от чего зависит? Как работают звуковые фильтры? Какие бывают шумы? Как меняется звук? Как люди его воспринимают.



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

Поводом для этого поста можете считать то, что мы добавили в приложения Яндекс.Музыки возможность слушать треки в высоком качестве (320kbps). А можете не считать. Итак.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии52

Поиск подстроки и смежные вопросы

Время на прочтение13 мин
Количество просмотров122K
Здравствуйте, уважаемое сообщество! Недавно на Хабре проскакивала неплохая обзорная статья о разных алгоритмах поиска подстроки в строке. К сожалению, там отсутствовали подробные описания каких либо из упомянутых алгоритмов. Я решил восполнить данный пробел и описать хотя бы парочку тех, которые потенциально можно запомнить. Те, кто еще помнит курс алгоритмов из института, не найдут, видимо, ничего нового для себя.
Читать дальше →
Всего голосов 89: ↑84 и ↓5+79
Комментарии18

Совершенный цикл for

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

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


Я довольно давно пишу код, и так вышло, что практически всегда на C++. Даже и не могу прикинуть, сколько раз я написал подобную конструкцию:


for (int i=0; i<size; i++) {
    [...]
}

Хотя почему не могу, очень даже могу:


find . \( -name \*.h -o -name \*.cpp \) -exec grep -H "for (" {} \; | wc -l
43641

Наш текущий проект содержит 43 тысячи циклов. Проект пилю не я один, но команда маленькая и проект у меня не первый (и, надеюсь, не последний), так что в качестве грубой оценки пойдёт. А насколько такая запись цикла for хороша? Ведь на самом деле, важно даже не то количество раз, когда я цикл написал, а то количество раз, когда я цикл прочитал (см. отладка и code review). А тут речь очевидно идёт уже о миллионах.


На КПДВ узел под названием «совершенная петля» (perfection loop).


image


Так каков он, совершенный цикл?

Читать дальше →
Всего голосов 67: ↑65 и ↓2+88
Комментарии173

Синей пеленой экран заполнил чистый DOS. Доска почёта и респекта: лучшие программные решения и интерфейсы

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

В большинстве современных книг есть такой раздел — «Благодарности». Автор благодарит своих редакторов, учителей, друзей, родственников, любимых котов и всех тех, без кого книга никак не могла появиться на свет. Книгу я писать не планирую, а сказать спасибо за всё хорошее можно и в посте на Хабре.

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

Читать далее
Всего голосов 69: ↑63 и ↓6+70
Комментарии71

Детальный взгляд на Breadbox Ensemble. Что умела продвинутая оболочка для MS-DOS?

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

Привет, любители старого «железа». Это Антон Комаров, и сегодня мы изучим ИТ-артефакт, одно из имен которого — Breadbox Ensemble. Это графическая оболочка для MS-DOS, которая значительно опередила свое время. К примеру, концепция меню «Пуск» в ней появилась на 2,5 года раньше, чем в Windows 95. Компанию-разработчика, Berkeley Softworks, пытались купить Microsoft, Apple Notebooks и Sun Microsystems. Но руководство не согласилось, решив продолжить самостоятельное «плавание». И оно было довольно успешным: последняя версия оболочки вышла аж в 2009 году.

Так что заваривайте себе чайку, доставайте печеньки и давайте посмотрим, ради чего в начале 90-х шла нешуточная борьба между крупнейшими софтверными корпорациями. И как Breadbox Ensemble повлияла на внешний облик операционных систем того времени. Приятного чтения.

Читать далее
Всего голосов 54: ↑54 и ↓0+84
Комментарии55

Кодирование с кодеком HEVC простым языком — гайд на FFmpeg. Высокое качество, но низкий вес

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

Казалось бы, довольно простой вопрос: «Чем сжать видео?». На ум сразу приходят Handbrake, Movavi Converter или ещё что-нибудь пострашнее. Однако когда речь заходит о более гиковском подходе с упором на максимальное качество и экономию места, такие программы сложно назвать инструментами. Равно как и для обратной ситуации, когда картинку нужно сильно сжать и сохранить в целостности большую часть полезной информации. Все эти программы только лишь предоставляют набор наиболее общих конфигов для обычной съёмки и 2D.

В этой статье мы изучим, как при помощи самого большого сборника свободных библиотек FFmpeg научиться кодировать видео самому именно под ваши задачи.
Читать дальше →
Всего голосов 95: ↑94 и ↓1+123
Комментарии144

Изобретаем библиотеку vusb

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

Введение


После прочтения названия может возникнуть закономерный вопрос: зачем в наше время изучать программную реализацию low-speed USB, когда существует куча дешевых контроллеров с аппаратным модулем? Дело в том, что аппаратный модуль, скрывая уровень обмена логическими уровнями, превращает протокол USB в своеобразную магию. Для того же, чтобы прочувствовать как эта «магия» работает, нет ничего лучше, чем воспроизвести ее с нуля, начиная с самого низкого уровня.


С этой целью попробуем изготовить на основе контроллера ATmega8 устройство, прикидывающееся USB-HID'ом. В отличие от распространенной литературы, мы пойдем не от теории к практике, от самого нижнего уровня к верхнему, от логических напряжений на выводах, и закончим «изобретением» той самой vusb, после каждого шага проверяя, работает ли код как ожидалось. Отдельно отмечу, что не изобретаю альтернативу этой библиотеке, а напротив, последовательно воспроизвожу ее исходный код, максимально сохраняя оригинальную структуру и названия, поясняя, для чего служит тот или иной участок. Впрочем, привычный для меня стиль написания кода отличается от стиля авторов vusb. Сразу же честно признаюсь, что помимо альтруистического интереса (рассказать другим сложную тему) имею и корыстный — изучить тему самостоятельно и через объяснение выловить для себя максимум тонких моментов. Отсюда же следует, что какой-то важный момент может быть упущен, или какая-то тема не до конца раскрыта.


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


Также отмечу, что рассматривается только low-speed USB, даже без упоминания, чем отличаются более скоростные разновидности.

Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии22

Персональный компьютер «Электроника МК-85»

Время на прочтение3 мин
Количество просмотров30K
Приветствую уважаемую аудиторию Гиктаймса и поздравляю всех с наступающим Новым Годом!
Этот пост я хочу начать с небольшого дисклаймера. Точнее, даже с двух.

Дисклаймеры
1. На Хабрахабре уже были упоминания модификаций этого компьютера: раз и два. В первом посте шла речь о модификациях МК-85С (крипто) и МК-85Б (банковский) с встроенными функциями криптографии. Эти модификации в настоящее время представлены очень редкими коллекционными экземплярами. В моём посте речь идёт об обычном «Электроника МК-85».

2. Часть информации в посте я публиковал в своём ЖЖ, однако (так как гиктаймс не является центром мирового кросспостинта), я подготовил специально для вас, дорогие читатели, расширенный и дополненный материал.



Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии82

Музей DataArt. Лунолет и советские калькуляторы

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

Микрокалькулятор «Электроника МК-85». Из коллекции Сергея Фролова

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

Основное направление коллекционирования для Сергея Фролова — советская цифровая электроника, в первую очередь — калькуляторы, среди которых есть уникальные образцы. О счетных устройствах из коллекции Музея DataArt мы рассказывали раньше.
Всего голосов 56: ↑56 и ↓0+56
Комментарии70

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность