Pull to refresh
1
0
Евгений @EvgenySbl

Программист встраиваемых систем

Send message

От логического элемента до телефона. Введение

Level of difficultyEasy
Reading time7 min
Views2.9K

Эта статья, является первой статьей из курса по созданию телефона на элементной базе, приближенной к той, что используется производителями сотовых телефонов.Вместе с читателями, я пройду по каждому этапу проектирования, прототипирования, отладки, а если повезет, то и подготовки к производству, настоящего сотового телефона.На каждом этапе выполненной работы, я постараюсь объяснить как это было сделано, на таком уровне, чтобы это смог понять толковый студент первого курса технического ВУЗа. Или заинтересованный школьник старших классов. Не пугайтесь того, что в следующих нескольких предложениях, Вы скорее всего ничего не поймете. Их поймут те, кто давно работает в области телекома как разработчики и производители оборудования, но к концу курса, Вы будете знать все о чем я написал ниже.Вы узнаете как работает транзистор, логический элемент, как устроена цифровая схемотехника, вместе в Вами мы спроектируем процессор и не один, Вы узнаете о процессах происходящих в радиотехнических системах и таких понятиях как интерференция или феддинг в канале связи, что такое КСВ, и где применяют «балуны», как устроены рекурсивные цифровые фильтры, зачем нужен алгоритм cordic, что такое децимация и зачем она нужна, узнаем что такое BaseBand и как он связан с прямым цифровым синтезом и причем тут комплексные числа. Узнаем что такое доплеровский сдвиг, познакомимся с элементами теории вероятностей, и узнаем зачем нам знать о распределении релея‑джинса. Мы самостоятельно соберем компилятор, который собирает код всего что выполняется у Вас на компьютере, и сделаем это ни один раз, а потом при помощи такого компилятора произведем сборку операционной системы. Нам предстоит познакомиться со стандартами, за которые отвечает группа 3GPP. Вы узнаете про сложные виды модуляций, и нарезку данных применяемую в сотовых сетях, а так же как она соотноситься со служебными каналами связи. Вы спокойно будете оперировать терминами Paging, Location Area Update, или каналами RRC, LLC, узнаете что такое BCCH/BCH, для чего нужны Measurenment Report‑ы, и при каких условиях производятся измерения в каналах связи. Узнаете что такое Handover. Возможно, доберемся и до PSC, но только в теории, т.к. это уже 3G или 4G. Нам предстоит разработать или заимствовать и проверить, десятки, а может быть сотни тысяч строк кода стека GSM. И, надеюсь, мы вместе дойдем до конца проекта и выпустим ASIC. Но сначала попробуем использовать схему состоящую из CPU, FPGA, и, вероятно AD9361, или чего‑то подобного.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments7

Оптимизированный доступ к GPIO и не только, часть вторая

Level of difficultyMedium
Reading time9 min
Views6.6K

Уважаемые жители Habr‑а, В данной статье, речь пойдет о доступе к GPIO, и другим регистрам, используя C++.

Несколько лет назад, я подготовил статью, о том, как можно используя constexpr‑клаcсы, серьезно оптимизировать доступ к GPIO‑порту, таким образом, чтобы команда «PA0.set()» — превращалась в одну‑три ассемблерных инструкции, в зависимости от обстоятельств. Этот класс лишь выглядел обычным, который оптимизировался компилятором. Фактически, это была высокоуровневая оптимизация низкоуровневого кода. Теоретически возможно было перегрузить оператор равенства и писать просто PA0=1 или PA0=0, фактически это вызывало inline инструкцию, позволяющую добавить еще и барьерную инструкцию.

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

Итак. Задача состояла в том, чтобы максимально описать любой регистр, и получить доступ к нему, удобным способом. Я несколько раз пытался различными способами формализовать описание, и мои попытки привели меня к следующему коду.

Читать далее
Total votes 17: ↑15 and ↓2+13
Comments47

Оптимизированный доступ к GPIO. Или GPIO как constexpr класс. С++

Reading time4 min
Views6.6K

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

В процессе работы над одним из проектов, задумался: "нельзя ли сделать удобный доступ к GPIO портам на STM32, и при этом сделать его оптимальным по размеру кода и производительности". Что я хотел получить...

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments44

Полноценная GDB отладка через USB на плате BluePill (STM32F103С8T)

Reading time5 min
Views12K

В данной статье речь пойдет о программировании и полноценной отладке микроконтроллера STM32F103C8T6 через USB.

Однажды, от коллег поступило предложение о участии в IoT проекте. Система предусматривала однопоточный запуск скриптов. Отладка производилась с помощью логов. И тут мне в голову пришла мысль о полноценной удаленной отладке проектов под микроконтроллеры.

Продолжение следует ...
Total votes 32: ↑31 and ↓1+30
Comments21

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Software Architect
Lead
From 250,000 ₽
C++
Programming microcontrollers
System Programming
Applied math
Development of drivers
Reverse development
Code Optimization
Electronics Development
Circuitry