Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Сыграйте в классический пасьянс и попробуйте разложить по порядку колоду из 52 карт, начиная с короля и заканчивая тузом. Игра имеет четыре варианта: с 1, 2, 3 и 4 мастями. Выиграйте как можно больше в каждом варианте и улучшите свои показатели.

Пасьянс Паук «Классический»

Карточные, Логическая, Мобильная

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Одноплатник

50 постов сначала свежее
2
Вопрос из ленты «Эксперты»
tired.cat
18 дней назад

Помощь с RockChip3576⁠⁠

Всем привет

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

Суть: Нужно принимать данные по SPI в режиме Slave. Пробовал на Raspberry Pi 4 — но, как оказалось, его кристалл аппаратно не поддерживает SPI Slave, ну как, поддержка есть, но кривая и нестабильная (скорость должна быть 921600, не вытягивает она).

Нашёл альтернативу — процессор RK3576 (например, в Banana Pi BPI-M5). В даташите вроде как есть нормальная поддержка Slave, но есть нюансы:

Железо — платы на RK3576 стоят 15-20к, и просто так купить для теста не вариант.

Софт — драйверы и настройка SPI Slave, конечно, потребуют возни, но это уже второстепенно.

Вопрос: Может, у кого-то уже есть такая плата и возможность проверить SPI Slave? Или был опыт работы с этим процессором?

Буду рад любым советам, мануалам или даже "да, это реально, но нужно сделать то-то".

[моё] Нужен совет Одноплатный компьютер Без рейтинга Banana Pi Spi Вопрос Спроси Пикабу Текст
0
372
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
Android
10 месяцев назад

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410⁠⁠

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Друзья! А вы когда нибудь задумывались о том, как делают смартфоны и планшеты? Какие инструменты для этого используются и откуда берутся материнские платы разных размеров и форм-факторов, но с таким похожим расположением элементов? Недавно мне удалось приобрести девкит aka evaluation board популярного в прошлом среднебюджетного чипсета Qualcomm Snapdragon 410 за 4.000 рублей и заценить его, что называется, в деле. Чем он отличается от одноплатного компьютера, из чего он состоит и что умеет — читайте в сегодняшней краткой, но достаточно подробной статье!

❯ Что такое девкит?


Если вы крутой и продвинутый инженер, то ответ на вопрос что такое evaluation board наверняка знаете и сами. Однако сегодняшний материал будет написан в эдаком научпоп-стиле «для всех», поэтому строго в комментах не судите — старался всё расписать максимально доступно для рядового читателя!

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост
  • Чипсет: сердце устройства, фактически процессор. Однако от процессоров общего назначения мобильные чипсеты отличаются тем, что в одном кристалле помимо ARM-ядер также находятся вспомогательные модули — контроллер памяти и eMMC/UFS, графический ускоритель, DSP-модуль для обработки изображения с камер, аудио-тракт, отвечающий за вывод звука через встроенный ЦАП или через протокол i2s на внешний кодек, а также модуль управления пинами общего назначения (GPIO) и общения с внешними устройствами с помощью шин SPI и I2C.

  • BT/Wi-Fi/GPS/FM радиотракт: обычно один комбо-чип, объединяющий в себе все указанные технологии беспроводной передачи данных. Модуль подключён к процессору напрямую, ранее — через SDIO, сейчас с помощью иных аппаратных шин. Вокруг чипа стоит обвязка — усилители сигнала и различные небольшие компоненты, необходимые для функционироавния тракта.

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

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

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Контроллер питания: этот чип выполняет сразу несколько важных ролей, связанных с питанием устройства — схема зарядки (чарджер) литий-ионных АКБ, многоканальный ШИМ-контроллер, способный выдавать несколько уровней напряжений (обычно называемых Power Rail'ами. Типичные напряжения в смартфоне/планшете — ~0.8V питание ядер процессора, 1.8V — питание логики, 3.3V — питание контроллера тачскрина/дисплея, 5V — напрямую никуда не поступает, бывает лишь на входе USB). К КП всегда идёт обвязка в виде мелких SMD-компонентов и ключей. В редких случаях (привет Unisoc) и его умудряются запихнуть в чипсет!

Звучит сложно? После практики ремонта и моддинга смартфонов всё значительно проще :)
Однако спроектировать такую большую систему «на коленке» сложно и для разработчиков смартфонов/планшетов существуют специальные платы, называемые evaluation board или понятным любому русскому человеку словом девкит.

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Dragonboard 800

На таких платах распаяно всё необходимое для работы устройства: процессор, память, радиотракт, джек для звука и микрофона, чарджер для АКБ, USB и конечно-же, JTAG для отладки с гребенкой, на которую выведены пины процессора. Кроме того, на девкиты часто устанавливаются уже готовые дисплеи и тачскрины, а процессор с ОЗУ и памятью нередко выносят в отдельные системы на модуле (SoM, о серийном планшете с съемным процессором читайте в моей отдельной статье). Делается это для возможности быстрой замены спаленного проца (ну, в конце-концов, не все инженеры могут сдуть и поставить процессор в BGA-корпусе) и в некоторой степени для упрощения дизайна самой платы (поскольку на SoM есть лишь самая необходимая обвязка). То есть сами девкиты — это формально две платы, где основная представляет из себя лишь набор интерфейсов и гребенки пинов с процессора!

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

На самом деле, evaluation kit'ы не шибко отличаются от современных одноплатников — единственное отличие в габаритах (одноплатники в разы меньше и подходят для готовых устройств), доступных шинах и GPIO: хотя и здесь есть интересные устройства типа Olimex A20 SoM, который выводит почти все пины с AllWinner A20. Так что можно смело сказать, что одноплатники отпочковались от девкитов и являются их куда более дешевыми, а главное поддерживаемыми коммьюнити аналогами.

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Недавно мне удалось купить девкит Snapdragon 410 под названием Variscite Dart SD410. Это, конечно, не самый крутой доступный девкит (у него нет GSM-части), но тем не менее это полноценная плата с собственным столом, дисплеем, тачскрином и различными образами ОС.
Нашёл я его на известной онлайн-барахолке, человек хотел сделать из него игровую консоль, но не сложилось. Так и выставил за 5.000 рублей. Немножко торга и вот — девкит уже у меня, а я как большой ценитель различных редких и интересных одноплатников и девкитов не могу нарадоваться :)

Давайте же распакуем его и познакомимся с ним поближе!

❯ Распаковка


