Сообщество - TECHNO BROTHER

TECHNO BROTHER

2 018 постов 13 454 подписчика

Популярные теги в сообществе:

254

Ретропонедельник №111, географический. Альт ПТ-210

Развал Советского Союза трагедия для для отечественной промышленности - разрушались цепочки поставок, кооперация между предприятиями. Товарищ для моего виртуального музея привез трехпрограммный радиоприемник с часами и таймером Альт ПТ-210. Проследим же, сколько предприятий было задействовано в его производстве присмотревшись к клеймам на деталях, не зря же я составляю каталог клейм советских предприятий.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

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

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Произведен в моем родном г. Свердловске на заводе радиоаппаратуры, о чем говорит знак завода. Сам завод банкрот.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Разберем до конца.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Динамик, кажется 3ГДШ-8, логотип завода "орион", г. Тернополь. Завод похоже до сих пор действующий.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Печатная плата:

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост
Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Плата таймера. Вакуумный люминисцентный индикатор - производство Саратовского завода Рефлектор. Фактически от возможностей завода ничего не осталось. Подстроечный конденсатор изготовлен на Псковском заводе радиодеталей. Судя по сайту, от завода осталась только скорлупка, площади распродаются или сдаются в аренду. Производство если и ведется, то похоже без перспективы роста и развития.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Микросхема часов произведена в г. Збараж на заводе квантор. Судя по всему от основного производства завода ничего не осталось.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Резисторы произведены на ПО Эркон из Нижнего Новгорода. Завод живой, новую продукцию осваивает.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Конденсаторы с Ленинградского конденсаторного завода Мезон. Сайт завода застрял в 2000м. Новой продукции завод не осваивает, без госзаказа умрет.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Микросхема сделана на заводе Родон в г. Ивано-франковске. Завод как таковой прекратил свое существование. Трансформатор изготовлен на заводе Радиан с. Александровское - филиал ставропольского трансформаторного завода. Завод ныне живой.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Печально известные конденсаторы серии КМ. Содержат палладий, из-за чего папуасы с бокорезами погубили огромное количество ценной техники. Выпускаются ПО монолит в г. Витебске.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Резисторы и конденсаторы. Красные керамические изготовлены на Ленинградском конденсаторном заводе Кулон. Завод вроде жив и переехал, но сайт до сих пор в разработке.

Переменные резисторы изготовлены на иркутском заводе радиан. Завод выжил но полностью сменил профиль деятельности.

Белые конденсаторы произведены в г. Николаев на ПО Никонд (николаевский конденсаторный завод). О текущем состоянии ничего не известно.

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

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

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

Переключатели П2К сделаны на ПО Лтава из г. Полтава. Сайт не открывается, но похоже завод что-то производит.

Нанесем на карту предприятия, что мы распознали выше

Ретропонедельник №111, географический. Альт ПТ-210 Техника, Электроника, Промышленность, Российское производство, Виртуальный музей, Бытовая техника, Радио, Длиннопост

За кадром остались еще куча предприятий - производитель стеклотекстолита, пластика, кабеля, разъемов и т.д. Мы распознали только те, где можно распознать клеймо, но даже в таком виде география впечатляет. Увы, на сегодняшний день производить радиоаппаратуру полностью из отечественных компонентов затруднительно, а неконтролируемый дешевый импорт выжигает ростки собственного производства не выдерживающего конкуренции.

Показать полностью 15
629

Карманный лабораторный блок питания

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

Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост

Основа — китайский модуль блока питания XY-SK80. На вход ему нужно подать постоянный ток напряжением от 6В до 36В, на выходе он сам повысит или понизит напряжение до заданного в диапазоне 0,6-36В. Выходной ток до 5А, выходная мощность до 80Вт. К сожалению ради копеечной экономии на паре кнопок управление у него не очень удобно, но работает неплохо, даже свой маленький вентилятор включает только под большой нагрузкой.

Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост

Аккумулятор — литиевые банки 18650, так как выходное напряжение мне потребуется в основном 12В, то и питающее модуль хотелось бы получить около этого значения — так меньше потери. Но мне не хотелось подбирать BMS и зарядное устройство для 3S или 4S аккумулятора, это позиции не сильно распространенные, поэтому я сделал переключатель, который одним движением превращает аккумуляторную батарею из 4х соединенных последовательно в батарею где 4 элемента соединены параллельно:

Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост

В режиме «4 последовательно» батарея подключена к модулю блока питания. В режиме «4 параллельно» батарея подключена к модулю пауэрбанка.

В итоге модуль пауэрбанка показывает остаточный заряд (в блоке питания задается только напряжение отсечки), обеспечивает зарядку от type-c, micro usb и даже apple. А BMS в таком случае не нужна — ячейки выравниваются за счет параллельного подключения.

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

Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост

Переключатели на 2 переключающих контакта, 4 штуки жестко соединены пластиковой планкой посаженной на клей. Аккумуляторы сделал съемными, чтобы была возможность их извлечь и вставить куда-нибудь.

Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост
Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост
Карманный лабораторный блок питания Электроника, Техника, Своими руками, Блок питания, Длиннопост

В итоге имеем:

Карманный лабораторный блок питания с выходом 0,6-36В, с током до 5А и мощностью до 80 Вт. Также с функцией пауэрбанка и заряжающийся от любого USB шнурка и питающий любой USB прибор. Емкости батарей не так много — на максимальной мощности он может проработать недолго — всего десятки минут. Можно заряжать в поле аккумуляторы экзотических рабочих напряжений.

Модель корпуса не выкладываю, так как есть недостатки, хоть концептуально все работает:

  1. Нужно сделать наплыв для защиты крутилки, в кармане нажимается уходя в режим настроек

  2. Острые углы корпуса раздирают карман, лучше сделать его пузатеньким и замыленным

  3. Не хватает проушины под ремешок, такой уронить будучи на лесах очень обидно

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

  5. учесть провода внутри, держатель банок еле встал на место.

Вот такая самоделка, решил поделиться, т.к. поиском ничего похожего не находил. Объективно эта штука сохранила мне очень много времени.

Показать полностью 7
144

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung?

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android



Мы с вами уже давно привыкли, что при покупке нового смартфона приходится выбирать всего из двух программных платформ — Android и iOS. Большинство читателей едва ли помнит, что дуополия на рынке была далеко не всегда: на заре развития смартфонов как повседневных устройств для всех и каждого, некоторые производители представляли свои собственные платформы. Но если Windows Phone всё ещё вспоминают с теплотой, то о другой системе, которая позиционировалась как конкурент Android, забыли практически полностью. И имя этой системе — bada! Недавно я купил себе парочку полностью рабочих bada-фонов с AMOLED-дисплеями по 300 рублей. Были ли у bada шансы в сравнении с Android и что из себя представляла эта система «под капотом»? Узнаете в статье!

❯ Текст


По сравнению с обычными кнопочными телефонами, современный рынок смартфонов зародился не так уж и давно — всего около 13 лет назад. На стыке нулевых и десятых шла активная борьба за карман и предпочтения пользователя: Android 1.6 потихоньку заменял современный Android 2.0/2.1 Eclair, первые три модели iPhone шли победоносной поступью благодаря наличию джейлбрейка и полной кастомизации системы, да и практически каждый крупный производитель мобильных устройств имел собственную платформу, на которой базировались её устройства.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


