Как стать автором
Обновить

Fernly — операционная система для моих часов

Умный домНосимая электроникаТранспорт
Recovery mode
Начинается новый виток гонки операционных систем. Возможно, GNU Linux, Android OS, Windows, OS X отходят в прошлое, как динозавры, уступая место новым млекопитающим грызунам. Вот как эти зверьки выглядят на рентгеновском снимке.
image
Заметно, что нервная система «грызунов» сложнее чем у «динозавров». Дорожки трассированы минимум к 4 областям, 3 из которых прямоугольники. Каждая область отдельный IP блок (блок интеллектуальной собственности). Каждое ядро MT626x обладает своим собственным DMA (контролером управления памятью).

Часы за $3.25, дешёвые трекеры за $16.99,трекеры, часы со встроенным мобильным телефоном за $23, просто телефон за $22.95 роботы, коптеры и другие «символы свободы и нового поколения суперлюдей». На большинстве этих устройств стоят чипы от MediaTek Inc. Эти чипы очень дешёвые. Устройство (типа Fernvale) получается дешевле чем аналогичное на базе ESP8266 или Arduino, если учитывать производительность и потенциальные возможности.

Хороший пример аналогичного устройства за $5.42 с чипом MediaTek Inc., разница в отсутствии некоторых не разведённых пинов, но можно найти устройства немного подороже с большим количеством пинов и с возможностью подключения шлейфов. Для этих устройств можно делать EAT приложения пользователя. Им не нужен внешний контролер. Зачем тратить 150 миллионов в России на убыточном предприятии «Микрон» для создание своего GSM модуля и ждать 2 года, когда такой же можно купить готовый за $3? Да же если продать каждому россиянину по 1 модему (что само собой утопия) то доходы не покроют расходы.

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

История


Первые Смарт Часы современного формата были сделаны Samsung в 2003 году. Прототип с чёрно-белым экраном был готов уже в 2001 году.
image
Как раз на 1 год позже, когда я работал в Samsung NT, я предложил нашему тим лидеру использовать часы только для отображения информации, хранения и передачи, но не для звонков. Надо использовать радио-модули очень малого потребления, а не WiFi или BT, как это делают сейчас.

Какие новые ОС нас поджидают на новом витке эволюции


Fernly порт для MT6260 это даже не грызун в мире мобильных открытых операционных систем. Это скорее таракан, которого не успели раздавить. Может по недосмотру. Или от того что он быстро бегает и прячется. Наоборот, находятся альтруисты, которые подкармливают это насекомое. Fernly порт для MT6261.

Nuttx это уже грызун. И видимо таким грызунам и принадлежит будущее. Например автопилоты Pixhawk PX4 для коптеров работают хорошо, а продаются за $55 ещё лучше. NuttX порт для MT6260.

ChibiOS набирающий всё большую популярность грызун из за проработанного RT API HAL драйверов. Эта ОС подходит для умного дома, автомобильного контролера, адаптера для CAN шины и различных переферийных устройств.

Почему от корневых сертификатов новых ОС зависит многое


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

В следующем видео Michael Raggo на 13 минуте говорит о часах U8 на чипе MT6261D с закрытой операционной системой Nucleus.



Вот для этих часов уже начали делать свободную операционную систему Fernly и даже портировали на этот чип Nuttx.
про порт Nuttx
we were able to boot a port of NuttX on the MT6260
Порт fernvale-nuttx на GitHub. Теперь можно с оглядкой на порт Fernly для MT6261D сделать порт NuttX для MT6261D, но область памяти статического RAM в MT6261D меньше. Всего 44к байт.

Множество китайского кода требует проверки и закрепление целостности и неизменности проверенных прошивок доступными для всех сертификатами и средствами контроля и верификации. Можно посмотреть на китайскую реализацию MQTT протокола с авторизацией. Или сервис для скутеров с необычно «глубоким знанием» устройств клиентов. Или можем рассмотреть под микроскопом китайский магазин c API, устройствами и магазином приложений с BaaS (backend as a service) провайдером. Всё это примеры кода, который миллионы людей используют под «честное китайское слово».

Кто первый увидел платформу для OSHW в MT626x


По ссылке находиться форум одной очень известной в узких кругах команды Kosagi. Лидер Bunnie со своей подругой, командой Kosagi или в одиночку успешно зажигал на всяких краудсоурс платфомах с новыми инициативами (например носимая электроника) которым могли позавидовать даже Adafruit. Этот человек получил образование в Америке в MIT, хотя является китайцем. И вся его команда китайцы (за исключением одного человека — Sean Cross):

image

