Ця стаття передбачає, що ваш пристрій побудований на платформі, яка вже підтримується OpenWrt. Якщо вам потрібно додати нову платформу, дивіться → add.new.platform
Якщо ви вже реалізували підтримку пристрою і шукаєте інструкції щодо подачі змін, зверніться до Політика підтримки пристроїв / найкращі практики
Більшість пристроїв використовують GPIO для керування світлодіодами та кнопками. Універсальних номерів GPIO не існує, тому OpenWrt повинен використовувати індивідуальні відповідності для кожного пристрою. Потрібно визначити, який GPIO відповідає за кожен світлодіод і кнопку.
Якщо світлодіод керується GPIO, потрібно встановити напрямок у `out` і знати полярність:
Приклад перевірки одного GPIO:
cd /sys/class/gpio GPIO=3 echo $GPIO > export echo "out" > gpio$GPIO/direction echo 0 > gpio$GPIO/value sleep 1s echo 1 > gpio$GPIO/value sleep 1s echo $GPIO > unexport
Складіть таблицю, подібну до такої:
| Колір | Назва | GPIO | Полярність |
|---|---|---|---|
| Зелений | Power | 0 | Active high |
| Синій | WLAN | 7 | Active high |
| Синій | USB | 12 | Active low |
Для пришвидшення тестування всіх GPIO рекомендується використовувати скрипт `gpio-test.sh`, який перебирає всі пін-порти.
У випадку GPIO-кнопок значення змінюється під час натискання. Рекомендований підхід:
Використовуйте скрипт `gpio-dump.sh` для автоматизації.
Якщо значення змінюється з 1 на 0 під час натискання — кнопка має рівень - active low, інакше — active high.
Для отримання MAC-адреси, EEPROM або калібрувальних даних з flash-пам’яті, можливо, буде потрібно читати flash у ядрі через макрос `KSEG1ADDR()`, який транслює фізичну адресу в віртуальну. Наприклад: `KSEG1ADDR(0x1fff0000)` дозволяє читати останні 64КБ flash, незалежно від її розміру (4, 8, 16 МБ).
Після додавання нової плати, очистіть кеш збірки:
cd trunk rm -rf tmp make menuconfig
Якщо профіль пристрою не з’являється в `make menuconfig`, оновіть мітку часу Makefile:
touch target/linux/*/Makefile