Эта статья, является первой статьей из курса по созданию телефона на элементной базе, приближенной к той, что используется производителями сотовых телефонов.Вместе с читателями, я пройду по каждому этапу проектирования, прототипирования, отладки, а если повезет, то и подготовки к производству, настоящего сотового телефона.На каждом этапе выполненной работы, я постараюсь объяснить как это было сделано, на таком уровне, чтобы это смог понять толковый студент первого курса технического ВУЗа. Или заинтересованный школьник старших классов. Не пугайтесь того, что в следующих нескольких предложениях, Вы скорее всего ничего не поймете. Их поймут те, кто давно работает в области телекома как разработчики и производители оборудования, но к концу курса, Вы будете знать все о чем я написал ниже.Вы узнаете как работает транзистор, логический элемент, как устроена цифровая схемотехника, вместе в Вами мы спроектируем процессор и не один, Вы узнаете о процессах происходящих в радиотехнических системах и таких понятиях как интерференция или феддинг в канале связи, что такое КСВ, и где применяют «балуны», как устроены рекурсивные цифровые фильтры, зачем нужен алгоритм cordic, что такое децимация и зачем она нужна, узнаем что такое BaseBand и как он связан с прямым цифровым синтезом и причем тут комплексные числа. Узнаем что такое доплеровский сдвиг, познакомимся с элементами теории вероятностей, и узнаем зачем нам знать о распределении релея‑джинса. Мы самостоятельно соберем компилятор, который собирает код всего что выполняется у Вас на компьютере, и сделаем это ни один раз, а потом при помощи такого компилятора произведем сборку операционной системы. Нам предстоит познакомиться со стандартами, за которые отвечает группа 3GPP. Вы узнаете про сложные виды модуляций, и нарезку данных применяемую в сотовых сетях, а так же как она соотноситься со служебными каналами связи. Вы спокойно будете оперировать терминами Paging, Location Area Update, или каналами RRC, LLC, узнаете что такое BCCH/BCH, для чего нужны Measurenment Report‑ы, и при каких условиях производятся измерения в каналах связи. Узнаете что такое Handover. Возможно, доберемся и до PSC, но только в теории, т.к. это уже 3G или 4G. Нам предстоит разработать или заимствовать и проверить, десятки, а может быть сотни тысяч строк кода стека GSM. И, надеюсь, мы вместе дойдем до конца проекта и выпустим ASIC. Но сначала попробуем использовать схему состоящую из CPU, FPGA, и, вероятно AD9361, или чего‑то подобного.
Программист встраиваемых систем
Оптимизированный доступ к GPIO и не только, часть вторая
Уважаемые жители Habr‑а, В данной статье, речь пойдет о доступе к GPIO, и другим регистрам, используя C++.
Несколько лет назад, я подготовил статью, о том, как можно используя constexpr‑клаcсы, серьезно оптимизировать доступ к GPIO‑порту, таким образом, чтобы команда «PA0.set()» — превращалась в одну‑три ассемблерных инструкции, в зависимости от обстоятельств. Этот класс лишь выглядел обычным, который оптимизировался компилятором. Фактически, это была высокоуровневая оптимизация низкоуровневого кода. Теоретически возможно было перегрузить оператор равенства и писать просто PA0=1 или PA0=0, фактически это вызывало inline инструкцию, позволяющую добавить еще и барьерную инструкцию.
Больше года назад, я потерял доступ к аккаунту Habr, и не мог восстановить его. Однако, спустя некоторое время, эксперименты по оптимальному доступу к полям регистров продолжились. И это привело к использованию нехитрых конструкций, построенных на шаблонах. Сегодня, я расскажу к чему привели эти эксперименты.
Итак. Задача состояла в том, чтобы максимально описать любой регистр, и получить доступ к нему, удобным способом. Я несколько раз пытался различными способами формализовать описание, и мои попытки привели меня к следующему коду.
Оптимизированный доступ к GPIO. Или GPIO как constexpr класс. С++
Добрый день, жители Хабра. Данный пост будет посвящен программированию на C++, и использованию constexpr объектов с целью повышения уровня удобства и одновременно оптимизации кода с точки зрения размера и производительности.
В процессе работы над одним из проектов, задумался: "нельзя ли сделать удобный доступ к GPIO портам на STM32, и при этом сделать его оптимальным по размеру кода и производительности". Что я хотел получить...
Полноценная GDB отладка через USB на плате BluePill (STM32F103С8T)
В данной статье речь пойдет о программировании и полноценной отладке микроконтроллера STM32F103C8T6 через USB.
Однажды, от коллег поступило предложение о участии в IoT проекте. Система предусматривала однопоточный запуск скриптов. Отладка производилась с помощью логов. И тут мне в голову пришла мысль о полноценной удаленной отладке проектов под микроконтроллеры.
Information
- Rating
- Does not participate
- Location
- Воронеж, Воронежская обл., Россия
- Date of birth
- Registered
- Activity