Вбудовані в обладнання OC Linux

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

Вбудовані в обладнання OC Linux

Необхідність прискорення випуску нової продукції на ринок і зниження загальної вартості систем спонукає багатьох розробників вбудованих додатків на застосування ОС Linux і інших програмних засобів з відкритими початковими кодами. Подібне рішення обумовлено тим, що, використовуючи відкрите програмне забезпечення, розробники отримують можливість сконцентрувати зусилля на вдосконаленні своєї продукції. Вбудовувані системи володіють унікальним набором вимог і обмежень: малі обсяги пам'яті, завантаження з флеш-пам'яті, бездискового, детермінованість. Використання в таких додатках операційної системи Linux пов'язане з низкою додаткових проблем. У цій статті розглянуті питання, що постають у зв'язку з цим перед розробником вбудованих систем, зроблено спробу визначити місце Linux в даному контексті і пропонуються способи подолання труднощів. Існує Чи операційна система для вашого мікропроцесора?

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

Підтримка вбудованих процесорів в ОС Linux

Самая поширена на сьогодні версія Linux це, безумовно, версія для сумісних з ПК комп'ютерів, створених на базі процесорів з архітектурою х86. Сучасні персональні комп'ютери це недорогі системи, які можуть виступати як в ролі інструментальних, так і цільових платформ. У світі такі машини використовує більша частина Linux-розробників, і саме для цих комп'ютерів перш за все і пишуться різні програми. Процесори сімейства х86 застосовуються не тільки в персональних, але і в багатьох вбудованих системах. В даний час існує безліч моделей х86-процесорів від надзвичайно швидкодіючих до самих економічних. Повністю сумісний з ПК комп'ютер може вміститися сьогодні на один кристал. Для деяких розробників все, що їм потрібно це версія ОС Linux для архітектури х86. Проте в певних випадках процесори х86 можуть бути не найкращим вибором. У тих додатках, де потрібно дуже низький рівень енергоспоживання, більш доречними можуть виявитися процесори типу ARM або Hitachi SH, що мають при істотно меншою потужності, що розсіюється ту ж продуктивність. В інших ситуаціях перевагу слід віддати дешевим мікропроцесорах, що мають ядро PowerPC, співпроцесор і необхідний набір функцій введення/виводу. У передбачають інтенсивну обробку даних системах більш виправданим може бути застосування процесорів типу MIPS, характеризуються кращим, ніж у х86, співвідношенням ціни і продуктивності. Сьогодні ринок вбудованих мікропроцесорів сильно фрагментований. По суті, він завжди був таким, і ніщо не вказує на швидку його консолідацію.

Гарна новина полягає в тому, що модифікації ОС Linux існують для багатьох типів вбудованих мікропроцесорів, у тому числі для архітектури PowerPC, MIPS, ARM, StrongArm і SH. Погана це те, що програмних продуктів для цих модифікацій створено набагато менше, ніж для процесорів х86. Однак тепер оновлені Linux-дистрибутиви для інших, ніж х86, платформ з'являються регулярно, і незабаром ситуація має покращитися. Про підтримку версій операційної системи Linux для різних процесорних платформ заявляє все більше число виробників програмного забезпечення. Втім, основною рушійною силою є тут користувачі. Зростаючий попит на програми, стеки протоколів і власне Linux-версії для різних процесорів істотно прискорює процес створення відповідних модифікацій цієї ОС.

Може Чи операційна система працювати в безоператорном і бездискових режимах?

Як правило, що вбудовуються системи працюють в безоператорном режимі. Це означає, що для їх запуску та нормальної роботи участь оператора не потрібно.

ОС Linux в безоператорних і бездискових варіантах

Операційна система Linux розроблялася на основі моделі UNIX і замислювалася як ОС для настільних комп'ютерів. У традиційних версіях Linux для взаємодії з оператором є алфавітно-цифрова консоль, що дозволяє керувати завантаженням операційної системи, здійснювати введення команд і контролювати роботу ОС. Однак вбудованим системам оператор, як правило, не потрібен, і тому під вбудовуваної Linux подібна взаємодія передбачатися не повинно. Як і у всіх версіях ОС UNIX, зберігання та пошук постійних даних і виконуваних програм здійснюється в Linux засобами файлової системи. Різні пристрої також представляються у вигляді спеціальних файлів. Реалізована на дискових накопичувачах файлова система є невід'ємною частиною виконавчої середовища Linux.

Створення безоператорной версії операційної системи Linux не складає особливих труднощів: досить замінити пристрій консоль фіктивним пристроєм. Якщо замість виконання процедури реєстрації стартовий скрипт буде відразу здійснювати запуск прикладних програм, то і взаємодії з оператором вдасться уникнути. Моніторинг при необхідності можна виконувати віддалено, що забезпечується можливістю дистанційного входу в систему і призначенням псевдоустройству TTY ролі консолі. Операційні системи сімейства Linux підтримують різні графічні інтерфейси користувача (X-windows і ін), проте останні є опциональнимі і для нормальної роботи ОС не потрібні.

Проблему бездискового можна вирішити кількома способами. Існують модулі флеш-пам'яті, здатні емулювати IDE-дисководи. Як правило, ці модулі дуже компактні і не перевищують за своїми розмірами звичайних IDE-роз'ємів. Крім того, в склад Linux входить драйвер електронного диска використовується для імітації дискового накопичувача певної частини системної пам'яті. Такий диск може використовуватися для зберігання файлів, які не будуть потрібні після перезавантаження системи. Драйвер електронного диска застосовний і для звернень до файлової системі, реалізованої в ПЗУ. Якщо у вбудованій системі є флеш-пам'ять, яка нездатна емулювати IDE-дисковод, то для роботи з цією пам'яттю як з диском можна скористатися засобами файлової системи. Гарна система управління що зберігаються у флеш-пам'яті файлами зобов'язана мати механізм контролю зносу, що зводить число операцій стирання флеш-блоків до розумного мінімуму.


Інструментальні засоби для ОС Linux

Більшість Linux-програм пишеться, запускається та налагоджували в одній і тій же Linux-системі. Після того, як програма буде повністю налагоджена, її працездатний виконуваний образ (чи містить такий образ пакет) може бути скопійований в інші Linux-машини. Аналогічним чином можна створювати і програмне забезпечення для вбудованої системи за тієї умови, що в цій системі є оперативна і дискова пам'ять достатнього для роботи інструментальних коштів обсягу. На практиці, втім, така ситуація досить рідкісна, і тому в програміста виникає необхідність використання засобів крос-розробки.

Для крос-розробки цілком підійдуть шірокораспространенние GNU-компілятори. Однак відмінність порядків адресації байтів в інструментальної та цільової системах (як це має місце, наприклад, в системах з процесорами типу х86 і PowerPC) може приводити до помилок. Необхідно також визначити формат вивантаження образу ядра з інструментальної системи в цільову. Якщо цільова система здатна працювати з яких-небудь дисковим накопичувачем (і завантажуватись з цього диску), можна підключити цей диск до інструментальної машині, записати на нього образ ядра і файлову систему, потім підключити його до цільової платформі і здійснити завантаження. У тому випадку, коли завантаження ОС в цільову систему може здійснюватися по мережі, на інструментальному комп'ютері достатньо запустити сервер завантаження і файловий сервер. Якщо ж для завантаження цільової платформи повинні використовуватися тільки ПЗУ або флеш-пам'ять, може знадобитися застосування спеціальної утиліти, що створює з Linux-ядра і файлової системи єдиний завантажувальний образ.

В випадку ОС Linux одним з найпростіших способів побудови зручною середовища крос-розробки є використання будь-якого розрахованого на вбудовувані системи Linux-дистрибутива. У такий дистрибутив вже входять крос-засоби для вбудованих процесорів різних типів. Всі проблеми, пов'язані з різною адресацією байтів у слові, як правило, вже вирішені. Зазвичай подібні дистрибутиви мають у своєму складі програми початкового завантаження цільової системи, а також засоби створення і конфігурації Linux-образів, передбачають завантаження по мережі або з флеш-пам'яті.

Крос-розробка передбачає підтримку і крос-налагодження. У середовищі крос-розробки відладчик виповнюється на інструментальній системі. У Linux-дистрибутиви входить GNU-відладчик GDB, який може використовуватися для налагодження програм, написаних як у кодах інструментальної платформи, так і в кодах цільового комп'ютера. У першому випадку відладчик виконує програму сам або підключається до працюючої програмі; при цьому за допомогою інтерфейсу/proc здійснюється контроль структур даних і змінних програми. Крім того, відладчик може виконувати трасування програми, перехоплювати посилають виконуваній програмі сигнали, а також генерувати власні сигнали. Усунення несправностей зчитує з виконуваного файлу символьну інформацію і здатний забезпечувати висновок вихідного тексту програми на екран. У середовищі крос-розробки відладчик виконується на інструментальної платформі, а прикладна програма на цільовий. Оригінальний текст і таблицю символів відладчик читає з файлів інструментальної системи. Контроль що мають відношення до налагоджують програму процесів, структур даних і значень змінних здійснюється за допомогою працює на цільовій машині агента. Останній є GDB-сервер і займає набагато менше пам'яті, ніж сам відладчик. Усунення несправностей GDB взаємодіє зі своїм агентом з TCP/IP-каналу або за допомогою простого послідовного з'єднання.

Зрозуміло, налагодження Linux-ядра та драйверів пристроїв не може здійснюватися так само, як і налагодження користувацького програми. Установка контрольної точки в ядрі чи інша зупинка виконується в ядрі процесу здатна призвести до зупинки і самого агента. Більша частина настільних дистрибутивів Linux не забезпечує функцій, необхідних для налагодження ядра і драйверів. Однак розраховані на вбудовувані системи дистрибутиви такими функціями володіють. Зазвичай відладчик GDB взаємодіє з агентом налагодження ядра по низкорівневому послідовному з'єднанню. Таке рішення дозволяє здійснювати послідовне виконання ядра або драйвера і навіть ставити контрольні точки у процедурах обслуговування переривань. Єдиною річчю, яку не вдається налагоджувати подібним чином, є сам агент налагодження.

Операційна система RT-Linux ОС RT-Linux це система, в якій Linux-ядро є окремим завданням, виконуваної під управлінням невеликий керуючої програми-диспетчера, що працює в реальному часі. Програми реального часу виконуються під управлінням цієї програми, останні під управлінням ядра Linux. Даний підхід аж ніяк не нове. Багато років тому він був випробуваний для комерційної ОС UNIX; в як більш свіжих прикладів можна назвати спроби організації виконання завдань реального часу в комп'ютерах з операційною системою Windows NT. Одним з переваг цього методу є те, що програма-диспетчер реального часу може мати досить малі розміри і просту структуру, що полегшує перевірку відповідності системи вимогам реального часу. Крім того, та Linux, що виконує звичайні (не real-time) завдання, є в даному випадку звичайнісінької Linux, сумісної з іншими версіями цієї операційної системи і допускає швидке здійснення різних модифікацій/модернізацій. Таке рішення поєднує в собі відкритість з підтримкою додатків жорсткого реального часу, у яких часи реакції на події зобов'язані дотримуватися в абсолютне число випадків.

Ні ніяких сумнівів, що метод, запропонований RT-Linux, може бути використаний для цілого класу додатків реального часу. Контрольно-вимірювальні системи, а також системи управління обладнанням і технологічними процесами, в яких програмні засоби реального часу є лише невеликою частиною всього прикладного ПЗ, будуть чудово себе відчувати під управлінням ОС RT-Linux. У всякому випадку, це рішення набагато краще, ніж просте ігнорування вимог до роботи в реальному часі.

Однак в деяких випадках модель RT-Linux буде не найкращим варіантом. В якості прикладів можна згадати накопичення даних в пристроях масової пам'яті, встановлення телефонних з'єднань та інші програми, які передбачають роботу з базами даних реального часу, а також системи, в яких програми реального часу складають значну частину ПЗ та/або важко віддільна від звичайних Linux-програм. Проблема полягає в тому, що завдання, реклама, яка під управлінням ядра реального часу, не можуть скористатися сервісами ОС Linux, її драйверами і т.д., в той час як працюють у середовищі Linux і мають доступ до відповідних функцій завдання з реальним часом ніяк не пов'язані. Спроба реалізувати модель RT-Linux приводить в таких випадках до значного збільшення розмірів ядра реального часу. Останнє при цьому може не тільки надмірно роздутися і ускладнитися, але і почати виконувати багато невластиві йому функції, у зв'язку з чим у певний момент може виникнути питання про виправданості існування звичайного Linux-ядра.

Сумісне з Linux ядро реального часу

Ще одним рішенням проблеми запуску real-time-додатків у середовищі Linux є заміна ядра Linux сумісним з ним ядром, що володіють характеристиками жорсткого реального часу. Фактично, вже в разі RT-Linux ми маємо справу ні з чим іншим, як з відмовою від спроб виконання завдань реального часу під управлінням звичайного Linux-ядра. Крім того, після появи Загальної Бази Linux (LSB Linux Standard Base), що представляє собою стандарт двійкового інтерфейсу для операційної системи Linux, остання перетворюється з просто технології в повноцінну платформу виконання додатків. Будь-яка ОС, задовольняє вимогам цього стандарту, в змозі підтримувати виконання Linux-додатків. Ядро це лише невелика частина всієї операційної системи. Якщо модернізується лише ядро Linux, бібліотеки ж, утиліти і файлова структура залишаються без змін, забезпечити відповідність цього стандарту і сумісність з іншими Linux-версіями стає ще простіше. Ядро реального часу зобов'язане лише підтримувати всі функції ядра Linux, залишаючись при цьому повністю витісняє і повторно входимо. Воно повинно мати планувальник процесів реального часу і гарантувати не перевищує деякого фіксованого межі тривалість затримок, пов'язаних з обробкою переривань.

Перевага даного підходу полягає у відсутності яких би то не було обмежень на розміри і складність прикладних real-time-програм. Задачі реального часу в цьому випадку мають можливість запускати звичайні, не розраховані на використання в жорсткому оперативному режимі завдання. Програмісти, які мають досвід розробки ПЗ для операційної системи Linux, автоматично стають фахівцями і в області програмування реального часу, оскільки з їх точки зору програмні інтерфейси залишаються без змін.

Інші проблеми, пов'язані з використанням вбудованої ОС Linux

Незважаючи на досить вагомі причини вибору Linux як ОС для вбудованої системи або вбудованого пристрою, в області ліцензування їй властиві певні проблеми. Операційна система Linux це не загальнодоступне ПЗ; її ліцензування здійснюється згідно з вимогами ліцензії GPL (GNU Public License), що встановлює суворий набір правил користування. Юридичні питання Використання Linux підпорядковується принципам GPL загальнодоступної ліцензії. Оригінальний текст будь-якого регульованого даної ліцензією програмного засобу поширюється безкоштовно. Виконувані модулі, що генеруються на основі що підпадають під дію GPL вихідних текстів, також поширюються безкоштовно. Будь-які модифікації ліцензованого за допомогою GPL програмного забезпечення автоматично підпадають під дію цієї ліцензії. Продавати виконувані модулі, на які поширюється дія GPL-ліцензії, дозволяється за ціною, що не перевищує в сукупності вартості носія програмного забезпечення та вартості розповсюдження. У разі поширення виконуваних модулів їх вихідні тексти повинен стати загальнодоступними.

Що значить ліцензія GPL для розробників вбудованих систем, що має справу з ОС Linux? Якщо розробник будь-яким чином модифікує Linux-ядро або утиліту, перенесе їх на іншу платформу чи розширить набір їх функціональних можливостей, він буде зобов'язаний опублікувати ці зміни в мережі Інтернет та надавати їх безкоштовно кожному, хто їх запросить. При не цілком акуратному поведінці можна запросто позбутися прав на власні програмні засоби, і тому з усіх питань, що стосуються охорони авторства в області відкритих вихідних текстів, має сенс радитися з досвідченим юристом.

Включати операційну систему Linux до складу продається апаратури вважається цілком нормальним. У разі будь-яких модифікацій ядра, бібліотек або утиліт Linux відповідні вихідні тексти повинні стати загальнодоступними і розповсюджуватися безкоштовно. Виконуються в середовищі Linux прикладні програми можуть при цьому залишатися запатентованими; необхідно стежити лише за тим, щоб до складу цих програм не входив ніякої підпадає під дію ліцензії GPL (а так само і будь-якої іншої ліцензії) код. Драйвери теж можуть бути запатентованими; при цьому вони повинні бути явно відділені від ядра Linux. Одним із найпростіших способів є написання драйвера як завантаження модуля ядра. Якщо ж драйвер компонується як частина базового ядра, питання про поширення на цю частину дії GPL-ліцензії є дуже непростим, і найкращим рішенням тут буде проконсультуватися з грамотним юристом, які займаються питаннями охорони інтелектуальної власності.

Висновок

Незважаючи на те, що спочатку ОС Linux не була розрахована на використання у вбудованих пристроях, продумане конфігурування і розробки деяких постачальників, що пропонують її вбудовувані версії, роблять цю операційну систему цілком застосувати і в цьому колі завдань. Поступово ОС Linux переростає рамки просто технології і перетворюється на потужну платформу для вбудованих додатків. Використання цієї операційної системи поки ще пов'язане з певними труднощами в таких галузях, як ліцензування, обмеження на обсяги займаної пам'яті, розробка програмних засобів, функціонування в безоператорном режимі і в бездискових системах, підтримка вбудованих процесорів і режим реального часу. ОС Linux не є загальнодоступним програмним забезпеченням та ліцензовано відповідно до вимогами ліцензії GPL (GNU Public License), що представляє собою строгий набір правил користування. При цьому не викликає сумнівів, що популярність Linux стимулюватиме все більш широке застосування у вбудованих системах різних її версій. З точки зору використовуваних при виборі операційної системи основних критеріїв, таких як наявність апаратних засобів і готового програмного забезпечення, Linux слід визнати одним із головних кандидатів на роль ОС для вбудованих додатків.

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти