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

Beaglebone Black - чудова дошка для вивчення вбудованого Linux
Створіть повну вбудовану систему за допомогою Buidroot
Buildroot та Yocto - найважливіші вбудовані інструменти Linux. Ви можете порівняти їх із Вбудовані дистрибутиви Linux, але, як ви побачите, вони набагато більше, ніж це.
Для цього повідомлення в блозі ми використовуємо Buildroot. Дійсно, в Openest ми вважаємо, що його легше використовувати при запуску та набагато швидше налаштувати. Якщо ви віддаєте перевагу Yocto, повідомте нам про це в коментарях, імовірно, ми оновимо цю статтю пізніше.
Давайте клонуємо вихідний код Buildroot і перейдемо до його джерел:
Давайте вивчимо доступні теги git (на даний момент 2019.11) і візьмемо цю версію:
Зараз ми хочемо знайти ваш Пакет підтримки дошки Linux, вбудований у папку "дошка". Його класифікує виробник карток, тому знайти його досить легко. До кінця цього підручника ми використовуватимемо Біглбоун Чорний, який ви знайдете в каталозі “дошка/біггбоун”. Звідси я пропоную вам прочитати файл readme.txt, який ви знайдете в цьому каталозі.
Тепер застосуйте відповідну конфігурацію та побудуйте свою систему:
Якщо у вас є Raspberry-Pi 4, просто запустіть:
Тепер ви зачекаєте близько 30 хвилин (перший раз це займає більше часу), Buildroot завантажить і скомпілює все необхідне програмне забезпечення. Тепер ви можете перейти до наступного кроку.
Чекай ! Я не можу знайти свою картку в каталозі "дошка"! Гаразд, це нещастя. Це означає, що він (ще?) Офіційно не підтримується в Buildroot. Це повністю персоналізована картка чи дуже рідкісна, це не дивно. У цьому випадку я пропоную вам знайти картку з тим самим мікропроцесором:
Це дасть вам картки з однаковим процесором, знайдіть таку, яка схожа на вашу. Використовуйте його як основу для створення власної папки в дошці/та конфігурації в конфігурі/модифікованій для власних потреб.
Запустіть вбудовану систему Linux
В кінці процесу компіляції ви знайдете найкорисніші файли в каталозі output/images:
Які всі файли у вихідних файлах/зображеннях Buildroot ? Ну, можна багато чого сказати. Дуже часто ви зустрічаєте:
- dtb: (бінарні файли дерева пристроїв): вони генеруються з файлів dts: вони в основному описують апаратне забезпечення в Linux, повідомляють, де знайти різні компоненти, присутні на друкованій платі, і які реєстри та які драйвери використовувати.
- zImage: двійковий образ Linux, zImage - це двійковий формат зображення, але є й інші, такі як uImage.
- u-boot.img: це двійковий образ завантажувача, зазвичай ми використовуємо U-Boot. Він ініціалізує деякі компоненти (зазвичай DDR, контролер sdcard та Ethernet).
- rootfs.ext2: корінь файлової системи: розділ, де Linux розраховує знайти всі необхідні файли.
- готове до використання зображення sdcard.img, яке можна перепрошити на SD-карту.
У випадку з Beaglebone Black ви також знайдете файл MLO. MLO - це перша програма завантаження, вона виконує базову ініціалізацію, а потім запускає U-Boot.
Як запустити карту:
Вставте microSD на свій ПК, перевірте його назву за допомогою dmesg і прошийте створене зображення за допомогою dd:
Увага ! Перевірте пристрій призначення, особливо переконайтесь, що він не sda, sdb: ви можете повністю стерти жорсткий диск свого ПК.
Тепер вставте SD-карту в Beaglebone Black і підключіть блок живлення. Ви побачите, як він запускається на вашій консолі через UART. Тепер ви можете увійти в Buildroot. Користувачем за замовчуванням є root.
Встановіть додаткове програмне забезпечення на ваші rootfs
Buildroot підтримує не лише десятки апаратних карт. Він також містить понад 2300 упаковок. Термін пакет не зовсім коректний, насправді ми повинні говорити про рецепти складання. У будь-якому випадку, ви можете додати нові пакети до своїх rootfs, на вашому ПК поверніться до головного каталогу Buildroot:
Це відкриє графічний інтерфейс:
зробіть menuconfig на Buildroot
З головного меню ви можете ознайомитися з вбудоване програмне забезпечення доступні, перейдіть до розділу "Цільові пакети":
Якщо ви знаєте, що потрібно шукати, просто введіть "/" і введіть назву програми чи бібліотеки, яку потрібно додати.
Закінчивши, натисніть клавішу Escape, збережіть нову конфігурацію та повторіть створення, як тільки повернетесь на консоль.
Розробіть власний вбудований додаток
Найкраще у вбудованій розробці Linux - це те, що ви можете використовувати будь-яку мову, від Java до Go і навіть javascript. Звичайно, ви повинні брати до уваги ресурси, доступні на вашій дошці, але сьогодні ми бачимо багато програмного забезпечення nodeJS або Python, що працює на вбудованих системах. Тому ви можете вибрати бажану мову або перенести існуюче програмне забезпечення на a бортова платформа.
Процес розробки може відрізнятися залежно від вашого проекту, але ви можете легко розпочати розробку на будь-якому ПК з Linux і пізніше подбати про апаратні аспекти.
Для мов не складено, просто встановіть необхідний інструмент за допомогою інструмента make menuconfig. Потім перейдіть до наступного розділу.
Для компільовані мови, таких як C або C ++, ви можете безпосередньо встановити компілятор на свою вбудовану систему, але це не буде ефективно. Натомість ви можете використовувати набір інструментів Cross. Крос-ланцюжок інструментів складає програмне забезпечення для іншої архітектури. У нашому випадку ми збираємося скомпілювати ARM-код на ПК.
Де ланцюг перехресної компіляції Buildroot? ? Коли ми генерували свою файлову систему, Buildroot також скомпілював власний ланцюжок інструментів. У головному каталозі Buildroot ви можете знайти його в output/host:
Каталог виводу/хосту - це місце, де Buildroot розміщує всі файли, необхідні системі господар (ваш ПК) для створення системи ціль (Ваша картка). Ви знайдете gcc та всі пов'язані з нею інструменти в каталозі bin.
Компілятор - це не все. Можливо, ви хочете пов’язати свою програму з бібліотеками вбудованих системних бібліотек. Вони знаходяться у виведенні/цілі ":
Він містить усі файли, встановлені у вашій цільовій системі, включаючи двійкові файли для ваших бібліотек та програм. Ви можете додати ці шляхи до опції "-L" у вашому командному рядку gcc, щоб переконатися, що ви можете зв'язатись із цими двійковими файлами.
Файли заголовків не встановлюються в цільовому каталозі, але ви знайдете їх у "output/build /"
Розгортайте програмне забезпечення на вбудованій системі
Коли ви розробляєте програму, ви хочете тестувати її дуже часто. Отже, вам потрібен ефективний робочий процес, який дозволяє швидко передавати програму та дані.
У таблиці є кілька варіантів, ви можете спробувати NFS або SSHFS, але їх трохи складніше налаштувати. Натомість ми просто використаємо команду scp.
Як встановити сервер ssh на бортовій системі ? Знову скористайтеся інструментом налаштування Buildroot: make menuconfig. Тепер ви можете шукати dropbear, невеликий сервер ssh, призначений для вбудованих систем. Ви знайдете його в "цільових пакетах/додатках/мережі/push bear":
Dropbear знаходиться в "цільових пакетах/Мережевих додатках/dropbear", просто виберіть його.
Щоб використовувати ssh, нам потрібно зробити мережу функціональною. Найпростіший спосіб зробити це - використовувати Ethernet. Якщо на вашій картці немає порту Ethernet, ви можете замість цього використовувати Wi-Fi із wpa-суплікантом. Ми можемо сказати Buildroot переконатися, що мережевий інтерфейс за замовчуванням отримує IP-адресу через DHCP в меню "Конфігурація системи/Мережеві інтерфейси, які слід налаштувати за допомогою DHCP":
Введіть тут назву мережевого інтерфейсу за замовчуванням. Часто це eth0.
Тепер ви можете запустити make, щоб побудувати dropbear і повторно згенерувати всі ваші rootfs. Потім прошийте SD-карту та завантажте систему. Він отримає IP-адресу з вашого DHCP-сервера, і dropbear буде запущено. Зверніть увагу на IP-адресу вашого інтерфейсу:
Тепер нам залишається лише перенести ваш виконуваний файл у вбудовану систему. На вашому ПК запустіть:
Повернувшись до вбудованої системи, тепер ви можете запустити свою програму:
Йдіть далі у розробці вбудованого Linux
Розробка вбудованого Linux - це величезна область знань. Експертам вбудованих Linux потрібні роки, щоб освоїти це.
Зверніть увагу, у цьому підручнику не згадується про безпеку, звичайно, не найкращою ідеєю буде запустити все як адміністратор користувача або встановити dropbear на кінцевий продукт! З іншого боку, це, безумовно, хороший спосіб почати.
Тим не менше, ми сподіваємось, ця стаття дала вам деякі потрібні ключі. Залежно від ваших потреб, ми пропонуємо вам прочитати інші наші дописи в блозі, про оновлення вбудованих систем або про те, як слід вибирати обладнання, щоб забезпечити належну інтеграцію апаратного/програмного забезпечення.
Повідомте нас, що ви думаєте, у розділі коментарів. Ми прагнемо вдосконалити наші навчальні посібники, і будь-який відгук вітається !