Добрый день, уважаемые жители хабра!
Смотрел на проекты коллег, и задумался... А можно ли построить смартфон с нуля, или почти с нуля, в одиночку, или небольшим коллективом? Об этом и будет сегодняшняя статья.
Конечно, нет ничего невозможного, скажете Вы и будете правы. Непрофессионалы, заметят: «Посмотри, я уже сделал смартфон на базе Arduino / Raspbery PI и GSM‑модуля», — и будут правы на своем уровне. Однако, профессионалы, занимающиеся подобными разработками, скорее всего, будут читать статьи о проектах, построенных на модулях только в двух случаях: или для развлечения, или для подбора персонала.
Этот абзац, предназначен как раз таки для профессионалов, которые, понимают с чем мне придется столкнуться. Его не стоит читать тем кто не знаком с этой областью науки и техники. Он призван объяснить им, что я понимаю что хочу сделать. Скорее всего, у них возникнет следующий вопрос: «Сколько у тебя имеется ресурсов на реализацию проекта?». Я вынужден буду ответить, что у меня есть только время, знания и опыт, и никто не знает, как дальше будет развиваться ситуация в финансовом отношении. А я уже проходил и взлеты и падения. Я проходил ситуацию, в которой, конкуренты давят на стартапы. Но, мой проект не стоит рассматривать как стартап. Он делается «Jast For Fun», или говоря по‑русски, для собственного удовольствия. С профессиональной точки зрения, я осознаю, что мне, совершенно точно, придется столкнуться с рядом серьезных проблем на этапах проектирования, макетирования, реализации, отладки, и быть может даже производства. Я не о производстве макета, а о производстве изделия. Чтобы телекоммуникационные компании не видели во мне конкурента, я постараюсь ограничить свои амбиции на стеке GSM, а значит не буду представлять угрозы для телеком‑индустрии. Это важно. Замечу, что, даже без серьёзной конкурентной борьбы, попытка реализовать подобный проект, не является тривиальной задачей. У меня возникали ситуации, в которых 90% усилий нужно было тратить на борьбу не техническими проблемами. Меня касались вопросы организационные, вопросы безопасности, и проблемы, возникающие в этом мире, когда Вы планируете сделать что‑то действительно серьезное и стоящее. Нужно признать тот факт, что, мне не нравится бороться с ветряными мельницами. Если говорить о технических сложностях, то, я осознаю что возникнет необходимость решать ряд вопросов, связанных с радио трактом. Мне придется заниматься согласованием антенного тракта, построением и макетированием PA и LNA, развязкой входных и выходных цепей радио тракта. С калибровками, такими как IQ imbalance, DC offset, и другими (я уже делал это, при подготовке к производству базовых станций). А может даже придется вносить предискажения в радио тракт. Я молчу о городской застройке с ее рэлеевскими замираниями и о доплеровском сдвиге, при движении транспортных средств и его компенсации при приеме. В целом, это огромная база знаний в области построения сотовых сетей, и кое‑какими знаниями из этой области я обладаю. Я осознаю, что мне придется столкнуться с серьезной цифровой обработкой сигнала. Я понимаю, что это технические вопросы, касающиеся проектирования под FPGA, и решение компромиссов оптимизации кода на Verilog, которые связаны и с вопросами конвейеризации, и с вопросами оптимизации под конкретную архитектуру FPGA (например LUT4/LUT6; необходимость использования аппаратных умножителей, и т. д.). С другой стороны, существует желание подготовить этот код так, чтобы он был ориентирован на готовые блоки производителей микросхем (ASIC). Я знаю, что мне придется столкнуться с криптографией на уровне выше чем сейчас, а я работал ранее и с библиотекой openssl и AES, и RSA и EC, но на уровне разработки кода для CPU, или, на уровне настроек авторизации на радиус‑сревере. Мне придется разработать и использовать собственное процессорное ядро, или заимствовать что‑то на Open Cores, или подобных ресурсах. Верификация такого кода, это тоже очень трудоемкое занятие. Мне придется столкнуться с разработкой или сборкой toolchain‑ов, компиляторов, и операционной системы. Как небольшой, реального времени в BaseBand‑процессоре, так и чего‑то серьезного, там где речь пойдет об Application‑процессоре. Мне придется собрать Linux, и это не будет buildroot, а необходимо использовать CLFS или просто подобрать пакеты самому. Возникнет необходимость разработать код приложений, и конечно код телефона. Я уже молчу о тестировании кода. Очень хотелось бы в процессе всего этого, хотя бы, избежать проблем, связанных с атаками на машину, на которой будет производиться разработка и сборка проектов. Вероятно у Вас не возникало ситуаций, когда Ваша машина каждый день должна была загружать операционную систему CD‑накопителя (т.к. его нельзя изменить), и проверять контрольные суммы каждого файла, который был сохранен в процессе работы на Ваш накопитель вчера. Быть может, Вам не патчли компилятор через такие вещи как UEFI, или даже Intel Me? Или, не заменяли 25Q128 на другую микросхему, BIOS, которая разрушается при выпаивании? Тогда, Вы даже не знаете с какими проблемами можете столкнуться, работая над серьезными проектами. Полагаю, профессионалы, знают, что обычного инженера, не касаются 90% проблем, которые решают технические руководители и сотрудники службы безопасности. А в этом любительском проекте я один, пока один. Полагаю, профессионалы, которые прочли этот абзац, уже поняли что я знаю многое, начиная от уровня физической реализации транзистора, до того что из себя представляет утилита DrverVerifier или PerFast, и как происходит борьба с атаками в серьезных проектах. Кроме того, у меня нет средств на эту борьбу и меня никто не финансирует. Даже если не затрагивать вопрос безопасности, то о чем я говорю, сложная задача, на несколько лет. В 2006, году, один мой коллега, по имени Александр, на реализацию UART TX на FPGA потратил больше месяца. У меня небольшой опыт в этой части, но я уже знаю как строить синхронные схемы с конвейером, и вижу во что развернется код на Verilog. Я знаю, что мне придется работать сетевыми протоколами, но это не простой 803.3 и вышележащие TCP и UDP, это протоколы управления, такие как LLC, или например RRC (Radio Resource Control), полагаю, доберусь и до SMS (CP, RP).
Итак. Часть людей пропустило вышележащий абзац, и это хорошо, иначе могут испугаться кучи непонятных слов. Что же побудило меня заняться подобными проектом? С одной стороны, это обучающий курс, который я проходил достаточно давно. Он называется: «From N‑AND to tetris». Он в упрощенной форме, описывает, как можно построить процессор из логических элементов, затем как разработать код игры, для этого процессора. С другой стороны, меня побудило изучение языка Verilog, на котором, в наше время, проектируют (не совсем так) цифровые микросхемы. И наконец, мое хобби. А заниматься электроникой и программированием начал в 3–5ом классе школы. В 7 классе, у меня дома, уже был старенький осциллограф. Осциллограф, — это прибор для наблюдения за формой электрических сигналов. А в старших классах школы, я свободно писал код на трех языках программирования: Basic, Pascal и Assembler (x86). Два первых, в настоящее время, практически не используются. На данный момент, мне 39 лет, и оборачиваясь в прошлое, на свою предыдущую жизнь, я осознаю, что мое хобби, не было ориентированно на конкретную цель и не приводило к каким‑либо серьезным проектам. Есть что‑то мелкое, лежащее на github или на старых дисках, но, оно лишь отражает возможности, а не результаты. Наверное, это результат того, что я не умею продавать. Результаты были, но они были в компаниях, на которые я работал. Например, Antilency (antilatency.com). Есть и еще один момент, который является стимулом к реализации подобного проекта. И он связан с безопасностью. Хочется иметь полностью подконтрольный абонентский терминал. Телефон, который работает четко согласно стандарту, но может не отвечать на запросы со стороны сети, если Вы этого не хотите. Это, так называемые paging‑и, например. Хочется, чтобы телефон не вел скрытой записи разговоров. Хочется иметь возможность определять факт того, что (поддельная) базовая станция, передала команду на отключение шифрования. Многие вещи в системе хотелось бы держать под контролем. Кроме того, если Вы начинаете анализировать код проектов, который, находятся в открытом доступе, или код в котором участвовали люди из команды конкурентов, то увидите там непростые, казалось бы случайные вещи. Иногда, там находятся закладки, замаскированные под ошибки. Но они не случайны, это работа на конкурентов. Ее цель проста. Или создать проблемы, и таким образом в глазах общества обрушить рейтинг вашего продукта, или в определенный момент полностью сломать бизнес. Я проходил эту школу, мне не подходит такая стратегия. Мне хотелось бы полностью избежать подобных вещей в моем проекте, на любом уровне. Будь то код приложения на C++, или код процессора на Verilog. И даже в микросхемах, бывают закладки. Так что это сложная и амбициозная задача, для одного человека.
Эта статья, является вводной, к длинному циклу статей, которые я планирую выкладывать по мере реализации проекта. Я помещу ее в раздел пиар, хотя, к пиару, по сути своей, она не относиться. Цикличность статей будет зависеть от имеющихся возможностей. Однако, я питаю надежду, что найдется серьезный работодатель, который готов поощрять сотрудников, у которых, хобби совпадает с работой, и они горят этим хобби. Результат реализации подобных проектов представляет собой серьезную интеллектуальную собственность. Например, как минимум, военные заинтересовались бы телефоном, на который есть полный исходный код, и ни одной библиотеки. Я не хочу и падать, и обладаю желанием развиваться дальше. А на развитие, требуется финансирование. У меня его нет, и полагаю, это результат той схемы, о которой я говорил выше, и в которую не лез.
Комментарии (6)
eugenk
22.11.2023 19:24Даже не знаю что на это сказать... С одной стороны безусловно респект и уважуха. Задача очень амбициозная и интересная. С другой стороны сразу же возникает основной вопрос древнекитайской философии - А НАХУА ??? Нет, понимаю что just for fun, но уверяю, если будете что-то делать чисто для себя, это занятие Вам очень быстро наскучит. Не говоря уже о таком пустяке, что ещё быстрее кончатся деньги. Поэтому задам Вам один-единственный вопрос. Вы пытались когда-нибудь заниматься бизнесом ??? Нет, даже не тем бизнесом который приносит прибыль или хотя бы выходит на окупаемость. А хотя бы тем, что в итоге провалилось, однако показало некий интерес со стороны потенциальных клиентов или чьё-то желание с Вами сотрудничать ? Это тоже целая история, и без таких навыков боюсь Ваш проект очень быстро заглохнет не успев начаться. Может сначала лучше потренируемся на кошках ??? И такая кошка у меня есть. Целых две. Первая это повторить нечто вроде этого https://github.com/mist-devel , но на элементной базе 2023-го года. Интересных задач там да простят меня девушки, жопой ешь ! Хватит на годы. Но шансов на некоторый успех, хотя бы на формирование активного комьюнити тут по-моему куда выше. Вторая - микромыши. Вот гляньте что это такое https://www.youtube.com/watch?v=9vS9AKm-Bek . Идея следующая. Сделать достаточно бюджетную модель (в пределах 200-300 долларов). Возможно несколько моделей разного класса (и стоимости). Разработать достаточно простую, разборно-модульную конструкцию лабиринта. И организовать соревнования. В Москве, а не в Токио или Сан-Франциско. Уже есть несколько довольно популярных ребят-блогеров, которым было бы интересно такие соревнования освещать. К сожалению сейчас обстоятельства таковы, что не имею возможности заниматься в одиночку ни тем ни другим. Может лучше начнем с этих двух проектов или чего-то подобного ??? А потом уже возьмемся за телефон... Как бы то ни было, с интересом буду ждать Ваших следующих публикаций.
EvgenySbl Автор
22.11.2023 19:24+2А теперь, давайте подумаем. Если, я начал заниматья радиотехникой и прогрммированием в третьем классе школы, а в мир телекома так или иначе вошел в 2006 году, и вышел в 2017. Чем бы я хотел заниматься? 3GPP,- jast for fun ;-)
Это простой ответ на простой вопрос.
Если хотите, более развернутый ответ, то вот он.
В двухтысячных, я работал в подразделении Заря-К. Там был великолепный с точки зрения технической подготовки коллектив. По этому само по себе направление понятно. Еще до того как я появился в этом коллективе, коллеги смогли выпустить свой чип стандарта CDMA. Активный костяк той компании, это 15-20 человек. Всего в коллективе 70 человек. На самом деле, проект не выстрелил только по двум причинам. Первая, не хватило денег на повторный выпуск ASIC-а. Что-то недопроверили и ошиблись в глупости, в одном выводе микросхемы. Вторая,- в РФ, победил GSM, а не CDMA. Я не о WCDMA(3G), а о альтернативе GSM.
На самом деле, так или иначе, в телекоме, я работал с 2006 по 2017 год. Сначала, это разработка служебной связи КВ диапазона. Проект, отдали в другое подразделение, а я перевелся на граджданку. Там были отностильно простые модуляции, но стремились к тому что уже было передовым. Отсюда и знания про феддинг, замирания и так далее. Мои коллеги, сидеи и кодили алгоритмы, котороые имели проямое откношения к синтезу сигнала,- например, кордик. Затем мне повезло работать в международном подразделении, которое занималось разработкой базовых станций. Начиналось все с создания проекта, который был фактически реалиованным стандартом 802.16d. Это была связка DSP + FPGA PHY + RF. Испытания показали что связь возможна на расстоянии нескольких километров, но при этом с продажи сняли чип DM256. Мы перешил на чипы от Runcom Technologies, а затем, я познакомился с Sequans Communication. Году так в 2013, я разработал анализатор протоколов сотовой сети, работающий на телефонах Samsung. Это ПО, для настоящих оптимиаторов сотовой сети. Мне удалось исследовать дмагностический протокол от компании Qualcomm, доступ к которому удалось получить через устройство /dev/diag, и через систему логирования Qualcomm, получить всю служебную информацию, что передается в канале связи и на различных подуровнях стека протоколов (GSM/3G/4G). Конечно, они использовали ее для отладки, а мы для того чтобы помочь оптимизаторам поставщиков услуг сотовой связи, работать с сетью.
Т.е знания, касающиеся того, как работает все это у меня имеются, да и опыт по развертыванию сотовой сети, пусть и стандарта WiMax со всеми проблемами конфигурирования опорной сети, получения разрешений на установку антенн и а даже изменеием наклона кросс-поляризованных антенн, у меня тоже имеется.
Глобальную проблему я вижу тольео в отстутствиии рядя приборов. Это что-то из разряда CMW-500, FSL-6, FSQ-8, а еще Network Analyzer, и им подобные. Это очень дорогие приборы. Мне как то предлагали взять домой спектроанализатор, когда возникла проблема с неработающей мышкой, вероятно, по причине зашумленности спектра в квартире где я жил.
Касательно денег. Да. Я думаю, они кончаться. Но если на работе, в свободное время, у Вас будет доступ к подобным приборам, это не станет проблемой. Кроме того 95% того что предстоит сделать до выпуска ASIC-а стоит не так дорого. Разрабатывать код на FPGA.. Посмотрите, сколько сейчас стоит Alter-а, Xilinx, или альтернативы в виде Lattice или GoWin. У меня кстати есть отладка Lattice и GoWin и Это не дорого. Самое дорогое Referenc-ы касающиеся RF части, и время технического специалиста. Но, если для Вас оно условно-бесплатное... почему бы и да. Году так в 2016, я был знаком с проектом аналогичным OpenBTS. Его написал один человек. И мы подключали смартфоны, к базовой станции, код которой выполнялся на процессоре Intel, а по сети она была связана с RF-кой. Тот мощный i7 стоил тысч 50-100 на тот момент времени. А RF-ка стоила $100-250 долларов CША. Вы действительно думаете что прототипировать подобный проект стоит дорого, по деньгам? Это дорого, только по ресурсам человека и по используемому оборудованию, выпуску ASIC-а и сертификации. Сертификаация, мне, вероятно не светит..
d1024
22.11.2023 19:24Громкое заявление о сверхзадаче. Мне видится, что для начала сделать все можно несколько проще. Покупаем на али подхоящее железо для базы OpenBTS. Два комплекта. Запускаем базу. На втором комплекте пишем телефон. Все в софте. Думаю, что можно будет обойтись без FPGA для начала. GMSK модем, кодирование, проокол. Добиваемся, чтобы это работало с базой. Вот когда будет работающий стек, приходите сюда, мы подивимся и обсудим. Даже никакие перечисленные выше приборы не нужны. Ну может осциллограф.
EvgenySbl Автор
22.11.2023 19:24+1Подобные задачи мы уже решали в рамках работы в АО Концерн Созвездие, в подразделении компании ЗАО Заря-К. Вы предлагаете пойти мне по типовому пути проектирования сверху вниз, а значит вложиться в отладочные средства. Я же, уже обладая опытом в проектировании, в моей ситуации предпочту идти по пути снизу вверх. У подобного направления тоже есть свои плюсы.
Во-первых, Вы имеете возможность использовать отладочные комплекты оборудования, которое уже имеется в наличии. А это некоторые отладочные наборы на FPGA.
Во-вторых, используя этот путь проектирования, мала вероятность того что кто-то серьезно заинтересуется и начнет воровать корректно спроектированный код, поскольку нижний уровень у них, скорее всего уже есть, а у меня,- нет.
-
В-третьих, этот путь подразумевает ведение непрямых проектов. Т.е. если Вы научились генерировать и принимать OFDM сигнал, и у Вас имеются оптимизированные алгоритмы помехустойчивого кодирования, не факт что Вы используете их только в сотовой связи, ведь такие вещи применяются и в цифровом кабельном вещании и в спутниковом телевидении и много где еще, например спутниковой связи. А процессор, который потенциально может быть разработан, может использоваться для других целей. Вспомните, компанию ARM, которая не имеет собственной фабрики. У меня нет амбиций захватить мир, но я знаю что все что буду делать может пригодиться где-то еще.
Полагаю, предложение купить мне что либо готовое, не являются этичным. Я могу заметить что мой технический опыт, вовсе не говорит о моем материальном положении. Если Вы готовы предложить мне в дар подобные комплекты, я срадостью его приму на безвозмездной основе и найду ему применение. Кстати говоря, я работал с базовой, построенной на такой платформе в 2014 году.
Касательно рельной работы в телекоме, мне приходилось общаться с компанией RadiSys, они предлагали продать нам, в свое время, библиотеки LTE-стека базовой станции, все что выше верхнего MAC. Я работал с компанией Runcom Technologies в области подготовки к производству базовых и абонентских станций, а так же развертывания сети WiMax на их оборудовании. У меня был опыт работы с исходным кодом, предоставленным Sequans Communications, для их чипов. И мы могли бы выйти на производство, если бы руководство действительно хотело этого. У меня был опыт калиброваки RF-трактов с переносчиками частоты, обычными, аналоговыми, с гетеродинированием сигналов. Это глупо и лучше было бы использовать нужную частоту сразу, но исходных кодов, работающих с RF у нас небыло, а подобные решения принимались другими людьми. Так что мне лучше знать с какой стороны начинать проектирование. Помните, как там у Лозинского (Киплинга) "... И нужно все воссоздавать с основ ...".
На данный момент у меня нет опыта для того чтобы приблизиться к физическому уровню построения процессоров и производству чипов, но я знаю, что неплохим интерфейсом для компаний-производителей кристаллов служит Verilog. На данный момент у меня есть понимание, что неплохим интерфейсом к машинному коду любого процессора будет служить код на C/C++, который, легко собирается при помощи gcc, уже имеющего поддежку нескольких архитектур.
KstnRF
22.11.2023 19:24Текст по сути состоит из двух сплошных абзацев. Не разбавленных даже пробелами. Нет желания читать, что благополучно и сделано :)
ajijiadduh
проверьте пожалуйста свою статью хотя бы в ворде