В середине-конце нулевых, большинство пользователей были не искушены фишками полноценных операционных систем — они привыкли жить без многозадачности (за исключением пользователей Sony Ericsson и S60), без нативных приложений, без плавных анимаций и ускорения 3D-графики. Людей подкупал встроенный функционал телефонов: если там была встроенная читалка RSS и предустановлен клиент популярных в то время соц. сетей (мой мир :)), то обладатель устройства обычно пользовался именно ими. Конечно же, уже тогда были смартфоны, напоминающие нам современные устройства: помимо Apple, свои устройства предлагали Nokia (Symbian), Sony Ericsson (Symbian/Windows Mobile), HTC (Windows Mobile), но цены на них действительно очень «кусались».

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Huawei U8500, или Билайн E300 — один из первых реально доступных Android-смартфонов в РФ. Ценник был около 6-7 тысяч рублей в конце 2010 года.

После выхода iPhone, производители потихоньку начинали отказываться от привычных кнопок и выпускать всё больше моделей с тачскрином. А поскольку попробовать новый способ управления хотелось всем, начали появляться относительно недорогиетачфоны— обычные телефоны, обладающие сенсорным дисплеем и кучей сетевых возможностей. Примеры одних из самых популярных тачфонов своих лет, это конечно же Samsung S5230 Star, Samsung S3650 Corby, LG Cookie и LG Cookie Fresh. В те времена, встретить человека с таким телефонов было не просто, а очень просто и в каких-то отдаленных местах это даже был предмет для хвастовства!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Когда уже было очевидно, что полноценные смартфоны в ближайшем будущем станут основным портативным устройством, Samsung решили взять предыдущий опыт и наработки SHP (Samsung Handset Platform — платформы S5230) и влить их в разработку совершенно новой смартфонной платформы, имя которой была —bada(с корейского — море). Новую платформу представили с свежей линейкой смартфонов Samsung Wave, а первым устройством был S8500 — смартфон на базе bada 1.0 с ёмкостным тачскрином и AMOLED-дисплеем. Вышел девайс в том же году, что и первый Android-флагман S-серии — Samsung Galaxy S…

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


И с этим связан очень интересный казус, ведь «под капотом», S8500 был очень похож на своего Android-собрата: использовался тот же чипсет Exynos 3110 «Hummingbird» (он же использовался и в iPhone 4 как Apple A4 с некоторыми доработками) с тем же радиомодулем. Конечно остальные характеристики были немного скромнее Galaxy S (384мб ОЗУ против 512мб, 8гб ПЗУ вместо 16, AMOLED-матрица немного меньше по диагонали), но и сам смартфон стоил ощутимо дешевле Android-собрата. Немудрено, что энтузиасты начали пытаться портировать Android на S8500 — и у них это получилось, хоть полноценный порт появился примерно через 2 года после выхода устройства на рынок.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Но почему большинство пользователей хотели перепрошить своё устройство на Android и чем была bada? Предлагаю узнать в практической части!

❯ Сегодняшние герои


Недавно я листал онлайн-барахолки в поисках интересных и несколько диковинных смартфонов для будущих статей. Выборка, как обычно для моего блога, стандартная: чем дешевле, тем лучше. И тут я вспомнил, что были когда-то смартфоны на базе bada — я будучи школьников даже успел потыкать Wave 525 у знакомого.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


E300 я тоже решил прихватить — за 300 рублей предлагался девайс с родной коробочкой!

Однако не все бадафоны представляли для меня интерес. В первую очередь, меня интересовали смартфоны с GPU, которых не было у самых бюджетных устройств (Wave 525) и одной из главных хотелок был крутейший SuperAMOLED дисплей. После недолгих поисков, я нашёл на юлито интересующие меня девайсы за… 300 и 500 рублей.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


«Дефект» первого смартфона заключался в забытом пароле. Это всё обходится буквально за 5 минут установкой свежей прошивки, но мне даже этого делать не пришлось: паролем оказался «1111» :) S7250 работает на базе bada 2.0 — последней версии этой платформы от Samsung, до слияния с Tizen.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Второй смартфон был полностью рабочим и исправным. Ему не требовалось никакого обслуживания совсем, хотя можно найти целые варианты на пароле из 200-300 рублей. Что занимательно — S8500 работал на базе bada 1.0, что даёт нам возможность напрямую сравнить их!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android
Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

❯ Что у них под капотом?


Я намеренно не называю bada операционной системой. По сути, это лишь программная платформа (если очень условно — лаунчер), которая предоставляет набор API и интерфейс смартфона, но при этом сама может быть запущена на любой ОС — будь это Linux, или собственная RTOS, которая применялась во всех устройствах на базе bada 1.0.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


После адаптации ядра Galaxy S к S5800, многие люди переходили именно на Android, несмотря на то, что система от Google была ощутимо прожорливее. Под первый Wave выходили разные прошивки — от 4.1 JellyBean, до 4.4 KitKat, старичок долгое время оставался достаточно актуальным.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Требования платформы были отнюдь невысокими, гораздо ниже оных у Android: bada могла легко работать на смартфонах с <128мб ОЗУ (у Wave 525 завялено 80мб, по факту скорее всего 128, где 48 зарезервировано системой), чипсетом с частотой ~200мгц и весьма небольшим объёмом ПЗУ. При этом в отличии от тачфонов, bada предоставляла механизм пакетов и предлагала разрабатывать приложения аж на трёх языках:

  • Java — в платформе была реализована полноценная поддержка J2ME приложений, что в те годы сразу устраняло недостаток приложений в магазине. При этом, Java-приложения не умели одни из самых важных фишек новой системы: уведомления и (возможно) ускорение 3D-графики. Кроме того, у Samsung не очень удобный джойстик для «кнопочных» игр.

  • C++ — основным языком для разработки приложений под bada были «плюсы». Платформа сразу выбрала «нативные» рельсы — что само по себе очень хорошо, однако из-за некоторых казусов, это обернулось проблемами. Найти SDK и эмулятор для разработки под bada можно и сейчас — я уже успел немного почитать документацию и посмотреть на сэмплы. И в целом, именно с точки зрения разработки, bada была весьма интересной — эдакой смесью костылей Symbian (нет исключений, полное отсутствие RAII и инициализация отдельно от аллокации) и простоты Java (приятная и удобная библиотека собственных дженериков, абстракций над базовыми типами и приятное API для построения интерфейса с конструктором форм). При этом, поддерживались все остальные фишки плюсов — в том числе и STL.

  • JavaScript — да, bada решила выбрать концепцию PWA, как одну из основных. При этом в JS было экспортировано часть API самой системы — что позволяло делать интерфейс как на JS, так и с использованием нативного фреймворка.


И с виду всё звучит просто замечательно, просто и понятно. Однако, серьёзные проблемы тянулись с самой первой версии платформы:

  • Отсутствие многозадачности — ядро, на которой работала bada, само по себе было многозадачным: в приложениях поддерживались потоки. Однако сами программы, за исключением предустановленных, всегда работали в однозадачном режиме. Почему так — неизвестно, возможно часть оптимизации под совсем слабые устройства типа Wave 525. Полноценная многозадачность появилась уже в bada 2.0.

  • Отсутствие адаптивности интерфейса — да, это не шутка. Samsung предлагали адаптировать приложение под каждое разрешение экрана отдельно, а всё позиционирование велось в пикселях. Если честно, именно этот шаг мне понятен меньше всего — Android с самого выхода предоставлял очень крутой механизм позиционирования интерфейса, да и в iOS тоже были какие-то инструменты для адаптивного UI. Это была одна из самых главных проблем bada — по сути, мы возвращались в эпоху Java-приложений а-ля 240x320/320x480.

  • Нестабильность системы — не на всех телефонах фирменная прошивка работала максимально стабильно. На некоторых моторолах ребут не был таким уж редким явлением, а некоторые китайчики могли начать перезагружаться после манипуляций в инженерном меню. Однако ожидать этого от смартфона в 2010 было странно — по некоторым слухам, даже если сторонняя программа вывалится с Access Violation (SIGSEGV), то в ребут уйдет вся система! Возможно, RTOS не умела нормально работать с MMU, однако если все программы действительно работают в «flat»-адресном пространстве, а не с виртуальной памятью, то это создаёт очень серьёзные уязвимости (и потенциал для моддинга прошивки).


