Фирма Nokia является одним из мировых лидеров в производстве и продаже мобильных телефонов. В 2005 году фирма Nokia выпустила карманный персональный компьютер (КПК) N770 на основе развитого Linux окружения с собственным окружением рабочего стола (на GTK+) — Hildon под общим названием проекта Maemo. В последствии на основе платформы Maemo было выпущено ещё три мобильных устройства, а именно два КПК «интернет-планшета» N800, N810 и смартфон «интернет-планшет» N900. В 2010 году фирма Nokia объединила свои усилия по работе над Maemo с проектом MobLin фирмы Intel, создав проект MeeGo. На основе платформы MeeGo в 2011 году было выпущено два смартфона N950(прототип) и N9.
Для проекта OpenSCADA мобильные устройства фирмы Nokia на платформах Maemo и MeeGo интересны в плане их основы на развитом окружении ОС Linux, отсутствия блокировок и ограничений на расширения этих платформ путём сборки и адаптации типовых программ ОС Linux, что позволяет просто осуществить адаптацию OpenSCADA на аппаратные платформы ARM и сборку для вышеупомянутых мобильных устройств фирмы Nokia.
Адаптация проекта OpenSCADA для работы на аппаратных платформах ARM была выполнена в 2011 году в соответствии с общим планом развития http://wiki.oscada.org/Works/RoadMap в окружении КПК N800 (http://wiki.oscada.org/Works/Tests/ARM ). В значительной степени адаптация была выполнена в рамках chroot окружения дистрибутива ALTLinux, как более свежего и менее проблемного. Последние сборки OpenSCADA уже полноценно и корректно работают в родном окружении N800.
N800 (Maemo 4.1)
КПК N800 (рис.1) содержит процессор OMAP2420 с рабочей частотой 400 МГц, сенсорный (резистивный) дисплей 4,1" 800×480 и построен на основе программной платформы Maemo 4.1.
Рис. 1. КПК (интернет-планшет) N800
На этапе знакомства и изучения возможности сборки OpenSCADA под или для N800 были обнаружены проблемы некоторой устарелости программного окружения и ряд проблем при исполнении собранной OpenSCADA, часть из которых была связана с неготовностью OpenSCADA для работы на архитектуре ARM. По этой причине была осуществлена также сборка OpenSCADA в "chroot" окружении дистрибутива ALTLinux на N800. Из наиболее существенных проблем, с которыми пришлось столкнуться при сборке OpenSCADA, можно отметить:
Сравнительно небольшой объём оперативной, а также выгружаемой памяти для сборки. Так, устройство содержит 128Мб оперативной памяти и до 128Мб выгружаемой, чего недостаточно для сборки в "chroot" некоторых модулей пользовательского интерфейса с оптимизацией (-O2).
Проблема доступа к файловой системе при загрузке БД библиотек и моделей OpenSCADA. На первых этапах запуска OpenSCADA в родном окружении N800 было обнаружено падение OpenSCADA при загрузке стандартных библиотек в БД SQLite, чего не замечалось в chroot окружении ALTLinux. В последствии эта проблема была решена путём тонкой адаптации OpenSCADA для работы в "плохом" окружении контроллера LP-5141 фирмы "ICP DAS".
Невысокая производительность устройства. Устройство содержит процессор TI OMAP 2420 с частотой 400МГц, чего не достаточно для полноценного запуска математических моделей технологических процессов. В целом низкая частота процессора усугубляется невысокой скоростью вычислений с плавающей точкой, детальнее об этом можно увидеть из анализа производительности вычислений с плавающей точкой.
Для безопасного проведения экспериментов с устройством и предотвращения возможного повреждения исходного программного окружения была настроена мульти-загрузка с возможностью загрузки как в исходное программное окружение на внутреннем flash-носителе так и в экспериментальное окружение на внутренней SD-карте, копии исходного программного окружения (http://habrahabr.ru/blogs/n800/24111 ).
Для создания "chroot" окружения ARM репозитория ALTLinux использовано руководство http://www.altlinux.org/Ports/arm/chroot. На основе полученного chroot было создано сборочное окружение для сборки в нём OpenSCADA непосредственно на N800. Теоретически возможна сборка непосредственно на большой машине, через quemu, однако при этом у меня возникли проблемы с падением quemu. Кроме сборки OpenSCADA полученное "chroot" окружение также успешно использовалось для запуска свежего окружения KDE 3.5.12 на N800.
Впоследствии, для сборки OpenSCADA с графическим интерфейсом под родное окружение, что стало возможно с появлением пакетов QT4, было установлено официальное SDK и окружение компиляции фирмы Nokia. Установка проводилась посредством скрипта установки сборочного окружения maemo-scratchbox-install_4.1.sh и скрипта установки SDK maemo-sdk-install_4.1.sh. Общее описание SDK можно получить по ссылке.
В расширенном репозитории Maemo 4.1 последняя версия QT4 (libqtcore4, libqtgui4-4.5.3-1maemo1) содержит ошибку, которая приводит к падению приложения в момент создания/удаления виджетов, что можно наблюдать в конфигураторе OpenSCADA на библиотеке QT. Для обхода этой проблемы необходимо установить и зафиксировать от обновления предыдущую версию QT4 (libqtcore4, libqtgui4-4.5.2-1maemo2), которая не имеет этой проблемы и работает стабильно.
Кроме первоочередной цели сборки и запуска OpenSCADA на этом устройстве были также выполнены задачи:
Установка окружения рабочего стола KDE3 (3.5.8) в роли более развитого и привычного окружения, дополняющего исходное окружение "Hildon".
Исправление работы программы виртуальной клавиатуры kvkbd при переключении Shift.
Nokia N900 содержит процессор ARM Cortex-A8 OMAP3430 (600 МГц), сенсорный (резистивный) дисплей 3.5" 848×480 и построен на основе программной платформы Maemo 5.
Рис. 2. Мобильный телефон N900
Для сборки OpenSCADA под родное окружение было установлено официальное SDK и окружение компиляции фирмы Nokia. Установка проводилась посредством скрипта установки сборочного окружения maemo-scratchbox-install_5.0.sh и скрипта установки SDK maemo-sdk-install_5.0.sh. Общее описание SDK можно получить по ссылке.
N950, N9 (MeeGo 1.2 Harmattan)
Nokia N950 содержит процессор ARM Cortex-A8 OMAP3630 (1 ГГц), сенсорный (емкостной) дисплей 4" 854×480 и построен на основе программной платформы MeeGo 1.2 Harmattan.
Телефон был получен от Nokia в рамках программы Qt Ambassador Program для адаптации на него системы OpenSCADA.
Рис. 3. Мобильный телефон N950
Для сборки OpenSCADA под родное окружение было установлено официальное SDK и окружение компиляции фирмы Nokia. Установка проводилась посредством скрипта установки harmattan-sdk-setup.py. Общее описание SDK и инструкцию по установке можно получить по ссылке.