Поставляется девкит в довольно большой коробочке с кратким мануалом, а также блоком питания. Для чуть более старых девкитов, например Idea6410 на базе Samsung S3C6410, характерны были DVD-диски в комплекте с лицензионной (?) Visual Studio 2005, Platform Builder с Windows CE и, конечно-же, BSP.

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Сама плата прикручена к специальному «столу», дабы всё нужное не висело «на соплях». Несмотря на относительно большие размеры, девкит вполне можно превратить и в готовое устрйоство, размерами близкими к 7-дюймовому планшету. Делаем свой Nintendo Switch на Снапе!? :)

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

С верхней стороны платы расположен коннектор камеры, гребенка для JTAG, I2C/SPI и куча GPIO. Также сверху есть батарейка для поддержания работы RTC и три кнопки, характерных для Android (назад, домой и включение), а также перемычки на переключение режима загрузки. SD410 умеет грузиться с MicroSD, eMMC и… USB! Вот уж неожиданно для устройства на «снапе»!

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

По центру расположена та самая съёмная система на модуле с процессором и ОЗУ на борту. В качестве чипсета выступает APQ8016E с eMMC производства Samsung, на плате SoM также можно увидеть радиотракт Wi-Fi/BT/GPS и с обратной стороны контроллер питания. Фактически — это минимально необходимый набор для работы планшета или смартфона, остальная плата — лишь разведенная периферия!

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост
Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Снизу платы разведен сетевой контроллер для LAN, а также USB-порты и 3.5мм разъемы Jack для подключения микрофона и динамиков. Есть также пятачки для ручной пайки динамиков и некоторых иных элементов.

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

С левой стороны платы расположен дисплей с емкостным тачскрином. Меня сразу удивила надпись LVDS, поскольку в мобильных устройствах гораздо более характерен MIPI DSI (схожий протокол), однако сняв и осмотрев дисплейный модуль я убедился, что Variscite изготовили переходную плату с TTL RGB на LVDS с помощью внешнего скалера. Зачем? Я и сам не знаю. Но с обратной стороны платы выведены пины DSI напрямую для подключения дисплея с мобильных гаджетов.

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Справа мы видим свитч питания и набор пользовательских светодиодов, которыми можно поморгать. Кнопочки, кстати, тоже отдельные GPIO экспортированные в систему и их можно использовать для своих нужд.

Давайте же запустим плату!

❯ Запускаем


Для функционирования платы необходимо как минимум две вещи. Первая — исходный код ядра. Так уж получилось, что далеко не все чипсеты поддерживают Mainline-ядро Linux и используют свои форки, пока ещё не объединённые с основной веткой. Вторая называется BSP (Board Support Package) — пакет для поддержки системой определенной платы. В случае Linux, в BSP содержится конфиг сборки ядра, device-tree или machine-файлы (если ядро не мейнлайн и без поддержки dtb) с описанием подключенных к плате устройств и конечно-же сами драйвера для дополнительной периферии (например контроллера дисплея).

Чтобы получить образы системы, нужно регистрироваться на сайте вендора и заходить на приватный FTP… но у меня такой возможности нет, поскольку девайс я покупал с рук. Но продавец выслал мне BSP с recovery-образами двух систем: Android и Yocto Linux.

Android уже был предустановлен на eMMC и здесь всё в целом стандартно: обычная система версии 7.1, AOSP, но с различным тестовым и презентационным софтом от Qualcomm. В целом, это уже фактически готовый самый обычный Android-планшет, только с внешней гребенкой и питающийся только от 5В:

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост
Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Гораздо более интересной выглядит установка Linux. Образы поставляются в виде прошивки для fastboot, которые шьются буквально одной кнопкой. Сначала нужно ввести плату в режим fastboot: делается это включением платы с зажатой кнопкой «назад». Затем распаковываем архив с Yocto Linux и выбираем нужный образ — есть десктопный, консольный и с оконным менеджером Weston. Я выбрал последний: распаковываем gz-архив и редактируем скрипт прошивки, дабы он брал образ rootfs с weston:

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

После этого запускаем процесс прошивки, ждём секунд 30:

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

И у нас есть полноценный Linux как на одноплатнике!

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост


❯ Заключение


Ну что друзья, в сегодняшнем материале мы с вами рассмотрели такую интересную систему на модуле. Надеюсь, вам было интересно! А с какими интересными девбордами и чипсетами работали вы?

Друзья, если у вас есть похожие девкиты или просто одноплатники на каких-то интересных чипсетах типа древних самсунгов (времен S5PC), OMAP'ов, i.MX и т. п. и вам они не особо нужны — я готов рассмотреть их покупке. Особенно интересно было бы поколупать такой легендарный процессор, как Intel PXA (или его продолжателя в лице Marvel PXA) — киты с ним в свое время было достать несложно. Пишите в личку в ТГ (@monobogdan) :)