Но были у системы и очень вкусные «плюшки», например — из коробки полностью поддерживалось хардварное ускорение 3D-графики (при наличии GPU), причём сразу свежий OpenGLES 2.0 — с поддержкой шейдеров! Благодаря этому, перспективы в новой платформе были и для разработчиков игр — я знаю как минимум несколько полноценных 3D-игр с iOS и Android для ОС от Samsung. Добавляем к этому потенциал реализации 3D-ускорения Java-приложений и получаем действительно годное устройство для прохождения такой годноты, как Galaxy On Fire 2 в 60 FPS! Кроме GPU, bada поддерживала виджеты и т.н «Хаб» — приложение-агрегатор событий из соц. сетей.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Именно на «болячки» жаловались пользователи чаще всего, забывая про положительные стороны устройства. И да, даже во время собственного использования, я встречал баги и сам — но всё ли так плохо, учитывая то, что Samsung действительно работала над своими ошибками и пыталась привлечь как можно сторонних разработчиков к своей платформе? Предлагаю узнать, взяв смартфон в руки самому!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

❯ Смотрим на устройства


Первое, на что обращаешь внимание, когда берешь смартфоны начала 2010х в руки — это их компактный размер. Причём компактность здесь отнюдь не в ущерб юзабилити: в своё время, размер дисплея Wave был типичным среднячком — на уровне как 5.5" сейчас. Но при этом дисплей смартфона действительно очень классный и приятно удивляет и сейчас. Однако, здесь есть нюанс — помимо S8500, выходил так-же S8530 — практически такой же смартфон, но с SC-LCD (Samsung IPS) матрицей. В те годы, корейская компания часто давала выбор между различными типами матриц в пределах одной модели. Да что там говорить, иногда даже серьезные различия в чипсетах были!


На моем экземпляре, к сожалению матрица немного выгорела, в самом проблемно месте — верхней шторке. Увы и ах, но заметно это не так сильно, поэтому я лично обратил на это внимание только на второй день использования. Во всём остальном, я не чувствую никакого дискомфорта от «старых» OLED-дисплеев — могу без проблем юзать их часами. Wave M — устройство попроще и там используется обычная TN-матрица. Но тем не менее, её размер в 2010-2011 году был весьма впечатляющим.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Сам интерфейс системы здесь напоминает Symbian и Android одновременно. Оно в целом и не удивительно: Samsung долгое время была участником Symbian Foundation и разрабатывала обновления для этой ОС, а также выпускала свои смартфоны на базе этой системы. Ко второй версии bada, концепцию UI сильно поменяли в сторону Android, из-за чего Wave M больше похож на смартфон с Android 2.x на борту — и лично по мне, этот интерфейс около-идеален!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

bada 1.0



Сам девайс работает достаточно плавно. Здесь практически нет 60, или хотя-бы 30 FPS анимаций, но зато сама платформа отнюдь не «лагучая» в отличии от ранних версий Android.

Весьма занимательный способ установки приложений придумали пользователи бадафонов в своё время: система проверяет сертификаты и покупку только во время установки приложения, при этом вся установка заключается в распаковке zip-архива в специальную директорию на SD-карточку. По итогу очень скоро обнаружилось, что можно просто скопировать уже готовую купленную игру, скачать какое-нибудь бесплатное приложение, подменить файлы в его папке на файлы игры — и получить приложение бесплатно! В bada 2.0 этот баг поправили, но всё равно это выглядело весьма забавно для компании такого уровня.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Что насчёт юзабилити бадафонов в наше время? Ну, базовые функции они точно смогут выполнять достаточно достойно. С основной функцией «звонилки» корейцы справлялись всегда хорошо — тут и удобная синхронизация контактов с Kies (программа для синхронизации с ПК), и возможность передавать контакты через BT.

Здесь, само собой, есть Wi-Fi и 3G, но ни о каком сёрфинге речи практически не идёт. Почему практически? Потому что Opera Mini 7 всё ещё работает и уходить на покой явно не собирается — а значит прочесть материал или зайти на википедию в экстренной ситуации точно получится. bada 2.0 уже поддерживала в том числе и HTML5, но судя по всему, частично (CSS3 анимации у меня не работали). В целом, если у вас есть большое желание поставить «бадафон» в строй — то можете запилить для себя PWA-приложения, которые реализуют необходимый вам функционал. Так и клиент ВКшечки можно реализовать, и почту листать, и СМСки от банков обрабатывать.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Зато почтовый клиент работает!

Один из самых важных критериев для меня — это наличие в смартфоне годного аудиотракта. У моего BlackBerry Priv качество звука просто отменное, притом что используется встроенный ЦАП в Snapdragon 810. И плеер, и качество звука здесь очень даже ничего. Плеер удобный, есть DLNA для трансляции мультимедиа на телевизор.

Лично у меня сложилось впечатление, что в середине десятых, качество звука через 3.5мм джек заметно просело у смартфонов, по сравнению с народными музыкальными Nokia — как например 5310.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Ну и не забывая про мультимедийную часть смартфона, я проверил камеру — когда-то, у Galaxy S была весьма достойная камера, учитывая его ценовой сегмент. У Wave камера тоже вполне ничего, правда с теми же «болячками», что и у других мобильных камер прошлых лет — крайне плохое качество при съемке в темноте. Ну и автофокус забрали. :(

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android
Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Поскольку у смартфонов был GPU и Samsung всерьез старались привлечь разработчиков игр под свою платформу, на bada выходили и 3D-игры с очень годной, по тем временам, графикой.

В целом, недостаток нативных приложений в какой-то степени компенсируется наличием J2ME, но именно отсутствие нормально поддержки от Samsung и странная политика в отношении безопасности, в конечном итоге добили bada. После того, как превосходство Android стало очевидным, Samsung решили сделать упор в Tizen — идеологическом продолжении MeeGo, мобильной ОС, которая разрабатывалась Intel и Nokia. Компания выпустила сразу несколько устройств на новой платформе — Samsung Z (без Galaxy), после которого вышло ещё несколько смартфонов и Tizen окончательно обосновался на холодильниках/часах/телевизорах. Мобилок на Tizen я пока ещё не видел, хотя покопать их с технической точки зрения и сравнить с N9 было бы интересно — но в РФ они достаточно редкие.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android


Ну а несколько лет назад, Samsung закрыла магазин приложений Tizen, что формально означает полный провал «вертушки» :(

❯ Заключение


Samsung в плане самопальных платформ напоминает Microsoft — те тоже умудрились сделать действительно крутую и необычную Windows Phone, отвоевать какой-то процент рынка и заполучить фанов своей системы, но затем пришли эффективные менеджеры и решили рубить всё на корню.

И даже если команды разработчиков самих этих платформ горят идеей запилить что-то крутое, бабло и желание улучшить отчетность делают своё дело. Но раз в год и палка стреляет — не зря ведь инженеры Nokia основали свою компанию Jolla, которая пилит Sailfish OS. А ведь «Аврора» — прямой наследник Sailfish! :)

Но если говорить конкретно о бадафонах — то несмотря на баги и некоторые глупые решения, это были весьма годные девайсы, учитывая действительно низкую цену. Настоящим конкурентом бюджетных бадафонов была лишь Nokia 5228/5230, которая хоть и имела настоящий Symbian, но не была оснащена Wi-Fi, GPS и даже 3G. Но вот с кем bada могла конкурировать в верхнем сегменте рынка?

Показать полностью 22
111

Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18

Начинаем понедельник с очередного экспоната в виртуальном музее. Сегодня это фотокамеры ФК 18х24 и ФК 13х18. Они абсолютно идентичны по конструкции, различаются лишь размером фотоматериала. И выпущены в один год - 1955. Камеры производились вплоть до 1987 года.

Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост

ФК 18х24.

Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост

ФК 13х18

Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост
Ретропонедельник №110. Фотокамеры ФК 18х24 и ФК 13х18 Техника, Сделано в СССР, Пленочные фотоаппараты, Фотоаппарат, Длиннопост

Из коллекции Черненко А.

Показать полностью 23
46

Коробочка, которая поёт

Дополнительные фото в источнике материала и комментариях.

Прошлая статья с попыткой собрать что-то наподобие MIDI-модуля, судя по всему, вам понравилась, поэтому держите описание ещё одного модуля — на сей раз голосового синтезатора — с несколько более запутанной историей, более сложным чипом и менее вырвиглазной дыркой вокруг экрана :-)

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