Andrew 'bunnie' Huang принял участие в нескольких пректах по сбору средств. Один из самых любопытных из этих проектов The Essential Guide to Electronics in Shenzhen.
Что такое Gongkai и зачем оно нужно для проектов с открытым кодом?
Как вы наверное знаете, Shenzhen это город возле Гонконга, где производят множество электроники для всего мира. Где корпорации Америки успешно потеряли часть своих инвестиций за счёт немедленного присвоения китайцами новых технологий. Так например, умные часы, самых лучших брендов, немедленно изготавливались крупными партиями под новым названием, а их запчасти можно было купить у знакомых (только китаецев с друзьями из Shenzhen). Вот эту систему и называют Gongkai.

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


«Новые китайские» технологии


Bunnie использовал в своём проекте novena гибкие шлейфы с напаянными микросхемами как дополнительные контакты для подключения цифрового осциллографа. Чтобы перехватывать протоколы передачи через популярные в этом году хардварные интерфейсы новых устройств. Например The $12 “Gongkai” Phone. И сделал это так, что бы с точки зрения американского закона, это было легально. Bunnie не копировал исходный код операционной системы Nucleus в свой проект, а создал собственную ОС с открытым исходным кодом. Команда Kosagi старалась использовать только легальные методы и способы получения информации о устройствах с чипами MT626x.
image
Дело в том, что у компании MediaTek Inc. есть технология генерации софтварных драйверов под их чип с автоматическим распределением 25 пинов общего назначения. Поэтому единственный белый человек из kosagi команды Sean Cross написал интерпретатор для скриптового языка загрузки операционной системы, аналогичной MAUI (закрытая операционная система устройств на базе чипов MediaTek, которая включает интерфейс пользователя MMI).

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

Вот в этом собственно и суть новой «Великой революции», которая была объявлена в Декабре 2014 года Bunnie в его блоге, но так и не произошла. Полтора года усилий китайцев и американцев не помогли.

«Великая революция» на прошлой неделе


Теперь все 3 компонента (OSHW, OS, DOCs) находятся по факту в легальном правовом поле и доступны для изучения. Неделю назад, доброй души человек из Российской федерации (не будем показывать пальцем, хотя завсегдатаи профильных форумов по смартчасам могут найти ник этого пользователя по стилистике шуток) решил подкормить тараканов а заодно и мышей и выложил актуальную документацию MediaTek Inc. на, относительно, не самые новые чипы. PDF файлы для новых чипов MediaTek Inc. закрыты паролями. Старые чипы не используются в новых устройствах, но зато вовсю используются в «китайских копиях китайских копий устройств». Может быть, кто нибудь прямо сейчас делает код, который позволит обращаться с вашими умными часами посредством Arduino подобного кода.

Кто же победит в этих мышиных бегах? Ставки принимаются, господа с GT.

Вот теперь мы можем точно ответить на вопрос — сколько же ядер и IP блоков скопировано MediaTek Inc. (без лицензии) для SoC MT6261. Ответ на этот вопрос по ссылке на форуме (будем считать это микро-игрой внутри этой заметки на GT).

P.S. Надеюсь что в комментариях, специалисты, укажут и название документа и количество IP блоков по рентгеновскому снимку.

P.S.S Компиляция Fernly OS и загрузка в мои часы c MT6260
git clone https://github.com/robertfoss/setup_codesourcery.git
sudo setup_codesourcery/setup.sh
/usr/local/bin/codesourcery-arm-2014.05.sh

git clone https://github.com/xobs/fernly.git
cd fernly/

make CROSS_COMPILE=arm-none-eabi-
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
AS scriptic/set-plls.S
AS scriptic/enable-psram.S
AS scriptic/spi.S
AS scriptic/spi-blockmode.S
AS scriptic/keypad.S
AS start.S
CC bionic.c
CC cmd-hex.c
CC cmd-irq.c
CC cmd-peekpoke.c
CC cmd-reboot.c
CC cmd-sleep.c
CC cmd-spi.c
CC cmd-led.c
CC cmd-load.c
CC cmd-bl.c
CC cmd-lcd.c
CC cmd-keypad.c
CC emi.c
CC irq.c
CC lcd.c
CC main.c
CC scriptic.c
CC serial.c
CC spi.c
CC utils.c
CC vectors.c
CC vsprintf.c
arm-none-eabi-ld --nostdlib -T fernvale.ld --entry=reset_handler -o build/firmware.elf build/scriptic/set-plls.o build/scriptic/enable-psram.o build/scriptic/spi.o build/scriptic/spi-blockmode.o build/scriptic/keypad.o build/start.o build/bionic.o build/cmd-hex.o build/cmd-irq.o build/cmd-peekpoke.o build/cmd-reboot.o build/cmd-sleep.o build/cmd-spi.o build/cmd-led.o build/cmd-load.o build/cmd-bl.o build/cmd-lcd.o build/cmd-keypad.o build/emi.o build/irq.o build/lcd.o build/main.o build/scriptic.o build/serial.o build/spi.o build/utils.o build/vectors.o build/vsprintf.o lib/libgcc-armv5.a
arm-none-eabi-objcopy -S -O binary build/firmware.elf build/firmware.bin
AS usb-loader.S
arm-none-eabi-objcopy -S -O binary build/usb-loader.o build/usb-loader.bin
gcc fernly-usb-loader.c sha1.c -o build/fernly-usb-loader

