
Съдържание:
- Стъпка 1: Изисквания
- Стъпка 2: Конфигуриране на хост за изграждане на ядро и изграждане на ядро в HOST
- Стъпка 3: Възстановете Boot.img в HOST
- Стъпка 4: Създаване на коренна файлова система в HOST
- Стъпка 5: Създаване на NFS на сървъра в HOST и копиране на файлове
- Стъпка 6: Актуализиране на зареждащия образ на Dragonboard 410c и конфигуриране на мрежови интерфейси
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36

Цели:
- Инсталирайте верига от инструменти и прекомпилирайте ядрото, за да поставите поддръжка за USB Ethernet CDC Gadget;
- Пресъздайте boot.img от Linaro за зареждане на USB Ethernet CDC;
- Създаване на NFS сървър за хостване на основната файлова система;
- IP конфигурация в DEVICE и HOST.
Стъпка 1: Изисквания
Ще ви трябват следните точки:
- DragonBoard ™ 410c (наречен тук DEVICE);
- Компютър, използващ Ubuntu 16.04.3 актуализиран (наречен тук HOST) с интернет връзка и слот за SDCard;
- Чиста инсталация на версия 431 за разработчици на Linaro - Връзка: моментна снимка Linaro Debian v431
- HDMI монитор;
- USB клавиатура;
- SD карта 8Gb;
- USB кабел, uUSB USB за свързване на УСТРОЙСТВОТО НА HOST.
Стъпка 2: Конфигуриране на хост за изграждане на ядро и изграждане на ядро в HOST
Първо, ще създадем всички директории, преди да продължим. Така:
$ cd ~
$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir верига инструменти $ mkdir db410c-модули
За съжаление, ядрото на Linux, използвано от Linaro (Версия 431), няма поддръжка за USB Ethernet притурка, поради което ядрото на Linux трябва да бъде възстановено за тази конкретна версия. Изтеглете Linaro toolchain, за да изградите и внедрите ядрото на Linux на Dragonboard410c от хост машината x86.
$ wget
$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C./toolchain --strip-components = 1
Сега инсталирайте пакети, необходими за изграждането на ядрото:
$ sudo apt update && sudo apt-get install git build-essential abootimg kernel-package fakeroot libncurses5-dev libssl-dev ccache
Вземете Linux Kernel източник Clone Qualcomm целеви екип Linux хранилище:
$ git клонинг
$ cd ядро $ git checkout origin/release/qcomlt-4.14 -b my-custom-4.14
Сега задайте променливи на компилационната среда:
$ износ ARCH = arm64
$ износ CROSS_COMPILE = $ (pwd) /../ toolchain/bin/aarch64-linux-gnu-
На този етап трябва да добавим модулите към USB Ethernet CDC в ядрото. Правил съм това преди и можете да получите това в края на тази стъпка. Премахнах някои itens, но работи.
Преди да компилирате, моля, коригирайте грешка в ядрото в drivers/mmc/host/sdhci-msm.c, като промените структурата в реда 1150 на:
static const struct sdhci_ops sdhci_msm_ops = {
.reset = sdhci_reset,.set_clock = sdhci_msm_set_clock,.get_min_clock = sdhci_msm_get_min_clock,.get_max_clock = sdhci_msm_get_max_clock,.set_bus_width = sdhci_set_bus_width,.set_uhs_signaling = sdhci_msm_set_uhs_signaling,.voltage_switch = sdhci_msm_voltage_switch, #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS.write_w = sdhci_msm_write_w, # endif};
Декомпресирайте configfile.zip, копирайте.config файла в директорията на ядрото, изградете ядрото, модулите и инсталирайте модули в директория:
$ make -j $ (nproc) Image.gz dtbs
$ make -j $ (nproc) модули $ make modules_install INSTALL_MOD_PATH =../db410c -модули
Справка: 96Boards документация
Стъпка 3: Възстановете Boot.img в HOST
В тази стъпка трябва да отворим initrd образа, да поставим вградените модули в изображението, да конфигурираме системата да стартира тези модули и да възстановим initrd.img с нов командния ред на ядрото, за да стартира отдалечено root файловата система.
И така, първо трябва да изтеглим initrd.img от уебсайта на linaro:
$ cd..
$ mkdir inird_nfs $ cd initrd_nfs $ wget -O ramdisk.img
Сега, след изтегляне, декомпресирайте и извлечете initrd:
$ zcat ramdisk.img | cpio -idmv
В тази директория имаме основната файлова система, използвана от ядрото при инициализация, така че ще конфигурираме USB Ethernet CDC модули и NFS отдалечени параметри като IP на NFS сървъра и ethernet (usb), необходими тук.
Сега нека конфигурираме някои файлове:
conf/initramfs.conf:
МОДУЛИ = най -много
BUSYBOX = автоматичен КОМПРЕС = gzip УСТРОЙСТВО = usb0 NFSROOT = автоматично RUNSIZE = 10%
Създайте директорията init-premiount в скриптовете на директорията/
$ mkdir скриптове/init-premiount
и добавете файловете в тази току -що създадена директория:
ПОРЪЧКА
/scripts/init-premiount/usb "$@"
[-e /conf/param.conf] &&. /conf/param.conf
USB
#!/bin/sh
PREREQ = "" prereqs () {echo "$ PREREQ"} случай $ 1 в # get pre-requisites prereqs) prereqs излизане 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether
Не забравяйте да използвате chmod в usb файл, за да го направите изпълним:
$ chmod +x скриптове/init-premiount/usb
Сега копирайте цялата директория с модулите от db410c-модули (СТЪПКА 2) в lib/модули в initrd:
$ cp -R../db410-modules/lib usr/
Премахнете всички файлове в lib/modules/4.14.96-xxxx-dirty с изключение на всички файлови модули.* И този списък с файлове:
ядро/драйвери/usb/притурка/наследство/g_ether.ko
ядро/драйвери/usb/притурка/наследство/g_mass_storage.ko ядро/драйвери/usb/джаджа/наследство/g_cdc.ko ядро/драйвери/usb/джаджа/наследство/g_serial.ko ядро/драйвери/usb/притурка/функция/usb_f_mass_storage.ko kernel/drivers/usb/gadget/function/usb_f_acm.ko kernel/drivers/usb/gadget/function/u_ether.ko kernel/drivers/usb/gadget/function/usb_f_obex.ko kernel/drivers/usb/gadget/function /usb_f_serial.ko kernel/drivers/usb/gadget/function/usb_f_ecm.ko kernel/drivers/usb/gadget/function/usb_f_rndis.ko kernel/drivers/usb/gadget/function/u_serial.ko kernel/drivers/usb/gadget /function/usb_f_fs.ko ядро/драйвери/usb/притурка/функция/usb_f_ecm_subset.ko ядро/драйвери/usb/джаджа/libcomposite.ko
Тези файлове са всички модули, необходими за стартиране на USB Ethernet CDC.
Накрая препаковайте и компресирайте initrd изображението:
$ find. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img
Най -малкото изображението на ядрото и DTB файлът трябва да бъдат опаковани в зареждащо изображение на Android. Такова изображение може да бъде генерирано с abootimg инструмент.
Нека в директорията на ядрото и използваме командата по -долу, за да изградим изображение и да добавим DTB в компресираното изображение на ядрото:
$ cd../ядро
$ cat arch/$ ARCH/boot/Image.gz arch/$ ARCH/boot/dts/qcom/apq8016-sbc.dtb> Image.gz+dtb
И накрая, генерирайте зареждащото изображение (тук нашият rootfs се намира отдалечен дял в 10.42.0.1)
abootimg --създайте boot -db410c.img -k Image.gz+dtb -r initrd_nfs.img -c pageize = 2048
-c kerneladdr = 0x80008000 -c ramdiskaddr = 0x81000000 -c cmdline = "root =/dev/nfs nfsroot = 10.42.0.1:/srv/nfs/rootfs ip = 10.42.0.2: 10.42.0.1: 10.42.0.1: 255.255.255.0: db410c: usb0: изключен rw rootwait console = tty0 console = ttyMSM0, 115200n8"
Препратки:
- https://access.redhat.com/solutions/24029
- 96Boards Документация
Стъпка 4: Създаване на коренна файлова система в HOST
Сега имаме нов образ за зареждане, за да актуализираме dragonboard 410c. Но имаме нужда от основна файлова система в отдалечения сървър, за да стартираме модули, услуги и приложения. В тази стъпка ще изградим споделена директория в хоста, за да запазим всички тези данни. По този начин, нека изтеглим файлова система rootfs от сайта на linaro със същата версия, използвана в initrd. Така че, върнете се в една директория и изтеглете изображението на rootf на linaro-developer с версия 431.
$ cd..
$ wget
Декомпресирайте този файл
$ разархивирайте dragonboard-410c-sdcard-developer-buster-431.zip
Използвайки този файл, нека напишем цялото изображение в sdcard за достъп до всички дялове и копиране на rootfs файлове. Затова се уверете, че данните от uSDCard са архивирани, защото всичко на SDCard ще бъде загубено.
За да намерите името на вашето SDCard устройство, премахнете SDCard и изпълнете следната команда:
$ lsblk
Запазете в ума си всички разпознати имена на дискове. Сега поставете SDCard, изчакайте малко и изпълнете командата отново:
$ lsblk
Обърнете внимание на новоразпознатия диск. Това ще бъде вашата SDCard. Запомнете вашето име и променете параметъра "of =" за името на вашето SDCard устройство и не забравяйте да използвате името на устройството без дяла, напр.: /dev /mmcblk0
$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img на =/dev/XXX bs = 4M oflag = състояние на синхронизация = напредък
Бележки:
- Изпълнението на тази команда ще отнеме известно време. Бъдете търпеливи и избягвайте намеса в терминала, докато процесът приключи.
- След като SD картата приключи, извадете я от хост компютъра.
Справка: документация на 96 борда
Стъпка 5: Създаване на NFS на сървъра в HOST и копиране на файлове
В този момент имаме зареждащо изображение, което да бъде прехвърлено в dragonboard 410c и SDCard с файлова система rootfs за нашите модули, услуги и приложения. Следващата стъпка е създаване на отдалечена директория за свързване на USB Ethernet DEVICE превключвател с HOST rootfs файлова система. Това може да стане с помощта на пакет от Ubuntu, наречен nfs-kernel-server.
Този пакет инсталира NFS услуга в Ubuntu, позволяваща споделяне на някои директории за някои устройства в мрежата, можем да конфигурираме коя директория ще се използва за всяко устройство, като използваме вашия IP.
Така че, нека инсталираме пакета и го конфигурираме.
$ sudo apt-get install nfs-kernel-server
Услугата NFS стартира автоматично. За да контролирате услугите на NFS, използвайте:
$ sudo услуга nfs-kernel-сървър рестартиране // за рестартиране или използвайте „стоп“или „стартиране“, ако е необходимо.
За да проверите състоянието на услугата NFS от командния ред, използвайте:
Състояние на услугата $ sudo nfs-kernel-server
nfsd работи // Service is Up nfsd не работи // Service is Down
Сега нека да създадем топ директория /srv /nfs и да създадем поддиректория под тази за всяка необходима NFS монтирана файлова система. Тук включваме споделена основна файлова система, за да запазим нашата основна файлова система:
$ sudo mkdir -p /srv /nfs
$ sudo mkdir -p/srv/nfs/rootfs
Сега, NFS сървърът изисква /etc /export да бъде конфигуриран правилно, за да контролира достъпа до всяка директория на NFS файловата система до конкретни хостове. В този случай хостовете се идентифицират по своя IP адрес. Така че за всяка създадена коренна файлова система добавете реда за контрол на експортирането към /etc /export, като коригирате за вашия локален IP адрес и схема за именуване на директория, ако е необходимо. В този урок винаги използваме това:
/srv/nfs/rootfs 10.42.0.2 (rw, sync, no_root_squash, no_subtree_check)
Поставете отново вашата SDCard, монтирайте я и копирайте цялата файлова система rootfs в/srv/nfs/rootfs, рестартирайте NFS услугата, за да актуализирате директорията, като използвате нови копирани файлове.
Освен това се нуждаем от копиране на новите модулни файлове в файловата система на rootfs, защото компилирахме ядрото на стъпка 2. И така, копирайте всички директории в ~/db410c-modules/в/srv/nfs/rootfs.
$ sudo cp -R ~/db410c -модули/*/srv/nfs/rootfs/
Уверете се, че тези директории са видими от услугата NFS. Или:
$ sudo exportfs -a
Справка: TFTP/NFS коренова файлова система
Стъпка 6: Актуализиране на зареждащия образ на Dragonboard 410c и конфигуриране на мрежови интерфейси
Направихме всички стъпки по -рано за внедряване на отдалечена файлова система rootfs, сега трябва да актуализираме изображението за зареждане вътре в dragonboard 410c, за това свържете вашия USB кабел към компютър и към uUSB конектор на dragonboard. Затова се уверете, че fastboot е настроен на хост компютър, ако не е инсталиран с помощта на:
$ sudo apt инсталирайте fastboot
Сега, за да актуализирате изображението, стартирайте de dragonboard в режим на бързо зареждане, като следвате тези стъпки:
- Натиснете и задръжте бутона Vol (-) на DragonBoard 410c, това е бутонът S4. DragonBoard ™ 410c все още НЕ трябва да бъде включен
- Докато държите бутона Vol (-), включете DragonBoard 410c, като го включите
- След като DragonBoard 410c е включен в захранването, отпуснете бутона за Vol (-).
- Изчакайте около 20 секунди.
- Бордът трябва да се зареди в режим на бързо зареждане.
От прозореца на терминала на свързаната хост машина изпълнете следните команди:
$ sudo устройства за бързо зареждане
Обикновено ще се показва по -долу
de82318 бързо зареждане
В този момент трябва да бъдете свързани към вашия DragonBoard 410c с кабел USB към microUSB. Вашият DragonBoard 410c трябва да бъде стартиран в режим на бързо зареждане и готов да бъде прехвърлен със съответните изображения. Нека актуализираме изображението за зареждане с нашето изображение за зареждане:
$ sudo fastboot флаш зареждане ~/db410remoteroot/kernel/initrd_nfs.img
И рестартирайте дъската
$ sudo fastboot рестартиране
Сега вашият HOST ще открие нов интерфейс с име usb0, но все още няма IP. Така че, добавете статичен IP адрес към този интерфейс, като използвате:
$ sudo ifconfig usb0 10.42.0.1 мрежова маска 255.255.255.0 нагоре
Или въведете в „Конфигурация“на HOST, в елемента „мрежа“, като зададете на USB Ethernet статичен IP адрес към този интерфейс.
Сега рестартирайте отново драконборда и проверете стартирането на системата, опитвайки се да се свържете с помощта на ssh:
$ ssh [email protected]
Препратки:
- Документация за 96 борда
- HowtoForge - Точка 6
Препоръчано:
Arduino като ISP -- Записване на шестнадесетичен файл в AVR -- Предпазител в AVR -- Arduino като програмист: 10 стъпки

Arduino като ISP || Записване на шестнадесетичен файл в AVR || Предпазител в AVR || Arduino като програмист: ……………………… Моля АБОНИРАЙТЕ се за канала ми в YouTube за още видеоклипове …….. Тази статия е всичко за arduino като isp. Ако искате да качите шестнадесетичен файл или ако искате да настроите предпазителя си в AVR, няма нужда да купувате програмист, можете да направите
Visuino Как да използвате бутон като вход за управление на неща като LED: 6 стъпки

Visuino Как да използвате бутон като вход за управление на неща като LED: В този урок ще се научим как да включваме и изключваме LED чрез обикновен бутон и Visuino. Гледайте демонстрационен видеоклип
Как да използвате Wiimote като компютърна мишка Използвайки свещи като сензор !!: 3 стъпки

Как да използвате Wiimote като компютърна мишка, използвайки свещи като сензор !!: Това ръководство ще ви покаже как да свържете вашето Wii Remote (Wiimote) към вашия компютър и да го използвате като мишка
Бърз и лесен тазер, за да изглежда като USB ключ: 4 стъпки

Бърз и лесен Tazer, Направете да изглежда като USB Dongle: Това е прост, бърз и лесен начин да направите, който е предназначен да изглежда като USB ключ. Наистина е лесно да се направи. Изисквания: LighterUSB Dongle (Всеки ще е подходящ, използвах счупен) 3 x винтовеA HammerA отвертка Предупреждение!: Всичко, което правите с този
Изграждане на система за отдалечена камера: 5 стъпки

Изграждане на система за отдалечена камера: Работя за строителна компания и търсихме решение за мобилна камера. Това е, което измислих и работи чудесно. Можем да го преместваме лесно и в повечето области мобилната широколентова връзка получава подходящо приемане, за да работи добре