❯ Та девушка, которая поёт


Начнём со сжатого экскурса в историю.

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

Всё изменилось с началом исследовательского проекта в Университете имени Пумпеу Фабра в Испании, возглавленного Хидеки Кенмоти и профинансированного компанией Yamaha. Результаты этого исследования впоследствии вылились в коммерческую технологию под названием Vocaloid.

Первые вокалоиды звучали довольно примитивно. По сравнению со всеми прошлыми технологиями это был прорыв, но оглушительным успехом назвать их было сложно. Ровно до тех пор, пока компания Crypton Future Media в 2007 году, взяв за основу движок Vocaloid 2, не выпустила то, что впоследствии совершило фурор в концепции гострайтинга: Хацуне Мику.

Секретом успеха стал не только и не столько удачный голос, сколько то, что это по сути была «поп-звезда в коробке»: при покупке вы получали не только саму программу для синтеза голоса, но ещё и возможность использовать самого персонажа по Creative Commons CC-BY-NC.

Миловидный персонаж с новым для многих голосом лёг на благодатную почву активно развивавшегося тогда культурного сегмента японского интернета. Эпоху удачнее придумать было нельзя — активный бум User-Generated Media, параллельно с переползанием от Shockwave Flash к видеоконтенту на тогда ещё совсем молодом видеохостинге Nico-Nico Douga. Но главным плюсом было даже не это — ведь в отличие от настоящей, живой поп-звезды, Мику просто физически не могла отказаться спеть то, что вы ей там понаписали.

Это породило множество споров и дебатов, а также западающих в душу песен. Среди прочих отличился, например, deadballP — запаковывая в свои песни с лютейшим джазовым вайбом абсолютно неожиданные слова. Порой настолько неожиданные, что сам Nicovideo композитора неоднократно банил за «нарушение общественного порядка». Для примера, предлагаю читателям ознакомиться с его джазовой импровизацией с лейтмотивом «вот ты выпей молоко — сиськи будут о-го-го!» :-)

Бум user generated content подкрепился выходом игры Project DIVA на PSP, куда взяли самые популярные песни, разбавив 3D-графикой для видеоклипов, до кучи добавив возможность создавать свои клипы и карты из произвольных MP3-файлов.

Таким образом, разработчики получили не только дико популярную франшизу, но и неиссякаемый поток заведомо успешного готового контента для неё.

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

Вот, например, было подразделение SEGA AM2 — то самое, которое подарило нам такую классику, как Shenmue, Out Run, Virtua Fighter или Daytona USA. Его на тот момент возглавлял Макото Осаки — и даже ему не удалось получить копию игры по внутренним каналам, пришлось покупать в обычном магазине.

Впрочем, игра ему нужна была не для того, чтобы отдохнуть в свободное время, а ради того, чтобы внутри своей команды изобразить порт её на движок Virtua Fighter.

И вот когда порт был уже готов, и Осаки было уже пошёл к продюсеру Уцуми Хироши с идеей сделать аркадную версию Project DIVA — другой сотрудник AM2, Ясуси Ямасита, предложил: «А почему бы нам эти наработки не использовать для создания живого концерта?»

Идея менеджменту понравилась, за каких-то два месяца кранчей они подготовили революционный ивент — Miku Fes 2009. (Обо всей хронологии — как-нибудь в другой раз :-) Концерт собрал аншлаг, начало было положено — Мику и по сей день выступает с концертами чуть ли не каждые полгода, собирая огромные залы.

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

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

❯ А внутри у неё — неонка^W процессор!


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

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

(к сожалению, на выставке разобрать и сфоткать процессор и разводку платы не разрешают :-))

Однако среди всего многообразия способов извлечения звуков из Мику и Ко. примерно 11 лет назад проскакивал такой интересный прототип, который и запал мне в душу:

Известно о нём было только то, что рабочие название технологии — eVOCALOID (Embedded Vocaloid). Впоследствии вышел пресс-релиз, в котором анонсировали микросхему с его поддержкой — YMW820-S.

Судя по даташиту и параметрам, мне думается, что это какая-то переработка старых чипов из серии Mobile Audio — из тех, что стояли в корейских телефонах с синтезом голоса для уведомлений.

Самым известным устройством на базе этого чипа был Pocket Miku — стилофон от Gakken из серии журналов «Otona no Kagaku».

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

[via]

Сколько-то лет назад я покупал такой на Yahoo! Auctions, чтобы переслать другу, и стоил он очень недорого. Тогда я ещё удивился, что оно умеет работать как USB-MIDI синтезатор.

Поэтому, когда в этом году полез во всю эту MIDI-тему, то подумал — MIDI-to-USB-host адаптеры штука обыденная, а стилофон стоит копейки, можно бы что-то и сделать! Но тут меня ждал облом — ценник на эти штуки за последние пару лет вырос примерно на порядок с лишним.

Однако вдумчивое чтение пресс-релиза навело на ещё один вектор — некий шилд для ардуины eVY1 Shield, выпускавшийся компанией AIDES.

Более того, он выпускался и в виде готового устройства eVY1 BOX, но и дизайн и цена (¥27,500 = примерно $250) оставляли желать лучшего.

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Зарядник от макбука словил кризис среднего возраста и решил податься в музыку

Поэтому я ухватил один из каким-то чудом оставшихся шести «сырых» модулей на амазоне безо всякой обвязки и решил скрафтить свою коробочку. И вот через пару дней у меня в руках самая дорогая микросхема в моей жизни:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

С обратной стороны видим уже знакомый по Pocket Miku процессор GPEL3101A и SPI-флешку — то есть в теории оно должно суметь запустить и голос от Pocket Miku!

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Быстренько раскидываем на макетке:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Для минимального включения достаточно лишь пары разъёмов и 10кОм-резистора с VBus на USB_SENSE

И да, оно поёт! Правда тихо и шумно, ведь единственный близкий к линейному выход — «наушниковый», использующий ЦАП внутри процессора GPEL, который и дудок, и жнец, и вообще — трындец, в смысле сочетает в себе полный ящик переферии от флеш-контроллеров и прочих USB до генератора вторичных напряжений питания и ЦАП/АЦП :-)

❯ Но, как говорится, есть нюанс...


Поёт этот модуль голосом VY1, также известным как MIZKI — собственный голос от Ямахи. Что, в принципе, логично, ведь Мику для этого модуля не лицензировали. Но хотел-то я чиптюн именно с Мику!