./build/fernly-usb-loader -w -s /dev/ttyUSB0 ./build/usb-loader.bin ./build/firmware.bin


P.S.S.S Компиляция Nuttx OS и загрузка в мои часы c MT6260
git clone https://github.com/robertfoss/setup_codesourcery.git
sudo setup_codesourcery/setup.sh
/usr/local/bin/codesourcery-arm-2014.05.sh

git clone https://github.com/sutajiokousagi/fernvale-nuttx.git
cd fernvale-nuttx/misc/tools/kconfig-frontends/; ./configure --enable-mconf
make
make install

cd ../../../nuttx/tools/; ./configure.sh kosagi-fernvale/nsh

cd ../; make menuconfig

nano ./setenv.sh
============> cut <=======================
#!/bin/bash
if [ "$_" = "$0" ] ; then
  echo "You must source this script, not run it!" 1>&2
  exit 1
fi

WD=`pwd`
if [ ! -x "setenv.sh" ]; then
  echo "This script must be executed from the top-level NuttX build directory"
  exit 1
fi

if [ -z "${PATH_ORIG}" ]; then
  export PATH_ORIG="${PATH}"
fi                                                            

# This is the Cygwin path to the location where I installed the CodeSourcery
# toolchain under windows.  You will also have to edit this if you install
# the CodeSourcery toolchain in any other location
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"

# This is the Cygwin path to the location where I build the buildroot
# toolchain.
#export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
export TOOLCHAIN_BIN='/usr/local/codesourcery/arm-2014.05/bin'

# This is the path to the tools subdirectory, 
# but in ${WD}/configs/kosagi-fernvale/tools possible find crypto bootloader.

export LPCTOOL_DIR="${WD}/configs/olimex-lpc-h3131/tools"

# Add the path to the toolchain to the PATH varialble

export PATH="${TOOLCHAIN_BIN}:${LPCTOOL_DIR}:/sbin:/usr/sbin:${PATH_ORIG}"
echo "PATH : ${PATH}"
==========================> cut <==============================

. ./setenv.sh 
make CROSSDEV=arm-none-eabi-

# Look to https://github.com/sutajiokousagi/fernvale-nuttx/blob/master/nuttx/configs/kosagi-fernvale/README.txt
# Currently, Fernvale requires a serial bootstrap.
# This program is called fernly-loader, and will blast an image to offset 0x0.

cd configs/kosagi-fernvale/tools/
make
./fernly-usb-loader /dev/ttyUSB0 ../../../build/usb-loader.bin ../../../build/firmware.bin ../../../nuttx.bin

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

Setting serial port parameters... Ok
Initiating communication... Ok
Getting hardware version... 0xca01
Getting chip ID... 0x625a  <==================  Неправильный чип MT625A а не MT6260.
Getting boot config (low)... 0x0000
Getting boot config (high)... 0x0000
Getting hardware subcode... 0x8000
Getting hardware version (again)... 0xca01
Getting chip firmware version... 0x0001
Getting security version... v 5
Enabling security (?!)... Ok
Reading ME... 00000000 5a c2 9e 20 c9 5d 9c 31  24 e4 fb e3 8e dd b5 b3  |Z.. .].1$.......|
Disabling WDT... Ok
Reading RTC Baseband Power Up (0xa0710000)... 0x0001
Reading RTC Power Key 1 (0xa0710050)... 0xa357
Reading RTC Power Key 2 (0xa0710054)... 0x67d2
Setting seconds... Ok
Disabling alarm IRQs... Ok
Disabling RTC IRQ interval... Ok
Enabling transfers from core to RTC... Ok
Reading RTC Baseband Power Up (0xa0710000)... 0x0001
Getting security configuration... Unable to read from Sec Conf buffer: Success
Getting PSRAM mapping... 0x0000
Disabling PSRAM -> ROM remapping... Ok
Checking PSRAM mapping... 0x0002
Checking on PSRAM mapping again... 0x0002
Updating PSRAM mapping again for some reason... Ok
Reading some fuses... 0x00000007 <============================= Блокировка перезаписи 3 битом E-фьюза  
Enabling UART... 0x0000
Loading Fernly USB loader... !! First response is 0x1d0d, not 0 !!

Так же бывает нужен файл аудентификации (0xE2 команда) и 0x80 байтов RSA подписи, которые генерируют из 0x10 байтов выдаваемой командой 0xE3.


Теги:NuttXFernlyChibiOSgongkaiopen source hardwareopen source softwareFernvalekosagi
Хабы: Умный дом Носимая электроника Транспорт
Всего голосов 23: ↑8 и ↓15-7
Просмотры12K

Похожие публикации

Лучшие публикации за сутки