Skip to content

Посібник з портування NuttX

Для портування PX4 на NuttX на новий апаратний пристрій, цей апаратний пристрій повинен бути підтриманий NuttX. Проект NuttX зберігає відмінний посібник з портативності для портування NuttX на нову обчислювальну платформу.

Наступний посібник передбачає, що ви використовуєте вже підтримувану апаратну мету або вже портували NuttX (включаючи базовий рівень PX4).

Налаштувальні файли для всіх плат, включаючи лінкерні сценарії та інші необхідні налаштування, розташовані під /boards у каталозі, що відповідає постачальнику та платі (тобто boards/VENDOR/MODEL/).

Наступний приклад використовує FMUv5, оскільки це остання посилання конфігурації для контролерів польоту на основі NuttX:

Налаштування меню NuttX Menuconfig

Щоб змінити конфігурацію операційної системи NuttX, ви можете використовувати menuconfig за допомогою ярликів PX4:

sh
make px4_fmu-v5_default menuconfig
make px4_fmu-v5_default qconfig

Для свіжих встановлень PX4 на Ubuntu з використанням ubuntu.sh вам також потрібно буде встановити інструменти kconfig з інструментів NuttX.

Наступні кроки не потрібні у разі використання контейнера docker px4-dev-nuttx або встановлення на macOS за нашими звичайними інструкціями (оскільки вони включаютьkconfig-mconf).

Виконайте наступні команди з будь-якого каталогу:

sh
git clone https://bitbucket.org/nuttx/tools.git
cd tools/kconfig-frontends
sudo apt install gperf
./configure --enable-mconf --disable-nconf --disable-gconf --enable-qconf --prefix=/usr
make
sudo make install

--префікс=/usr визначає конкретне місце встановлення (яке повинно бути у змінній середовища PATH). Параметри --enable-mconf та --enable-qconf увімкнуть опції menuconfig та qconfig відповідно.

Для запуску qconfig може знадобитися встановити додаткові залежності Qt.

Завантажувач

Спочатку вам знадобиться завантажувач, який залежить від цільового обладнання:

Кроки портування прошивки

  1. Переконайтеся, що у вас працює середовище розробки та ви встановили інструмент конфігурації 'menuconfig` NuttX (див. вище).

  2. Завантажте вихідний код і переконайтеся, що ви можете зібрати існуючу ціль:

    sh
    git clone --recursive https://github.com/PX4/PX4-Autopilot.git
    cd PX4-Autopilot
    make px4_fmu-v5
  3. Знаходьте існуючу ціль, яка використовує той самий (або тісно пов'язаний) тип ЦП, і скопіюйте її. Наприклад для STM32F7:

    sh
    mkdir boards/manufacturer
    cp -r boards/px4/fmu-v5 boards/manufacturer/my-target-v1

    Змініть виробника на назву виробника та my-target-v1 на назву вашої плати.

Далі вам потрібно пройти через усі файли у boards/manufacturer/my-target-v1 та оновити їх відповідно до вашої плати.

  1. прошивка.prototype: оновлення ідентифікатора та назви плати
  2. default.px4board: оновіть VENDOR та MODEL, щоб відповідали іменам каталогів (my-target-v1). Налаштування послідовних портів.
  3. Налаштуйте NuttX (defconfig) через make manufacturer_my-target-v1 menuconfig: налаштуйте ЦП та мікросхему, налаштуйте периферійні пристрої (UART's, SPI, I2C, ADC).
  4. nuttx-config/include/board.h: Налаштуйте контакти NuttX. Для всіх зовнішніх пристроїв з кількома варіантами контактів, NuttX повинен знати контакт. Вони визначені у файлі шапки конкретного чіпу, наприклад stm32f74xx75xx_pinmap.h.
  5. src: пройдіться по всім файлам у каталозі src та внесіть необхідні зміни, зокрема у файлі board_config.h.
  6. init/rc.board_sensors: запускає сенсори, які підключені до плати.