Копание в различных слоях интернета приводит к домашней страничке некоего Hummtaro, который переделал программу-программатор от eVY1 в утилиту для сохранения и прошивки ПЗУ целиком (а я уже за прищепкой на алик бежать хотел...). Также он заботливо забыл удалить оттуда копию ПЗУ своего Pocket Miku :-)
До кучи у него же на канале есть видео, где он наоборот прошивает голос VY1 в Pocket Miku.

Поэтому качаем тулзы, дампим ПЗУ и смотрим, сходства и отличия.

Кажется, где-то тут и начинаются голосовые сэмплы:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Сразу в глаза бросается большой блок данных на #40000h, который, судя по всему, и есть войсбанк. О, ну значит всё так просто! Удаляем из дампа ПЗУ родной блок данных, вставляем таковой из Pocket Miku — впритык, но поместилось. Прошиваем!

И первой композицией, которой мы насладимся в исполнении аппаратной Мику, будет 4'33" Джона Кейджа!

Пытаясь исполнить эту композицию на пианино, мой брат сломал обе ноги и руку:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Всё потому что на выходе ноль. Зеро. Ни-че-го. Ни откликов на ноты, ни даже на SysEx, который должен показать версию прошивки.

Значит, пришло время доставать драконоголовую змею и разбираться, что же там в прошивке. Но вот беда — есть бинарный блоб, который ни по какому адресу грузить непонятно, ни какая у него структура в целом неясно. Всё, что известно о процессоре — это то, что внутри ARMv7-ядро.

Эксперимента ради грузим прошивку от Pocket Miku. Ожидаемо, не работает, но на одном из пинов модуля, отмеченном как «UNUSED», появляется сигнал, подозрительно напоминающий UART. Цепляемся туда консолькой и, о чудо, там логи!

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Фраза ptr=20040000 как бы намекает нам, что наш блоб прошивки в адресном пространстве процессора попадает на адрес #20000000h, но как убедиться, что это не отдельный раздел, и исполняемый код находится в том же блоке адресов?

Просто находим в блобе текст ptr=%x,data=%x,r_data_size=%x… и дописываем к нему .%08x%08x%08x %)

Всё развалилось, но не до конца:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

После строки логов видим ещё два 32-битных числа — первое является чем-то непонятным, а вот второе — #20003a84h — явно адрес того кода, который вызвал функцию логирования.

Как это работает? Очень просто: каждый следующий аргумент для формирования строки через printf берётся со стека, поэтому если мы возьмём оттуда больше, чем было заложено разработчиком — например, добавив ещё токенов форматирования — то напечатается то, что было на стеке дальше. В нашем случае там был и адрес возврата, который указывал на инструкцию, следующую за той, которая вызвала печать этой строки.

Грузим файл в гидру по адресу #20000000h, прыгаем на смещение #3a84h, жмём Disassemble — и всё взрывается, как попкорн в микроволновке.

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Дальше идёт полторы недели медитации над листингом с постоянными попытками перетащить куски инициализации DSP из прошивки Pocket Miku в прошивку eVY1, на случай если просто-напросто не выделяется достаточно памяти перед заливкой войсбанка в него. Но всё тщетно.

В какой-то момент от безысходности я начинаю просто рандомно обрезать войсбанк Мику и прошивать его — и замечаю, что если обрезать его по размеру родного голоса, но сохранив последние 4 байта как в оригинале, то частично всё начинает работать. Ну, пока не попытаешься воспроизвести фонему, которая в прошивку не попала :-)

Постепенно увеличивая блок данных, бинарным поиском прихожу к тому, что всё ломается на превышении прошивкой размера в #1CFE00h байт. Не, ну если бы хотя бы #1D0000h, я бы подумал, что контроллеру флешки не выделяется окно достаточного размера, а так это выглядит как какой-то глупый баг.

Беру родное ПЗУ, добавляю по подозрительному адресу 16 байт мусора — не работает, хотя ту часть памяти мы вообще читать не должны, ведь родной войсбанк существенно короче!

И почти тут же натыкаюсь на странный кусок кода, которого в прошивке Pocket Miku не было. Судя по всему, он проверяет, есть ли по этому самому подозрительному адресу какие-то данные, и если есть — инициализирует USB и вешает систему.

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

С учётом, что у нас одно ядро и один поток — где-то тут всё и закончится

Обидно, могли бы хоть рядом пасхалочку оставить :-(

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Патчим эту проверку и ещё пару похожих, заложенных по разным адресам в разных функциях — и ура, играет, работает!

❯ Собираем в MIDI-модуль


Во-первых, раз уж у нас теперь есть два голоса, почему бы не иметь возможность их переключать? Благо, это делается очень просто — так как линия Chip Select у флешки инвертированная (активна при лог. «0»), то достаточно лишь двух элементов ИЛИ и одного инвертера, чтобы получить схему, переключающую флешки по необходимости:

Сигнал ALT_ROM выбирает, используется основное или дополнительное ПЗУ, а остальные идут напрямую на шину самого модуля:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

После переключения ПЗУ просто дёргаем RESET у модуля и он после перезагрузки начнёт петь другим голосом.

Во-вторых повесим на GPIO модуля светодиоды, раз уж они были на родном шилде. Правда не то в даташите ошибка, не то я криво читал — выходы GPIO там Active Low, поэтому в моём включении они постоянно горят и периодически гаснут, а не наоборот.

Так делать не надо, делать надо не так!

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Добавляем операционник для того, чтоб привести звук хоть немного к линейному уровню, обыкновенную схему MIDI-входа как в прошлый раз (заменяя каждый логический буфер на пару инверторов, благо их у нас тут в достатке), и ардуину с экранчиком чтобы ловить SysEx'ы переключения ПЗУ и заодно отображать находящиеся в данный момент в ОЗУ фонемы.

Охапку дров, и плов готов!

Раскидываем на макетке, раунд 2:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Кажется, стоило наконец уже зарегистрироваться на JLC PCB...

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Без аудиофильских конденсаторов звучать будет точно так же, но радости никакой не принесёт

В прошлый раз в корпусе осталось много свободного места, поэтому на сей раз я взял корпус на размер меньше. Конечно же, теперь его не хватило и всё пришлось сильно утрамбовывать! Также в этот раз взял вместо клавишного выключателя тумблер, так как с клавишным ощутимо проседает напряжение в зависимости от везения.

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

До кучи добавился USB-хаб, чтобы можно было прошивать оба чипа без разборки устройства

И вуаля, готово!

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

❯ Программирование музыки


Теперь нужно написать хотя бы один MIDI-файл, чтобы на этом всём слушать. Из всего обширного списка дополнительных команд нас интересуют только несколько:

F0 43 79 09 10 07 00 aa bb cc F7: отключение звука для определённых каналов:

  • Биты в позициях aa, bb, cc отключают воспроизведение части каналов

  • Например, паттерн 7E 7F 7F оставит только первый канал, что нам и нужно для использования модуля чисто для синтеза голоса без остальных MIDI-инструментов.


F0 43 79 09 01 01 00 F7: перезагружает модуль (например, после переключения ПЗУ).
F0 43 79 09 10 04 nn F7: выставляет режим работы GPIO:

  • nn = 00: выключить

  • nn = 01: ритм-визуализатор (вокал, бочка, средний, тарелки)

  • nn = 02: реакция на note-on/note-off в 1-4 каналах

  • nn = 03: визуализатор первого канала по нотам

  • nn = 04: ручная установка в виде битовой маски командой F0 43 79 09 03 00 xx F7


F0 43 79 09 00 50 10 dd dd ... F7: установить список фонем (слова песни):

  • Где dd: байты null-терминированной CSV-строки с фонемами в ASCII

  • Фонемы можно найти в документации по системе команд YMW820 на 34 странице

  • Их можно загружать и через NRPN-сообщения, но пока что обойдёмся без этого


В остальном по эффектам и прочему модуль по большому счёту совместим с системой команд Yamaha XG.

У первого MIDI-канала нельзя сменить инструмент — именно там и находится вокал. После задания фонем через SysEx-команду, каждое Note On событие в первом канале сдвигает указатель в буфере фонем на следующую, а после последней — перематывает его на начало. Проще говоря, одна нота — один слог, и так в цикле, пока не загрузишь новую строку в память :-)

Воспользуемся этим, чтобы отлавливать команды установки фонем ардуиной и отображать скроллер со «словами» на дисплее. До кучи добавим и пару своих команд:

F0 7B 7F F7: «жёсткий» сброс чипа, на случай если тот зависнет :-)
F0 7B 00 0r F7: выбор ПЗУ голоса:

  • r=0 — основной, r=1 — вторичный


F0 7B 01 F7: установить текущий голос по умолчанию.
F0 7B 02 tt dd dd... 00 [xx xx xx ... 00] F7: показать сообщение на экране:

  • tt — время в секундах

  • dd dd… 00 — нуль-терминированная верхняя строка экрана

  • xx xx… 00 — опциональная нуль-терминированная нижняя строка экрана


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

Поэтому берём поллитру, вспоминаем MFC и патчим такой замечательный редактор, как Sekaiju, на отрисовку слогов под нотами:

Коробочка, которая поёт Музыка, Чип, Hatsune Miku, Изобретения, Познавательно, Timeweb, Технологии, Техника, Электроника, Видео, YouTube, Длиннопост

Если разваливается, то хотя бы сразу видно, где

Дорисовываем остаток совы… В смысле, дописываем аранжировку в Sekaiju, и потом доводим эффектами в Yamaha XGWorks. Попутно я докинул ещё пару партий в формате AYYMIDI (из прошлой статьи), написав их в ProTracker.

Помимо прочего, нашлось ещё несколько подводных камней:

Как и обещал производитель, поёт NSX-1 ну очень медленно. Даже в такой медленной песне есть места, где приходилось делать рокировочки таймингов десятки раз, чтобы получить более-менее вменяемый саунд. Какой-нибудь Intense Voice уж точно по битрейту не пролезет, разве что интерливом в несколько чипов через управляемый микшер :-)

По ощущениям, использование NSX-1 для всех инструментов ещё сильнее замедляет воспроизведение голоса, поэтому лучше использовать его чисто для вокала, даром что по качеству звучания его даже Yamaha MU50 уделывает с лихвой. Сделать это можно последовательностью команд:

  • F0 43 79 09 10 07 00 7E 7F 7F F7: NSX Channel Mute, оставляем только 1 канал.

  • GM Volume Ch1 = 127: выставляем громкость вокала на максимум.

  • XG Volume Ch1 = 0: отключаем первый канал на MU50. За счёт того, что NSX игнорирует многие XG команды на первом канале, его громкость останется на 127.


Из-за того, что Vendor ID у NSX и у серии MU совпадает, использовать тот же MU50 как RS232-MIDI интерфейс не получилось — слишком сильно задерживаются SysEx'ы задания фонем и слова начинают съезжать относительно нот.

Воспроизведение отдельных нот напоминает скорее чтение текста, чем пение, поэтому Note Off каждой ноты вокала лучше ставить чуть дальше, чем Note On следующей за ней:

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

  • Однако, эту особенность можно использовать для реализации удвоения (っ、напр. в демо-песне для этой статьи слово わらった [waratta] чаще всего записано путём двух «наложенных» нот [wa] [ra], затем Note Off второй, и только после этого «впритык» Note On для [ta].

  • Ни сам чип, ни генератор команд eVo Phonetic не поддерживают удвоение согласных, поэтому единственный другой способ — продублировать слог целиком, но обрезать ноту так, чтобы чип «не успел» дойти до гласной. Иногда это работает, но часто звучит странно и упирается в проблему скорости из п. 1.


Ударения как такового в японском языке нет, но лучше всё равно добавлять экспрессии и подрезать редуцирующиеся звуки через Velocity.

Для конвертации файлов под аппаратные плееры многие пользуются программной MIDI Formatter — оказалось, она перемешивает местами каналы, поэтому для композиций написанных под NSX-1 её использовать нельзя. Впрочем, конвертировать файлы в SMF0 можно через диалог «Сохранить как» в программе XGWorks.

❯ Демо!


Не буду погружать во все остальные тонкости написания MIDI-аранжировок, ведь статья получилась и так слишком длинной — лучше дам послушать итоговый результат :-)

Первым делом, конечно же, была запрограммирована классика жанра: malo — Hajimete no Oto (The First Sound)

❯ И второе!



Казалось бы, одним треком можно было и ограничиться — голос слышно, вроде как будто даже поёт, всё хорошо. Но хотелось всё-таки выжать из конструкции побольше музыкальности, а не просто мелодию в трёх дорожках… Поэтому статья была отложена больше чем на полгода, пока я допишу аранжировку той самой песни Shabon — как дань уважения всей этой культуре, на удивление тёплоламповому вопреки всем событиям 2020 году, да и в целом, потому что душа просила что-то поинтереснее :-)

Впрочем, чип оказался всё же слишком сложным, поэтому звучания прямо один к одному не вышло.

❯ А компот?


Увы, код в этот раз слишком простой и никаких особых лайфхаков не содержит, а схема паялась в основном по наитию из головы.

Если вдруг кто-то имеет такой чип и захочет повторить конструкцию — могу, конечно, причесать всё и расшарить, но пока что вот так ¯\_(ツ)_/¯

  • Прошивка — тут

  • Схема, почти соответствующая правде — тут

  • Миди-файлы для тестов и самих треков — тут

  • Больше интересных статей в нашем блоге на Хабре. Недорогие сервера для ваших проектов — здесь.

Показать полностью 21 4
5671

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!

Мотивация


Честно сказать, идея попытаться реализовать свою прошивку мне пришла ещё давно. Однако, дабы не завлекать опытного читателя кликбейтом, я сразу поясню, в чём заключается «прошивка с нуля»:

  1. Мы всё ещё используем Linux: в качестве ядра мы продолжаем использовать образ Linux, предоставленный нам производителем. Написание прошивки полностью с нуля заняло бы очень много времени (особенно без схемы на устройство). Однако, мы вообще не загружаем Android никаким образом.

  2. Мы не используем библиотеки AOSP: наша прошивка без необходимости не использует никаких библиотек уже имеющегося образа Android. Вся работа с железом происходит с помощью низкоуровневого API Linux. Это значит, что отрисовка графики, звук, управление ресурсами и питанием ложится полностью на нас.

  3. Прошивка может запускать только нативные программы: да, это тоже камень в сторону Android. Изначально, наша прошивка умеет запускать только нативные программы, написанные на C. Причём она экспортирует собственное C API — дабы приложения могли использовать всю мощь нашего смартфона в виде простого и понятного набора методов.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Проектов по выкидыванию Android из, собственно, Android-смартфонов как минимум несколько: UBPorts — бывший Ubuntu Touch, FireFox OS и его наследник Kai OS и конечно же, postmarketOS. Отчасти можно сюда отнести и Sailfish OS — но там образы имеются в основном на смартфоны от Sony. Все эти проекты объединяет сложность портирования и невозможность их завести на устройствах без исходного кода ядра. Даже если у вас есть исходный код ядра, но, например, устройство использует ядро 2.6 — навряд-ли вы сможете завести современный дистрибутив на нём.

Другой вопрос в том, что можно использовать полу-baremetal подход, когда от Linux берется практически минимальный функционал. Всё, что мы имеем — busybox, libc и низкоуровневый доступ к железу, благодаря API самого ядра. Как под это всё программировать — я рассказывал впрошлойстатье. Этот же подход мы будем использовать и сейчас — как иллюстрация реального применения подобного способа.

Итак, что наша прошивка должна уметь:

  • Отрисовывать произвольную графику: графическая подсистема нашей прошивки должна работать с фиксированным форматом пикселя, уметь загружать прозрачные и непрозрачные изображения, отрисовывать картинки с альфа-блендингом и т. п.

  • Уметь звонить и работать с модемом: общение с модемом происходит посредством AT-команд — общепринятого в индустрии стандарта. Однако в случае нашего устройства, есть м-а-а-а-ленький нюанс, о котором я расскажу позже.

  • Иметь механизм приложений: мы ведь не будем хардкодить все «экраны» в прошивке в виде кучи стейтов, верно? Для этого у нас должен быть простой и понятный механизм слинкованных с прошивкой приложений.

  • Обрабатывать ввод: обработка тачскрина и жестов — это задача подсистемы ввода.

  • Реализовывать анимированный UI: здесь всё очевидно, наша прошивка должна иметь готовые элементы пользовательского интерфейса для будущих приложений: кнопки, текстовые поля и т. д. О деталях реализации этой подсистемы, я расскажу ниже (а реализовал я её очень необычно для такой системы).


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

Аппаратная часть


В качестве смартфона для нашего проекта, я выбрал популярную бюджетную модель из 2012 года — Fly IQ245 Wizard. Это простенький китайский смартфон, который работал на базе популярного в прошлом 2G-чипсета: MediaTek MT6573, да и стоил около 2х тысяч рублей новым. Однако вот в чём суть: мне удалось заставить работать «медиатековский» модем и даже позвонить с него на свой основной телефон, но… только ввод и вывод данных из звукового тракта модема происходит через звуковую подсистему Android — к которой доступа у нас нет!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Именно поэтому, мы идём на очень хитрый и занимательный костыль: мы распаяем внешний модем сами! В качестве радиомодуля у нас выступит модуль SIM800 от компании SIMCOM. И даже он очень близок к нашему смартфону в аппаратном плане: ведь в основе этого модуля лежит популярнейший чипсет из кнопочников тех лет: MediaTek MT6261D. Преимущество SIM800 в его цене — он стоит пару сотен рублей, так что по карману выбор модема не влияет.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост


На весу паять крайне неудобно. В финальном варианте перепаяю нормально.

Но как его подключать? SIM800 общается с другими устройствами посредством протокола UART — универсальный асинхронный приемо-передатчик. И вот тут мы включаем смекалочку. Разбираем устройство и видим то, что я пытаюсь долгое время донести до моих читателей — аж два канала UART: один практически посередине, второй справа. Нам нужны пятачки TXD4 и RXD4:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Обычно на этот канал UART летят логи ядра, которые можно без проблем отключить минорной правкой U-Boot в HEX-редакторе. Впрочем, модем никак не реагирует на «мусор» из консоли и просто отвечает ошибками — хватит лишь очистить буфер сообщений для того, чтобы все работало нормально. Подпаиваемся к UART'у с помощью преобразователя — у меня оным выступает ESP32 с выпаянным чипом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост
Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост


Увидели логи? Замечательно, пора попытаться что-то отправить на ПК и с ПК. UART работают без тактовых сигналов и зависит исключительно от старт/стоп битов и бодрейта, который на устройствах MediaTek равен 921600. TXD4 и RXD4 обнаруживаются в системе на консоли/dev/ttyMT3. Пробуем что-то отправить: всё работает!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Вот теперь-то можно подключить наш внешний модем и попытаться пообщаться с ним, отправив тестовую командуAT. Модем отвечаетOK! На этот раз я работаю с смартфоном из режимаFactory mode— практически тоже самое, что и режим recovery, но позволяющий, например, получить доступ к камере устройства. Простая и понятная схема, поясняющая что и куда подключать:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



На этом модификация аппаратной частипоказакончена. Пора переходить к реализации софта! Я решил разделить материал на каждый модуль, который я реализовывал — дабы вам был понятен процесс разработки и отладки прошивки!

Заставляем смартфон запускать нашу прошивку


На этот раз я решил загружать смартфон из режима рекавери. Однако никто не мешает в будущем просто прошить раздел recovery вместо boot и получить прямую загрузку прямо в нашу прошивку. Время такой загрузки будет заниматься ~3-4 секунды с холодного старта. Очень даже ничего.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Я взял уже готовый образ TWRP для своего смартфона и пропатчил его, дабы сам рекавери не мешал своим интерфейсом. Для этого я распаковал образ recovery.img с помощью MtkImgTools и убрал в init.rc запуск службы /sbin/recovery. После этого, я залил прошивку обратно на устройство и получил подобную свободу действий — консоль через USB и чистый холст в виде смартфона! Старые смартфоны на чипсетах MediaTek шьются через USB только после замыкания тест-поинта — на моем аппарате его местонахождение очевидно. Замыкаем контакты между собой, подключаем смартфон без АКБ к ПК и ждем прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Теперь можно деплоить программы! Важный нюанс: в отличии от Makefile из прошлой статьи, для Android 2.3 параметр -fPIE нужно убрать — иначе динамический линкер (/sbin/linker) будет вылетать в segmentation fault.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

❯ Графическая подсистема


В комментариях под прошлой статьёй меня похвалили за то, что я делюсь достаточно профильными знаниями касательно эффективной отрисовки 2D-графики. Собственно, к реализации графической подсистемы я подошёл ответственно и постарался реализовать достаточно шустрый рендерер, к которому затем можно подключить другие модули.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



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

В случае с этим устройством (и большинством старых устройств), формат пикселя оказался RGB565 — т. е. 5 бит красный, 6 бит синий, 5 бит зеленый. Конвертация форматов пикселей всегда была занозой в заднице для программных рендереров, поскольку занимает дополнительное время, которое обратно зависимо от размера дисплея. Изначально я решил выделить буфер в том же формате, что и фреймбуфер, но затем решил сделать классический и самый портативный формат — RGB888 (24х-битный цвет), а при копировании кадра на экран, на лету делать преобразования цвета:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Очень важный нюанс, который я не упомянул в предыдущей статье: на устройствах прошлых лет для обновления фреймбуфера необходимо послать структуру var_screeninfo, где хотя бы что-то изменено, иначе никаких изменений мы не увидим. Этот же костыль используется в родном recovery для отрисовки, а судя по исходникам драйвера fb, «правильный» способ обновить экран — послать драйверу ioctl (который я пока что не пробовал).