Кстати, если у кого-то из читателей есть ненужные устройства (в том числе с косяками) или дешевые китайские подделки на айфоны/айпады/макбуки и другие брендовые девайсы будучи нерабочими, тормозящими, или окирпиченными и вам не хотелось бы выкидывать их на свалку, а наоборот, отдать их в хорошие руки и увидеть про них статью — пишите мне в Telegram или в комментах! Готов в том числе и купить их. Особенно ищу донора дисплея на китайскую реплику iPhone 11: мой ударник, контроллер дисплея калится и изображения нет :(

Как делают смартфоны: смотрим на редкий девкит процессора Qualcomm Snapdragon 410 Смартфон, Покупка, Android, Гаджеты, Одноплатный компьютер, Qualcomm, Snapdragon, Своими руками, Электроника, Мобильные телефоны, Длиннопост

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud чтобы не пропускать новые статьи каждую неделю!

Показать полностью 19
[моё] Смартфон Покупка Android Гаджеты Одноплатный компьютер Qualcomm Snapdragon Своими руками Электроника Мобильные телефоны Длиннопост
22
66
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
11 месяцев назад

Ищу девкит (плата для разработки, одноплатный компьютер)!⁠⁠

Друзья! Знаю, что среди читателей есть люди, которые работали над embedded-устройствами. Может у вас есть девкит Samsung S3C6410, когда либо списанный, на продажу?

Ищу девкит (плата для разработки, одноплатный компьютер)! Покупка, Android, Выбор, Гаджеты, Одноплатный компьютер, Embedded, Своими руками, Разработка, Электроника, Схемотехника, Sbc, Компьютерное железо

В целом, интересно было бы любой девкит покопать. Друзья, именно девкит, а не просто Raspberry Pi или Orange Pi. Впрочем, одноплатник на чем-то необычном типа Samsung Hummingbird или Tegra был бы интересен!

[моё] Покупка Android Выбор Гаджеты Одноплатный компьютер Embedded Своими руками Разработка Электроника Схемотехника Sbc Компьютерное железо
12
seminon600
seminon600
1 год назад
Еврейский мир
Серия Технологии, наука стартапы, изобретатели, хайтек

Британский производитель компьютеров использует израильские ускорители для нового дополнения к искусственному интеллекту⁠⁠

Raspberry Pi , ведущий производитель одноплатных компьютеров, выбрала израильского производителя микросхем Hailo в качестве поставщика ускорителей искусственного интеллекта для своего нового дополнения с поддержкой искусственного интеллекта.

Британский производитель компьютеров использует израильские ускорители для нового дополнения к искусственному интеллекту Израиль, Стартап, Микросхема, Производители, Великобритания, Одноплатный компьютер, Искусственный интеллект

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

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

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

«Мы очень рады поддержать Raspberry Pi и расширить возможности ее активного сообщества профессиональных инженеров и креативщиков с помощью передовых возможностей искусственного интеллекта», — сказал генеральный директор и соучредитель Hailo Орр Данон.

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

«Наше сотрудничество с Hailo позволяет промышленным клиентам Raspberry Pi интегрировать искусственный интеллект в высокопроизводительные решения, которые являются чрезвычайно экономичными и энергоэффективными. Для энтузиастов AI Kit предоставляет доступный способ улучшить свои творческие проекты с помощью искусственного интеллекта», — сказал генеральный директор Raspberry Pi Эбен Аптон.

«Сочетание высокой вычислительной мощности Hailo и низкого энергопотребления делает его невероятно привлекательным решением для искусственного интеллекта как для профессионалов, так и для энтузиастов».

Перевод с английского

ИСТОЧНИК

Показать полностью
Израиль Стартап Микросхема Производители Великобритания Одноплатный компьютер Искусственный интеллект
0
306
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
1 год назад

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART⁠⁠

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

В наше время, из-за санкций одноплатники стали стоить каких-то «конских» денег. Даже б/у RaspberryPi Zero стоит 2-3 тысячи рублей на барахолках, что, мягко скажем, не совсем лояльная цена для «самого дешевого одноплатного компьютера в мире». Конечно, Orange Pi Zero всё ещё можно купить в пределах 1.500-2.000 рублей, но как по мне и эта цена не слишком лояльна за те характеристики, который предлагает такой одноплатник. С другой стороны, Android-планшеты 10-летней давности продаются на барахолках по 100-300 рублей, что выглядит гораздо привлекательнее, причём на некоторые устройства практически без костылей можно установить полноценный дистрибутив Linux! Вероятно, многие читатели скажут мол «автор бомж» и будут правы: ведь в рамках этой статьи, я хочу рассказать о том, как использовать полурабочий древний планшет в качестве полноценного одноплатника путём подключения его к микроконтроллеру и выводу GPIO! Сегодня мы с вами: узнаем, как подключить микроконтроллер к шине UART в планшете и научимся работать с последовательной шиной в Android прямо из Java и нативных программ. Интересна моя концепция антикризисного одноплатника? Тогда добро пожаловать под кат!

❯ Зачем это нужно?


Пожалуй, нельзя сказать, что подобная концепция пристраивания старых планшетов — вопрос исключительно цены. 2-3 тысячи рублей не такие уж и большие деньги и при желании можно купить хотя-бы Б/У, но всё таки полноценный одноплатник с нормальной GPIO-гребенкой. Однако здесь стоит вопрос не столько дешевизны, сколько E-Waste: зачем выкидывать в помойку потенциально рабочие планшеты с живым процессором, если их можно пристроить куда-то ещё?

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

На самом деле, планшеты с ROOT-доступом уже из коробки могут выполнять весьма полезные задачи, как, например, хостинг http-сервера для домашней страницы, работать как панель с часиками и погодой, или, например, работать в качестве HMI-панели для оформления заказов в шаурмечной. Кроме того, многие планшеты на базе смартфонных чипсетов (MediaTek, Spreadtrum) имеют полноценный Bluetooth-модуль, что позволяет «подружить» планшет с микроконтроллером через радиоканал, что значительно расширяет возможный спектр применений.

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Преимуществ у такого подхода много: у «пожилого» планшета уже есть большой, достаточно качественный (хороший TN, либо даже IPS) дисплей с тачскрином, который поддерживает мультитач, GPU для вывода 3D-графики, 3.5мм для вывода звука + встроенные динамики, а также весьма неплохое, по сравнению с дешевыми одноплатниками, железо. Звучит весьма вкусно для цены в 300 рублей: собрать хоть немного похожую конфигурацию на базе RPi выйдет в 10-15 тысяч рублей (учитывая дороговизну MIPI-матриц с тачскринами + цену самой «малинки» и обвязки для аудиотракта).

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Но при всех перечисленных достоинствах, атрибутом любого полноценного одноплатника является наличие GPIO — и даже здесь мы сможем с вами выкрутится! Первый способ, о котором я чуть выше вскользь рассказал, позволяет реализовать общение с МК и «ногодрыг» через BT-радиоканал, но минусы такого подхода очевидны (МК с BT дороже, радиоканал потребляет дополнительную энергию, некоторые могут посчитать BT небезопасным). Однако есть и второй подход, который заключается в использовании диагностических пятачков UART на плате устройства для наших личных целей!

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

С таким подходом можно использовать как «голый» Linux, используя концепцию, которую я представил в этой статье, так и взаимодействовать из Java-приложений для Android (что даёт уже, как минимум, удобный GUI-фреймворк). Сегодняшняя статья будет «без воды», только чистая конкретика, поэтому давайте перейдем к реализации!

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост


❯ Подготовка


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

Сама по себе концепция очень простая: многие китайские производители планшетов и смартфонов не только разводят UART в виде отдельного пятачка на плате, но и подписывают его, задействуя UART-канал как вывод для логов ядра, а иногда и предоставляя доступ к рутовой консоли! В свою очередь, из юзерспейса мы можем получить доступ к UART с помощью устройства/dev/ttyS<x>на подавляющем числе чипсетов и/dev/ttyMT<x>на MediaTek. Однако учтите, что в некоторых случаях придется патчить загрузчик, дабы редиректнуть логи ядра в /dev/null.

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Однако наличие UART на плате — не всегда признак того, что он сконфигурирован в системе верно. Например, на смартфонах с чипсетами SC6820 нормально завести UART я так и не смог, а на некоторых устройствах на базе MT657x нужно патчить загрузчик, дабы он «увидел» нужный канал UART! В моём случае, героем статьи стал планшет Prestigio, у которого отказал тачскрин, но был доступен UART:

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Конкретно в моём случае, после установки последней официальной прошивки планшет перестал слать логи на UART и устройство /dev/ttyMT3 оказалось доступным для наших операций, в вашем же случае может потребоваться настройка devicetree, или просто патчинг загрузчика, дабы редиректнуть консоль на другой вывод UART. Кроме того, необходимо обязательно получить root-доступ хотя-бы к adb shell, поскольку доступ к /dev/tty устройствам возможен только от имени суперпользователя. Как же проверить UART на возможность чтения/записи? Сначала нам необходимо взять ESP32 или любой UART-USB преобразователь, припаять сигнальные линии RX/TX и использовать любую программу для работы с последовательным портом, например Putty. Заходим в adb shell, и пишем что-нибудь в консоль:

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Вуаля! Всё работает :)

Работает? Замечательно, значит мы сможем использовать планшет вместе с микроконтроллером! Переходим к практической реализации нашего приложения!

❯ Используем из Java


Я специально решил выделить для Java-подхода отдельный раздел, поскольку просто взять и открыть /dev/ttyMT3 с помощью FileInputStream не выйдет. Дело в том, что даже несмотря на наличие root-доступа, по факту ни одно Android-приложение его не имеет (за исключением подписанных системных в папке /system/app/) и для всех операций, требующих повышенных привилегий, либо распаковывают и запускают внешнюю нативную программу из под суперпользователя, либо с помощью специального костыля с запуском sh-программ читают/пишут нужные блочные устройства сами. Связано это с тем, что все Android-приложения работают в хост-процессе app_process, который форкается (отпочковывается) от «главного» процесса, который запущен из под «простого» пользователя, который не находится в группе system.

Здесь концепция также очень простая: su имеет аргумент -c, который позволяет запустить команду от имени root-пользователя и возвращает объект процесса, дабы мы потом могли перехватить stdout:

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Таким образом, для чтения текстовых данных из UART'а нам достаточно лишь периодически «слушать» stdout команды cat и обрабатывать данные:

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART Программирование, Гаджеты, Смартфон, Linux, Программа, Android, Java, Планшет, Своими руками, Моддинг, Девайс, Ништяки, Одноплатный компьютер, Длиннопост

Костыль, но со вкусом :) Если вас не устраивает такой подход или ваше приложение значительно более комплексное, вы можете использовать UART и из под нативных программ.

❯ Используем из C


Работа с последовательными портами в Linux не отличается от работы с любыми другими файлами и устройствами: вызовов open, read, write и close обычно хватает и лишь иногда к ним в довесок нужен ioctl.

int fd = open("/dev/ttyMT3", O_RDWR);
int result = write(fd, command, strlen(command));

Для работы с терминалом необходимо использовать модуль termio который предоставляет все необходимые структуры для настройки режима работы терминала, в т.ч и бодрейт. Дело в том, что изначально последовательное устройство настроено на режим работы в качестве терминала, т.е драйвер отдаст данные только после того, как устройство на UART пошлёт \n, или превысит размер внутреннего буфера для сообщения. Если вам нужно работать с бинарными данными и получать их «на лету» — необходимо настроить последовательный порт в «binary» режим:

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);

Если же вам достаточно текстового терминального режима, то можно продолжить как есть и использовать fgets, fscanf и прочие удобные функции из libc! О том, как собрать нативную программу для смартфона и как вообще выбросить Android из него, читайте в моей отдельной статье.

❯ Заключение


Вот таким образом можно использовать проводную шину в планшете для собственных нужд! Как видите, совершенно ничего сложного и используя эти наработки, я реализовал уже не один проект! Надеюсь, материал вам был интересен и полезен :) Пишите своё мнение, можно ли использовать дешевые планшеты по 300 рублей в качестве одноплатников?

Статья была подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю! Ну а больше подробностей о будущем контенте, как обычно, в первом комменте! Также у меня есть свой Telegram-канал, куда я выкладываю свои мысли, советы по ремонту и моддингу различных гаджетов, а также вовремя публикую ссылки на новые статьи!

Показать полностью 10
[моё] Программирование Гаджеты Смартфон Linux Программа Android Java Планшет Своими руками Моддинг Девайс Ништяки Одноплатный компьютер Длиннопост
36
472
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей⁠⁠

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост



Китайские производители не перестают удивлять: многие видят явные перспективы рынка одноплатных компьютеров и стараются представить целую линейку девайсов на самых разных чипсетах, а разработчики стараются использовать уже привычное и поддерживаемое долгие годы железо. К ним относятся решения на чипсетах AllWinner, RockChip, Tegra. Другие же стараются взять малоизвестный, но дешевый чип для иного круга применений, развести на нем компактную плату и продавать по цене пачки сухарей, подобные решения появляются регулярно. Один из таких одноплатников я недавно купил на AliExpress — некий DongShan Pi Pico W, на базе экзотического чипсета SigmaStar SSD210, всего за 600 рублей. И тут действительно есть на что посмотреть: два ядра Cortex-A7, контроллер TTL матриц, 2D GPU, Wi-Fi, 64Мб ОЗУ и Embedded Linux на борту. Более того, девайс поставляется в виде System on Module с переходной Evaluation-платой, что позволяет использовать это устройство в составе других гаджетов! Что это за красавец и на что он способен? Читайте в статье!!

❯ Что это за девайс?


Думаю, большинство моих читателей когда-либо слышали об одноплатных компьютерах. Это компактные и достаточно мощные устройства, которые можно использовать как в качестве компактных серверов или даже десктопных машин, так и собрать своё устройство на базе готового одноплатного компьютера. Одноплатники используется во многих сферах: вендинговые автоматы, умные экраны, самопальные игровые консоли и смартфоны, DIY-ноутбуки!

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост



Однако чаще всего можно увидеть обзоры и проекты на базе довольно известных устройств: Raspberry Pi, Orange Pi, Olimex. Эти платы, скажем так, достаточно дорогие: и если Orange Pi One/Zero ещё можно ухватить за 1.000 рублей на вторичке (один из таких я купил еще летом. Узнав о моем блоге, продавец стал моим читателем и вместо одного OPi прислал мне целых два — один в подарок!), а за RPi Zero придется выложить как минимум 2.000 рублей. Однако есть ещё один сегмент одноплатных компьютеров: ультра-дешевые, разработанные на базе чипов для конкретного применения. Один из самых известных представителей — MangoPi/CherryPi R3, который работает на базе AllWinner F1C200s — чипа для… электронных книг!

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост



Информации по дешевым, почти неизвестным одноплатникам довольно мало. У них не очень хорошая поддержка (кроме AllWinner, там почти все чипсеты есть в mainline-ветке Linux), в них могут обнаружится аппаратные баги, да и многие люди вообще не замарачиваются с ними, предпочитая переплатить, но купить что-то более стабильное. Но не я! Я просто обожаю различные ультрадешевые девайсики, поэтому недавно по наводке моего активного читателя NutsUnderline, я заказал интереснейший девайс — DongShan Pi Pico-W. Устройство обошлось мне всего в 600 рублей, но в первую очередь, меня привлек форм-фактор устройства и его чипсет. Некий SigmaStar SSD210!

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост




Я заказал сразу два устройства: первую партию очень быстро разобрали, поэтому я взял «с запасом». Сейчас конкретно этот одноплатник пока-что не доступен в магазине продавца, однако у него же продаются другие устройства на базе SSD210. Можете найти их по ключевому слову: «SSD210» (прямые линки публиковать не буду, дабы не сочли за рекламу). Через месяц оба красавца пришли ко мне и я принялся их изучать.

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост



Какое же было моё удивление, когда я обнаружил, что это по сути System on Module, который вручную надо припаять к Evaluation-плате! Вкратце это значит, что на базе таких SoM вы можете развести плату, протравить её, а затем припаять одноплатник поверх нее и сделать своё полноценное устройство, «без соплей»! Производителю плюсик за такую гибкость — я не очень люблю одноплатники с штырьковыми гребенками. Хотя, конечно, это очень сильно помогает при разработке макета устройства.

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

❯ Характеристики


Но чем он так меня привлек, помимо SoM направленности? Своим крутым чипсетом! Давайте ознакомимся с его характеристиками поближе:

  • Процессор: SigmaStar SSD210. 2 ядра Cortex-A7, работающие на частоте до 1ГГц. 16Кб кэш инструкций и 16Кб кэш данных, плюс 128Кб L2-кэша. В процессоре есть FPU и поддержка SIMD-инструкций Neon (альтернатива SSE в x86). Нехило, правда?

  • Поддержка дисплеев: У чипсета есть выделенный модуль для работы с внешними матрицами. Поддерживаются TTL дисплеи (до 1024x768), SPI-матрицы с клоком до 54МГц (480x320), а также прямой RGB аналоговый RGB сигнал (этот интерфейс можно использовать для подключения к ТВ с тюльпанами или аналоговым матрицам). Про типы дисплеев, вы можете прочитать в моей статье.

  • 2D GPU: Поддержка отрисовки линий, прямоугольников, градиентной заливки, BitBLT, клиппинг, дизеринг, автоматическая конвертация формата пикселя (с RGB888 в RGB565). Это серьёзно снимает нагрузку с ЦПУ при рисовании графики, однако поддерживается ли он в Linux — вопрос другой.

  • ОЗУ: 64Мб DDR2 памяти «бутербродом» прямо с чипсетом, плюс поддержка до 512Мб DDR2 внешней памяти, до 1333Мб/с.

  • Звук: Один моно-выход DAC, два выходных канала I2S, вход микрофона. Входные каналы поддерживают частоту дискретизации до 96КГц. Можно организовать вывод звука лишь подключив внешний усилитель. Внешний ЦАП не обязателен, если вам не нужен стерео-звук.

  • Память: Контроллер NOR/NAND SPI-памяти, до двух параллельно подключенных чипов, плюс поддержка SDIO. BootROM поддерживают загрузку с MicroSD карт.

  • Сеть: Ethernet, на DongShan Pi есть Wi-Fi.

  • USB: Как хост, так и ведомое устройство

  • Периферия: 4 канала ШИМ, GPIO, 4 UART, 2 канала SPI, 2 канала I2C

  • Камера: До двух камер по интерфейсу MIPI CSI

  • Безопасность: Есть аппаратное шифрование.

  • Питание: 0.9В ядро, 1.8В ОЗУ, 3.3В I/O


Очень даже бодро, согласитесь? Вообще, производитель подразумевает SSD210 как чипсет для HMI-дисплеев — т. е. умные дисплеи, которые могут, например, служить стендами в музеях, или служить для заказа билетов в кино. Есть внешние HMI-дисплеи, которыми можно управлять используя другие МК: просто посылая команды и реагируя на нажатия кнопок. Тут мы и видим, как китайский производитель решил применить этот чипсет для другой сферы: одноплатный компьютер для DIY!

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

На SSD210 есть порт Linux, предлагается использовать Embedded Linux в качестве основной системы. Никаких дистрибутивов по типу Ubuntu для устройства нет — предполагается, что вы сами реализуете весь необходимый для ваших программ функционал (отрисовку графики, обработку ввода, звук и т. п.). Есть Build root и исходный код ядра, а также U-Boot.

Помимо этого, вендор предлагает целое SDK для разработки уже готовых устройств на этом чипсете. Но есть один нюанс: документации практически нет :( Такие пакеты предлагаются крупным коммерческим производителям устройств, поэтому и основная поддержка есть только для них. Есть некоторые сэмплы, как, например, использовать графические дисплеи (показан пример с TTL-матрицей 1024x600), но совершенно не ясно как использовать SPI-матрицы, поскольку они требуют отдельной инициализации.

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

❯ Сборка и запуск


Для более удобного процесса разработки нашего устройства, лучше всего заказывать сразу две платы: одну припаять к переходной плате с штырями, а другую использовать на нашем устройстве. Как я уже говорил ранее, одноплатник предлагается в виде System on Module, которые можно при желании распаять на переходной плате:

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Честно сказать, я очень люблю такой тип монтажа и топлю за то, чтобы другие одноплатники не форсировали использование штырьков, а позволяли припаять себя «бутербродом» к другой плате. Обычно SoM дороже чем простые одноплатники, один из примеров — Olimex A20 SoM. Припаиваем основную плату к eval-плате. Обратите внимание, что припой должен находится «скосом» с внешней стороны пинов!

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост
DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

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

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Теперь подключаем питание. На плате уже разведены Step-down преобразователи с 5В на 3.3В (основная логика), 1.8В (DDR2), и 0.9В/1.0В (ядро), нам достаточно подключить лишь 5В, либо запитать плату от 3.7В аккумулятора. Устройство стабильно работает и от 0.5А порта ПК (если не юзать Wi-Fi).

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Для работы с одноплатником, обязательно нужен COM-преобразователь. Открываем Putty, задаем COM-порт, выставляем бодрейт 115200 и отключаем контроль четности. После подачи питания на устройство, в консоли побегут логи, U-Boot начнет загружать систему… однако, есть один важный нюанс…

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Все платы прошиваются на заводе с помощью фирменного флэшера SSD210. Но фирменный флэшер, по каким-то причинам, на некоторых платах не может сохранить U-Boot Environment (переменные окружения, которые в том числе определяют таблицу разделов и коммандлайн ядра).

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Поэтому если ваша плата повисла на CRC Error, нужно ввести следующие команды:

setenv mtdids nand0=nand0

setenv mtdparts ' mtdparts=nand0:0x140000(CIS),0x1a0000(BOOT0),0x1a0000(BOOT1),0x40000(ENV),0x40000(ENV1),0x20000(KEY_CUST),0x500000(KERNEL),0x500000(RECOVERY),0x600000(rootfs),0xa0000(MISC),-(UBI)

setenv bootargs ubi.mtd=UBI,0x800 root=/dev/mtdblock8 rootfstype=squashfs ro init=/linuxrc LX_MEM=0x3FE0000 mma_heap=mma_heap_name0,miu=0,sz=0x1E00000 cma=2M highres=off mmap_reserved=fb,miu=0,sz=0x300000,max_start_off=0x3C00000,max_end_off=0x3F00000 ${mtdparts}

setenv bootcmd ' nand read.e 0x22000000 KERNEL ${kernel_file_size}; dcache on ; bootlogo 0 0 0 0; bootm 0x22000000;nand read.e 0x22000000 RECOVERY ${recovery_file_size}; dcache on ; bootm 0x22000000

setenv autoestart 0

setenv sstar_bbm off

setenv ipl_version "##p3##gdf99011IPL_##########

setenv ipl_version "DUALENV=1 SILENT_CONSOLE=1 CFG_SDMMC_DISABLE=n ALK=1 SPINAND=1 CHIP=pioneer3""

saveenv

После этого отправляем плату в ресет и система загружается как ни в чем не бывало!

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Поскольку на плате не разведен разъем USB, для прошивки нужно распустить нерабочий кабель для зарядки смартфона, либо купить внешний USB-разъем на плате. VBUS кидаем на вход питания, белый провод на DM-, зелёный на DM+. Не забывайте провести общую землю между UART-преобразователем и основным питанием платы, дабы не потерять логи.

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост
DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост
DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Замыкаем два пина в центре платы пинцетом и жмем RESET. Плата определится как MSDC-флэшка (не удивляйтесь). Прошивальщик глючный и бывает не с первого раза может прошить устройство. Если девайс после прошивки не включается — введите команды в консоль U-Boot выше.

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Теперь переходим к самой системе.

❯ Система


Девайс работает на базе ядра Linux 4.9. Тем не менее, производителем заявлена поддержка Mainline-ядра, что даёт надежду на поддержку устройства в будущем.

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

«Из коробки» на устройстве доступен лишь i2cdev, благодаря которому можно свободно общаться с i2c-устройствами из юзерспейса. Хотите получить доступ к SPI? Готовьтесь качать билдрут, вручную включать spidev в конфиге и редактировать DeviceTree, дабы spidev мог получить доступ к физическим spi-устройствам ядра.

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Кроме того, конечно же, есть доступ к GPIO из sysfs.

На самой плате, Wi-Fi реализован в виде внешнего USB-хаба + Wi-Fi адаптера. Чипсет также поддерживает Ethernet.

Для разработки устройств, производитель предлагает отдельное SDK для общения с периферией устройства из юзерспейса. С помощью этого SDK, можно получить доступ к камере, аппаратному декодеру, звуку и настроить матрицу. Судя по всему, общение происходит с помощью ioctl к необходимым устройствам. Это сделано для того, чтобы разработчики не копались в низкоуровневых драйверах, ведь например, ALSA, на устройстве нет совсем.

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Если включить нужные нам модули в юзерспейс (spidev, i2cdev, gpio), то можно будет проектировать устройства более простым путем. Например, подключить дисплейчик и прямо из юзерспейса выводить на него графическую информацию. Это открывает перспективы для самых разных применений: опрос датчиков и хранение информации в внутренней памяти, умные сигнализации, самодельные часы, DIY игровые консоли, самодельные телефоны и т. п. Применений просто куча!

❯ Заключение


Вот мы и посмотрели с вами на дешевые одноплатники, где используются чипсеты, которые разработаны для использования в совершенно других сферах. Девайсы весьма своеобразные и для полноценной работы с ними нужно обладать навыками прожженного линуксоида и иметь навыки системного программирования. Но, чего уж точно нельзя отрицать, так это перспектив подобных девайсов для своих проектов. Да, под них нет готовых гайдов, как для Raspberry Pi или Orange Pi, информации по ним минимум… но если захочется — то всегда можно «сварганить» самопальное устройство за минимальный прайс!

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

DongShan Pi Pico-W: крошечный одноплатник с современным чипсетом за 600 рублей Гаджеты, Покупка, Девайс, Одноплатный компьютер, Компьютер, Минипк, Raspberry pi, Orange pi, Дешево, Своими руками, Embedded, Электронные сигареты, Разработка, Linux, Nix, Длиннопост

Чуть позже выйдет материал про Repka Pi. Их одноплатник получился не менее интересным и как раз таки метит в нишу одноплатников с хорошей поддержкой, где есть уже готовые гайды, информация и даже сами разработчики могут помочь с решением некоторых проблем. Без косяков не обошлось: есть пару аппаратных проблем, о которых я расскажу открыто, но в целом девайс выглядит интересным!

Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud , дабы не пропускать свежие статьи каждую неделю!

Показать полностью 21
[моё] Гаджеты Покупка Девайс Одноплатный компьютер Компьютер Минипк Raspberry pi Orange pi Дешево Своими руками Embedded Электронные сигареты Разработка Linux Nix Длиннопост
49
379
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия⁠⁠

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Мне всегда очень нравились компактные полноценные компьютеры, которые можно куда-нибудь применить и они не будут потреблять слишком много энергии. Время от времени я мониторю различные онлайн-барахолки на манер интересных предложений — с годами, рыночная цена на различные «офисные» девайсы только падает. Недавно я увидел, что цены на неттопы на базе Intel Atom пробили дно и начали стоить какие-то сущие копейки: 400 рублей, 800 рублей, 1300 рублей — и это всё за полноценные, полностью рабочие компьютеры на одно-двух ядерных Intel Atom и с 2-4гб ОЗУ! Но главный интерес заключается не столько в самом атоме, сколько в их «мультимедийной» направленности: многие неттопы тех лет построены на базе чипсета NVidia ION, который был эдакой попыткой сделать нетбуки с более широкими мультимедийными возможностями — в том числе, с довольно неплохим интегрированным GPU GeForce 9400. На что способна компактный «мультимедийный» ПК за 1.000 рублей? Давайте смотреть!

❯ Немного предыстории



Компактные компьютеры появились отнюдь не с появлением первых одноплатников и различных тв-боксов/тв-стиков. Спрос на компактные и недорогие машинки, которые можно использовать для офисных задач, удаленной работы и серфинга в интернете, был практически всегда и их история тянется ещё с прошлого века. Ещё 20-25 лет назад можно было купить полноценный минипк на базе настоящего x86 процессора — Cyrix MediaGX (aka AMD Geode), хотя его производительность была достаточно невысокой. Чаще всего, системы на базе этого процессора работали на Win 3.1/Win95, а в нулевых — на базе Windows CE.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Однако, минипк до конца нулевых в основном оставались исключительно «рабочими» машинами: чаще всего, это были либо тонкие клиенты, либо POS-терминалы а-ля кассы, либо промышленные материнские платы с собственной гребенкой GPIO для управления различными станками. Всё изменилось с выходом Intel Atom в 2008 году, появлением первых APU от AMD и развитием ARM-чипсетов и Linux на них. Техпроцесс уже позволял поместить как само вычислительной ядро/ядра, так и всю необходимую логику под один кристалл — что и дало жизнь двум новым классам устройств: неттопы и нетбуки (правда, тут с оговоркой, поскольку OLPC и EEEPC 701 — это тоже нетбуки, вышедшие аж за год до появления первого Atom, а ещё раньше были UMPC в виде промышленных планшетов на Celeron'ах).

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



В наше время, концепцию неттопов переняли множество самых разных устройств: ТВ-боксы/стики, NUC'и, Compute-стики и в очень большой степени — одноплатные компьютеры, хотя действительно шустрые минипк могут ощутимо ударить по карману. Но, у неттопов-старичков есть одно очень большое преимущество, которое буквально даёт им вторую жизнь в 2023 году: это крайне низкая цена на различных барахолках. Недавно я листал объявления и наткнулся на два интереснейших варианта за реальные копейки:

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Acer Aspire Revo — очень симпатичный и компактный девайс на базе Intel Atom 230 и с чипсетом Nvidia ION. Купил я его за 900 рублей (9$ на момент написания статьи).

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



И неттоп ICL, который по старинке называют тонким клиентом. На самом деле, это Pegatron Amis L6 — OEM-устройство, на которое просто перекинули свои шилдики. Этот девайс уже немного новее и работает на базе Atom D425 и встроенной графики Intel (в некоторых вариациях — двухядерный Atom D525 и ION 2). Цена этого девайса, внимание, всего450рублей (4.5$ на момент написания статьи) — правда у него не было HDD, но заявлен он был как рабочий!

Конечно не стоит забывать и о Mac Mini, который появился ещё в 2005 году: инженеры Apple умудрились уместить в небольшой корпус довольно мощный по тем временам PowerPC G4, а через два года — уже полноценный Core 2 Duo и это учитывая крайне миниатюрный корпус девайса. Но всё же мак был явно не таким дешевым и массовым устройством, как неттопы на базе Atom, хотя и сейчас их можно найти на барахолках по весьма низким ценам: в среднем 2-3 тысячи рублей за модели 2007 и 2008 года, однако учтите что обязательно придётся апгрейдить ОЗУ (ноутбучная DDR2 стоит копейки).

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Предлагаю посмотреть на купленных мной красавцев поближе!

❯ Характеристики



Несмотря на то, что оба девайса работают на Intel Atom, построены они на совершенно разных платформах. Aspire Revo работает на базе самых первых Intel Atom, которые имели только одно ядро и были не особо шустрыми в повседневных задачах, да и с мультимедией у них были проблемы — ведь GMA3150 особо не переваривал FHD видео. Неттоп от Pegatron построен на базе более свежей платформы Pine Trail, в которой некоторые процессоры имели 2 ядра и 2 потока, что давало неплохой буст производительности. Однако а моем экземпляре, место под ION2 и VRAM на плате было пустым — графику, к сожалению, не распаяли.

Давайте посмотрим на характеристики обоих девайсов поближе:

Aspire Revo R3600:

  • Процессор: Intel Atom 230 на частоте 1.6Ггц, L2 кэшем 512Кб и тепловыделением 4Вт.

  • GPU: GeForce 9400 из NVidia ION. Поддерживается декодирование 1080p видео, DX11, GL 3.0, есть HDMI и VGA одновременно.

  • ОЗУ: 4 гигабайта DDR2 памяти.

  • HDD: 250гб 2.5" SATA + порт eSATA (кто-то помнит такой?).

  • Питание: 65вт, обычный Acer/Asus штекер, практически любой 12в ноутбучный БП должен подойти.



Pegatron Amis D425:

  • Процессор: Intel Atom D425 на частоте 1.8Ггц, L2 кэшем 512Кб и тепловыделением 8Вт.

  • GPU: GMA3150 — GL1.4, DX9 — да и то не полностью. Из видеовыходов только VGA и LVDS (который не задействован т.к у нас неттоп, а не нетбук), HDMI нет.

  • ОЗУ: 2гб одной планкой DDR3. При желании можно и расширить.

  • HDD: 250Гб 2.5" SATA. Порта eSATA нас лишили взамен более компактным размерам устройства.



Самое время обслужить оба девайса. Иногда за 1.000-1.500 рублей можно встретить абсолютно новые неттопы, но в моём случае, девайсы были сильно Б/У. И если Revo ещё выглядел вполне презентабельно, за исключением мелких царапок и даже ни разу не разбирался (пломба была на месте), то Pegatron пришлось тяжко — кто-то явно вскрывал его отверткой. Сами клипсы здесь действительно очень жесткие и снимать их без съемника проблематично, но не отверткой корпус гнуть же! Обратите внимание на «ушко» для открытия корпуса: от него ведите в сторону передних USB-портов и аккуратно расщелкивайте корпус:

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Как и было заявлено, в устройстве не оказалось HDD. В остальном, девайс был в хорошем состоянии и его явно когда-то обслуживали.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост


На фото HDD уже стоит.

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

Обратите внимание: на плате есть места, где должен быть распаян ION и видеопамять для него. Поскольку ION был построен на базе десктопного GPU, он требовал отдельную видеопамять, несмотря на возможность резервировать часть ОЗУ под свои нужды.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Кроме минорной чистки кулера и радиатора, девайс требовал HDD, благо читатели мне заслали несколько 2.5" HDD и SSD, за что им большое спасибо! Собираем всё обратно и начинаем перебирать второй девайс, пока на первый устанавливается система.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Aspire Revo — вообще верх продуманности как по мне. Крышку держит всего один винт, который закрыт гарантийной пломбой. Срываем пломбу, откручиваем винт и снимаем крышку с клипс — и все! Очень удобно.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



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

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



В остальном, обслуживать его тоже очень легко и просто — нам доступно два слота для мобильной DDR2-памяти, так что если у вас тоже будет Revo, но чуть более слабый — не беда, можно проапгрейдить, благо DDR2 стоит копейки.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



У моего девайса HDD был жив, однако если вам попадётся экземпляр с мертвым «винтом», то для замены придётся разобрать устройство полностью. Достаточно открутить винты, крепящие плату к корпусу, осторожно вытащить плату с кнопкой включения, eSATA и USB и аккуратно вытащить плату. HDD крепят 4 винта с обратной стороны.

После развертывания системе, предлагаю перейти к практическим тестам!
На Pegatron я накатил Windows XP, на Revo Windows 7 — дабы понимать разницу в производительности.

❯ Синтетика и бенчмарки



В синтетике всё с виду неплохо: производительность ЦПУ обеих девайсов находится примерно на одном уровне: между Pentium 4 Extreme Edition (топовые процессоры 2003 года). Оба процессора имеют одно ядро и два потока.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Тест CPU Queen. В синтетике, процессор весьма близок к сборке из двух Pentium D, пусть и не самых топовых. Revo, конечно же, немного шустрее:

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Обе машинки тихие и не сказать, что горячие. Температура Pegatron при пиковой нагрузке не превышала 40-45 градусов, в то время как Revo грелся до 65 градусов в пике. Даже на нетбуках тех лет, результат обычно хуже: некоторые атомы были достаточно горячими.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост
Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Касательно графики, у Pegatron используется известный многим чипсетный GPU GMA 3150. Это очень слабенький графический ускоритель, у которого большие проблемы с драйверами на OGL — поддерживается DX9.0c (с SM 3.0, но есть болячки совместимости) и OpenGL 1.4 (т.е без шейдеров вообще). Кроме этого, у него полностью программный вершинный конвейер, из-за чего на и без того слабый процессор ложится дополнительная нагрузка. Начиная с 2000 года, как раз с выходом GeForce 2, большинство видеочипов уже обрабатывали всю геометрию на GPU (трансформация из World space в Clip space), а S3 (VIA), SIS и Intel продолжали просчитывать геометрию на процессоре, из-за чего производительность игры падала обратно пропорционально количеству треугольников на экране. Даже на PS2 уже сделали некое подобие вершинных шейдеров — программируемый VPU, где трансформировалась вся геометрия, но производители «встроек» упорно не хотели следовать тендециям. Ситуация изменилась ближе к выходу Intel HD Graphics — там с этим было всё хорошо :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Помимо ускорения 3D-графики, он умеет декодировать h263 видео с разрешением до 720p, но для потокового видео из браузера, его конечно же не хватит. Хотя, если предварительно качать видео — то вполне потянет.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Другое дело — Revo с его GeForce 9400. Вообще, выходило целых две версии платформы ION: первая, как уже было сказано выше, использовала GF 9400, а вторая использовала GF 305 (это номер модели, а не чипа). Да, даже слабее «затычки» GT 310. GF9400 уже имел нормальный вершинный конвейер, поддержку DX10, умел декодировать видео до FHD и имел видеовыход на HDMI. Кроме того, с этими GPU нет проблем на Linux: 9400 поддерживает как Nouveau, так и официальные драйвера NV.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Скажу сразу: серфить нормально интернет на этих девайсах не получится. Современный веб очень сильно разжирел: если в 2010-2015 годах, с подобных машинок вполне можно было сидеть в интернете тех лет с относительным комфортом, то сейчас даже Хабр едва ли загружается :( Windows 10 накатывать сюда даже смысла нет — будет неюзабельно!

❯ Играем



Одна из главных ION была встроенная графика. В десктопном и ноутбучном исполнении, GF9400 весьма неплохой видеочип: из ПК на его базе вполне можно соорудить машину для игры в игры эпохи PS2/PS3 с комфортом. Однако, в Revo GF 9400 совсем уж подрезали: производительность игр начала нулевых даже в 720p достаточно печальная.

HL2 с mat_dxlevel 80 идёт… с жалкими 10-15 FPS на сценах с водичкой и 20-30 на закрытах сценах. Да, это очень плачевный результат, при том что остальные настройки выкручены в минимум. На GMA3150, например, с mat_dxlevel 70, у нас есть… кадров 10 максимум :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



GTA VC идёт ощутимо получше. Здесь игра относительно нормально работает в 1080p, с просадками до 20 кадров. Такое себе удовольствие, не этого ожидаешь от GF9400! На GMA3150 дела совсем плохи, скажу честно — я удивлен такому результату. У меня есть ноутбук iRu, топовый для своих лет: дискретный GF 4 440 Go + десктопный Pentium 4. Там Vice City «летает» в стабильных 30FPS при 720p, а тут гораздо более свежая встройка не вытягивает и 15 нормально…


А ведь GF4 MX440 когда-то считалась хоть и народной, но слабой карточкой…

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост
Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



NFSU2 обоим девайсам даётся плохо. На GF9400, мы получаем лаги при разрешении выше HD и с средними настройками. На GMA3150 игра идет плохо вообще при любом раскладе. Однако, судя по всему, рендерер NFS тех лет сам по себе не очень оптимален.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Но во что тогда играть на них! Правильно, в «героев» :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



К сожалению, игровые возможности обеих девайсов оказались не сильно выше тонкого клиента из 2006-2007 года за 500 рублей. ION чуточку нас подвел… хотя интересно было бы разжиться девайсом на базе ION 2 — авось там ситуация лучше.

Пока что я вижу единственный вариант для миниатюрной консоли с эмуляторами + нативными играми на базе ПК-железа — это взять плату от ноутбука 2006-2009 года с дискреткой уровня GF8400, сделать для неё свой корпус на 3D-принтере, развести кнопку включения, дописать «морду» и только тогда получится нормальная машинка для игр уровня PS3!

Может у кого есть битый и распотрошенный ноут середины-конца нулевых? Попробуем дать ему новую жизнь!

❯ Заключение



И хотя ION оказался далеко не таким шустрым, как хотелось бы, применения у этих машинок все еще есть:

  • Торрентокачалка, файловый сервер, DLNA-сервер для мультимедиа

  • Простенький сервер для домашней странички. Сюда же можно складывать бэкапы.

  • Репозиторий для хранения кода.

  • Офисная машинка

  • ТВ-приставка + консоль для ретроигр «в гараж». Почему бы и нет? :)



В целом, если у вас в кармане всего 500-1.000 рублей и вам нужна слабенькая, компактная машинка для каких-либо задач — почему бы не прикупить себе подобный девайс?

Показать полностью 24
[моё] Гаджеты Покупка Неттоп Тонкий клиент Девайс Одноплатный компьютер Электроника Intel Intel atom Длиннопост
130
5670
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Сам себе 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
[моё] Гаджеты Смартфон Телефон Покупка Китайцы Fly Моддинг Программирование 2D Своими руками Одноплатный компьютер Raspberry pi Orange pi Инженерия Электроника Android Linux Unix iPhone Мобильные телефоны Видео Без звука YouTube Длиннопост
442
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии