+7(952) 531-56-65

out4ru@gmail.com

Демонстрационный сайт » Статьи » Статья 13. Сборка OpenWRT для O4-NUC980-NANO

Статья 13. Сборка OpenWRT для O4-NUC980-NANO


Описание


http://out4.ru/download/openwrt-o4-nuc980-nano/usb-nu2.pngМы уже собирали OpenWRT для модуля O4-iMX287-NANO в прошлой статье и теперь пришло время запустить OpenWRT на модуле O4-NUC980-NANO с процессором NUC980 с архитектурой ARM926JS и частотой 300МГц. Данный процессор примечателен тем, что имеет встроенную память DDR2 объемом 64 МБайта. В качестве постоянной памяти модуль O4-NUC980-NANO имеет микросхему памяти SPI NAND объемом 128МБайт. Несмотря,на столь скромные по нынешним меркам частоты и объемы памяти OpenWRT этого вполне достаточно. Для архитектуры ARM9 написано огромное количество хорошего кода и для задач удаленного мониторнига параметров по низкоскоростным интерфейсам, таким как UART/I2C/SPI этого вполне достаточно. Чтобы получить данные с счетчика электроэнергии нет необходимости в графических ускорителях и гигабайтах памяти. А стоимость и ток потребления весьма существенны. 

В этот раз мы соберем один из форков (ответвлений) OpenWRT под названием LEDE-Openwrt. В нем уже есть поддержка плат на основе процессора NUC980, но нет возможности сборки загрузчика u-boot. Поэтому загрузчик мы возьмем уже собранный системой buildroot. 

git clone https://github.com/QQ466005858/NUC980-OpenWrt-LEDE.git
cd NUC980-OpenWrt-LEDE/
./scripts/feeds update -a
./scripts/feeds install -a

Теперь загрузим архив в котором мы подготовили некоторые файлы

wget http://out4.ru/download/openwrt-o4-nuc980-nano.tar.bz2

и распакуем его внутри папки с OpenWRT

tar xvjf openwrt-o4-nuc980-nano.tar.bz2

Запустим менюконфиг и выберем наш процессор

make menuconfig


В Target System выбираем Nuvoton ARM9
В Subtarget выбираем nuc980 based boards
В Target Profile выбираем nuc980
Еще сразу зайдем и включим веб интерфейс LuCI -> Collections -> luci



Собранная файловая система нам нужна в формате образа ubi, поэтому отмечаем в Target Images




Выходим, сохранив конфигурацию и запускаем процесс сборки

make V=s

Через какое-то время ядро и файловая система будут собраны и доступны в 

/NUC980-OpenWrt-LEDE/bin/targets/nuvoton/nuc980/

Из данной папки понадобятся два файла
1. Файл ядра lede-nuvoton-nuc980-nuc980-iot-gateway-uImage
2. Образ файловой системы lede-nuvoton-nuc980-root-ubi.img

Файлы загрузчика u-boot
1. u-boot-spl.bin (начальный загрузчик)
2. u-boot.bin (загрузчик)
можно взять из данного архива

Копируем все эти файлы на флешку и  несем к компьютеру с Windows. Для программирования плат на базе процессора NUC980 Nuvoton предоставляет утилиту NuWriter. Загрузить ее можно здесь. И набор драйверов, которые необходимо установить. Для программирования, устанавливаем с помощью переключателя выбора источника загрузки режим USB (11) и подключаем USB кабель к плату в порт USB0 (программирование осуществляется именно через данный порт!). Обязательно снимаем перемычку USBID, если она установлена! Также можно подключить консоль и запустить терминальную программу.
Можно не подключать блок питания, плата будет получать питание от USB интерфейса. Нажимаем кнопку сброс на плату, в консоли можно увидеть вывод сообщения внутренного загрузчика процессора NUC980


Теперь запускаем программу NuWriter.exe и выбираем наш процессор (NUC980DK61YC)


И нажимаем кнопку Continue. Даже если ее не нажимать, через 5 секунд программа сама запустится. В открывшемся окне программы нажимаем кнопку Re-Connect и если драйвера установлены правильно, появится надпись Device Connected


а в консоли можно увидеть сообщение



В выпадающем списке Choose type выбираем тип памяти SPI NAND


Первым делом очистим память нажав кнопку Erase


Подтверждаем, нажав Ok


Теперь все готово к записи. Пишем начальный загрузчик u-boot-spl.bin. Нажав иконку выбора файла указываем файл u-boot-spl.bin
Image Type - Loader, Image execute address 0x200


И нажимаем кнопку Program. Теперь выбираем файл u-boot.bin меняем параметры на
Image Type - Data, Image Start Offset 0x100000 и опять нажимаем Program


Аналогично записываем файл ядра lede-nuvoton-nuc980-nuc980-iot-gateway-uImage с параметрами 
Image Type - Data, Image Start Offset 0x200000
И файловую систему lede-nuvoton-nuc980-root-ubi.img с параметрами 
Image Type - Data, Image Start Offset 0x1600000

Слева, в таблице вы увидите 4 строки с названиями файлов и адресами


Вот адреса в виде таблицы:
Имя файлаImage TypeImage Start OffsetПримечание
u-boot-spl.binLoader0x0Начальный загрузчик
u-boot.binData0x100000Загрузчик
lede-nuvoton-nuc980-nuc980-iot-gateway-uImage
Data0x200000Собранное ядро Линукс
lede-nuvoton-nuc980-root-ubi.img
Data0x1600000Файловая система OpenWRT-LEDE

После записи, нажимаете кнопку сброс. В консоли можно увидеть лог загрузки системы. Логин на вход root, пароля нет. Пароль можно сразу установить командой
passwd



Сейчас система настроена на получения IP адреса по DHCP. Командой ifconfig можно посмотреть полученные адреса для обоих интерфейсов 


И набрав в браузере адрес, проверяем веб интерфейс


как видите, Люси намекает что надо бы установить пароль



Пару слов про загрузчик u-boot. Первоначально, мы установили его в систему и она его собирала, но он получался мягко говоря неработоспособный. Судя по логам ошибок не хватало каких-то ключей при компиляции. Разбираться желания не было, поскольку рядом стояла система сборки Buildroot, которая успешно его компилировала, решили отложить решение данного вопроса на будущее.
Команды которые вам пригодятся при настройке системы:
1. Вход в меню выбора необходимых пакетов для сборки 

make menuconfig

2. Вход в меню конфигурирования ядра (выбор драйверов и т.п)

make kernel_menuconfig

Папка в которой находится собираемое ядро

/NUC980-OpenWrt-LEDE/build_dir/target-arm_arm926ej-s_musl-1.1.16_eabi$

dts файл платы, котором описана периферия модуля 

/NUC980-OpenWrt-LEDE/target/linux/nuvoton/dts$

Как вы заметили при программировании модуля, здесь нет dtb файла. Потому что он цепляется прямо к файлу ядра uImage и получается объединенный файл (uImage + dtb).

Полезная информация по данному процессору в формате pdf
NUC980 Linux 4.4 BSP User Manual
NUC980 U-Boot User Manual
NUC980 NuWriter User Manual
NUC980 Programming Guide
NUC980 Datasheet

Быстрая доставка

Безопасная оплата

Гарантия качества