После того, как я смог управлять дисплеем, я решил загрузить и отобразить какую-нибудь картинку. Пусть это будут обои для нашей прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Загрузчик TGA сильно не поменялся: я таскаю его в неизменном виде из проекта в проект. Он поддерживает любые форматы пикселя, кроме палитровых, но я его искусственн ограничиваю на RGB888 и RGBA8888 — для поддержки обычных картинок и картинок с альфа-каналом. После этого, я написал не очень шустрые, но достаточно универсальные методы для отрисовки картинок. Для больших участков кода, я буду использовать pastebin, поскольку на Пикабу до сих пор не добавили ни подсветки синтаксиса, не нормальный перенос форматирования табов :(

__inline void __ClipPrimitive(CFrameBuffer* fbDesc, int* dw, int* dh){ if - Pastebin.com

PutPixel желательно заинлайнить в будущем. В целом, сама отрисовка работает достаточно быстро, но поскольку рендеринг выполняется на ЦПУ — рано или поздно мы упремся в количество картинок на экране. Есть некоторые оптимизации: например, непрозрачные картинки можно просто коприовать сканлайнами прямо в задний буфер.

Сразу же реализовываем методы для рисования шрифтов: они у нас будут совсем простенькими — только моноширинные (все символы имеют одинаковую ширину) и растровыми (для каждого размера придется «запекать» несколько шрифтов). Для этого я написал маленькую программку, которая рисует виндовые шрифты прямо в наш самопальный формат:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Формат примитивнейший:

1 байт говорит нам о размере шрифта и далее идут 255 изображений символов. Да, это не очень эффективно т.к попадают пустые символы из ASCII-таблицы, но в будущем это можно поправить.

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

Теперь у нас есть отображение картинок и текста! Что с этим можно сделать?

❯ Обработка ввода

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост
Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Пока что здесь не хватает обработки «хардварных» кнопок — домой, меню, назад и т. п. Однако в будущем это всё можно реализовать!

❯ Анимация


Не забыл я и про анимации. Ну кому с такими ресурсами нужен неанимированный топорный интерфейс? Пусть лучше будет анимированный, пусть и примитивный!

Аниматор напоминает оный из ранних версий Android: он имеет фиксированный набор свойств, которые умеет интерполировать в промежутках определенного времени. Если простыми словами: то он оперирует линейными отрезками времени a и b, в промежутке которых мы имеем значение «прогресса» — которое даёт нам результат от 0.0f (начало анимации) до 1.0f (конец анимации). Пока время тикает до необходимого интервала (duration), аниматор интерполирует заранее назначенные ему поля до нужных значений.

Именно так и получается плавность! Похожим образом реализованы анимационные системы во многих играх и мобильных ОС, только там они гораздо более комплексны: есть сериализация/десериализация из файлов, поддержка кейфреймов (несколько последовательных состояний на одном промежутке времени), поддержка кастомных свойств и т. п.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост


❯ Модем


Как я уже говорил раннее, работа с модемом происходит посредством AT-команд. Лучше всего обрабатывать ввод-вывод модема из отдельного потока, поскольку он может отвечать довольно медленно и тормозить UI-поток основной программы, вызывая лаги. В SIM800 уже реализован весь GSM-стек, в том числе декодирование и вывод звука через встроенный усилитель с фильтром — остается только подключить динамики и микрофон от нашего телефона. Пока что я подсобрал аудиотракт на том, что было под рукой — микрофон от нерабочего смартфона и динамик от планшета, но для проверки этого хватает:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Важный нюанс: по умолчанию, tty-устройства в Linux работают по терминальному принципу — т. е. дробят транзакции по символу окончания строки (\n), имеют ограниченный буфер и т. д. Для нормальной работы в условиях модема — когда фактически длина ответа неизвестна, а в сам ответ могут «вклиниваться» Unsolicited-команды (своеобразные флаги о состоянии от модема, которые могут прийти в произвольное время — т. е. при входящем звонке, модем начнёт флудить RING в терминал), необходимо иметь возможность точно прочитать весь буфер до конца и парсить данные «по месту». Для этого используется raw-режим терминала:

tcgetattr(modemFd, &tio);

tio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);

tio.c_oflag &= ~(OPOST);

tio.c_cflag |= (CS8);

tio.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);

tcsetattr(modemFd, TCSAFLUSH, &tio);

После чего можно запросить состояние модема:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

И продолжить работу дальше. После этого, можно переходить к реализации самой прослойки между модемом и вашей программой:

void CModem::Dial(char* number){ if(strlen(number) > 32) return; cha - Pastebin.com

Пытаемся позвонить с помощью метода Dial и видим, что всё работает! Это очень круто! А теперь, конечно же, самое время переходить к реализации того, чего вы ждали — пользовательского интерфейса!

❯ Главный экран


К выбору концепции для интерфейса, я поступил максимально просто — «слизал» дизайн первых версий iOS. Как по мне, это одни из самых красивых версий iOS вообще — все эти приятные градиенты и переливания. Конечно, я не так крут, как инженеры Apple, да и мощного UI-фреймворка у меня пока что нет, поэтому я приступил к реализации с «минимальным» функционалом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Начал я с разделения главного экрана на модули и продумывания архитектуры основного «лаунчера». У нас есть статусбар, который рисуется поверх всех приложений, полка с приложениями — AppDrawer и сами экраны приложений, унаследованные от суперкласса CScreen.

class CScreen{protected: CAnimator* windowAnimator;public: CScreen(); - Pastebin.com

На данный момент, отрисовка достаточно примитивная: сначала рисуются фоновые обои, затем, если нет никаких активных экранов — AppDrawer и в самом конце рисуется статусбар и всевозможные оверлеи.

void CLauncher::DrawAppDrawer(){ for(int i = 0; i < sizeof(Apps) / sizeof(CA - Pastebin.com

Практически сразу я решил обкатать анимационную «систему» и добавить первые анимашки — выезжающий статусбар и анимация а-ля айфон:

animator = new CAnimator();

animator->SetTranslation(0, -imFiller->Height, 0, 0);

animator->Run();

Выглядит симпатичненько. Если я смогу поднять хардварный GLES, то это получится сделать в разы плавнее и шустрее — не хуже айфонов тех лет! Реализация самого статусбара примитивненькая, но вполне рабочая:

gLauncher->Graphics->DrawImage(imFiller, animator->X, animator->Y);

gLauncher->Graphics->DrawImage(imBattery[(int)gLauncher->PowerManager->GetBatteryLevel()], imFiller->Width - imBattery[0]->Width - 5, animator->Y + 5);

char timeFmt[64];

time_t _time = time(0);

tm* _localTime = localtime(&_time);

strftime((char*)&timeFmt,

sizeof(timeFmt), "%R", _localTime);

gLauncher->Graphics->DrawString(gLauncher->Font, (char*)&timeFmt, 0, 0);

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

Обратите внимание на удобство примененного подхода Immediate GUI. Нам понадобился новый элемент интерфейса, который описывает кнопку номеронабирателя? Мы просто реализовываем ещё один метод, который берет за основу стандартную кнопку и дорисовывает к ней текст. Всё крайне просто и понятно, хотя на данный момент слишком захардкожено. :)

❯ Звоним!


Пришло время совершить первый звонок с нашей по настоящему кастомной прошивки. Набираем номерок и…

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Да, всё работает и мы без проблем можем дозвониться :)

❯ Заключение


Конечно же, это далеко не весь функционал, необходимый любому современному смартфону. Здесь много чего еще нужно реализовать хотя бы для соответствия уровню бюджетных кнопочных телефонов: телефонную книгу, поддержку СМС/ММС, мультимедийный функционал с играми. Однако начало уже положено и самая необходимая часть модулей реализована. Этот проект очень занимательный для меня и я горд, что смог не на словах, а на деле показать вам, моим читателям, возможности моддинга совершенно NoName-устройств, без каких либо опознавательных знаков…

Моя задача заключается в том, чтобы показать вам возможности использования старых телефонов не только в потребительских, но и в гиковских DIY-сферах. Судите сами: огромный классный дисплей, емкостной тачскрин, готовый звук, камера — и всё это за каких-то пару сотен рублей. Главное показать людям, как всю эту мощь использовать в своих целях и делать совершенно новые устройства из существующих, а не выбрасывать их на помойку!
Сейчас смартфоны, подобные Fly из этого поста стоят копейки, а портировать на них прошивку можно без каких-либо трудностей. Я очень надеюсь, что после этого поста читатели попытаются сделать что-то своё из старых смартфонов, благо свои наработки я выкладываю на GitHub!

Показать полностью 23 2
Отличная работа, все прочитано!