
Мазмуну:
- 1 -кадам: Талаптар
- 2 -кадам: Hostту ядро куруу үчүн хостту конфигурациялоо жана HOSTто ядро куруу
- 3 -кадам: HOSTто Boot.img кайра
- 4 -кадам: HOSTто Root Files системасын түзүү
- 5 -кадам: HOSTто Server NFSти түзүү жана файлдарды көчүрүү
- 6 -кадам: Dragonboard 410c жүктөө сүрөтүн жаңыртуу жана тармак интерфейстерин конфигурациялоо
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:51

Максаттар:
- USB Ethernet CDC гаджетинин колдоосун киргизүү үчүн инструменттер чынжырын орнотуп, ядроду кайра түзүңүз;
- USB Ethernet CDC жүктөө үчүн Linaroдан boot.img кайра жаратыңыз;
- Тамыр файл тутумун жайгаштыруу үчүн NFS серверин түзүү;
- DEVICE жана HOST ичиндеги IP конфигурациясы.
1 -кадам: Талаптар
Сизге төмөнкү белгилер керек болот:
- A DragonBoard ™ 410c (бул жерде DEVICE деп аталат);
- Ubuntu 16.04.3 колдонулган PC интернет байланышы жана SDCard уячасы менен жаңыртылган (бул жерде HOST деп аталат);
- Linaro -иштеп чыгуучу 431 версиясынын таза орнотулушу - Шилтеме: Snapshot Linaro Debian v431
- HDMI монитор;
- USB клавиатурасы;
- 8 Гб SDCard;
- A USB кабели, uUSB USB HOST боюнча DEVICE туташтыруу үчүн.
2 -кадам: Hostту ядро куруу үчүн хостту конфигурациялоо жана HOSTто ядро куруу
Биринчиден, биз улантуу үчүн мурун бардык каталогдорду түзөбүз. Ошентип:
$ cd ~
$ mkdir db410remoteroot $ cd db410remoteroot $ mkdir инструменти $ mkdir db410c-модулдары
Тилекке каршы, Linaro (431 -версия) колдонгон Linux ядросу USB Ethernet гаджетин колдобойт, ошого байланыштуу Linux ядросу ушул конкреттүү версия үчүн кайра түзүлүшү керек. X86 хост машинасынан Dragonboard410cке Linux ядросун куруу жана жайылтуу үчүн Linaro инструментин жүктөп алыңыз.
$ wget
$ tar -xf gcc-*-x86_64_aarch64-linux-gnu.tar.xz -C./toolchain --strip-components = 1
Эми ядро куруу үчүн керектүү пакеттерди орнотуңуз:
$ sudo apt update && sudo apt-get install build-essential abootimg kernel-package fakeroot libncurses5-dev libssl-dev ccache
Linux Kernel булагын алыңыз Clone Qualcomm десанттык командасы Linux репозиторийи:
$ git клону
$ cd ядро $ git checkout check/release/qcomlt-4.14 -b my-custom-4.14
Эми, компиляция чөйрөсүнүн өзгөрмөлөрүн коюңуз:
$ экспорт ARCH = arm64
$ export CROSS_COMPILE = $ (pwd) /../ toolchain/bin/aarch64-linux-gnu-
Бул жерде биз модулдарды ядродогу USB Ethernet CDCге кошушубуз керек. Мен муну мурун эле кылганмын жана сиз бул кадамдын аягында ала аласыз. Мен кээ бир нерселерди алып салдым, бирок ал иштейт.
Компиляциядан мурун, драйвердеги ядро катасын оңдоңуз/mmc/host/sdhci-msm.c, 1150-саптагы структураны өзгөртүп:
статикалык структура 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 Documentation
3 -кадам: HOSTто Boot.img кайра
Бул кадамда биз initrd сүрөтүн ачышыбыз керек, сүрөттүн ичине курулган модулдарды коюшубуз керек, системаны ошол модулдарды баштоо үчүн конфигурациялоо керек жана rootrd файл тутумун алыстан жүктөө үчүн initrd.img файлын жаңы ядро буйругу менен калыбына келтиришибиз керек.
Ошентип, биринчиден, linaro веб -сайтынан initrd.img жүктөп алышыбыз керек:
$ cd..
$ mkdir inird_nfs $ cd initrd_nfs $ wget -O ramdisk.img
Эми, жүктөп алгандан кийин, ачыңыз жана initrdди чыгарыңыз:
$ zcat ramdisk.img | cpio -idmv
Бул каталогдо бизде ядро тарабынан инициализацияда колдонулган тамыр файл тутуму бар, ошондуктан биз USB Ethernet CDC модулдарын жана NFS серверинин IP жана ethernet (usb) сыяктуу алыскы параметрлерин конфигурациялайбыз.
Эми кээ бир файлдарды конфигурациялайбыз:
conf/initramfs.conf:
МОДУЛДАР = эң
BUSYBOX = авто КЫШУУ = gzip DEVICE = usb0 NFSROOT = авто RUNSIZE = 10%
Каталог скрипттеринде init-premount каталогун түзүңүз/
$ mkdir скрипттери/init-premount
жана бул жаңы түзүлгөн каталогго файлдарды кошуңуз:
ЗАКАЗ
/скрипттер/init-premount/usb "$@"
[-e /conf/param.conf] &&. /conf/param.conf
usb
#!/bin/sh
PREREQ = "" prereqs () {echo "$ PREREQ"} case $ 1 in # in pre-Requestites prereqs) преректтер чыгуу 0;; esac modprobe usb_f_ecm modprobe libcomposite modprobe usb_f_rndis modprobe g_ether
Аны аткаруу үчүн chmod файлын usb файлында колдонууну унутпаңыз:
$ chmod +x скрипттери/init-premount/usb
Эми, бардык каталогду db410c-модулдарынан (2-КАДАМ) модулдары менен либр/модулдарга initrd көчүрүңүз:
$ cp -R../db410-modules/lib usr/
Lib/modules/4.14.96-xxxx-kir файлдар модулунан башка бардык файлдарды алып салыңыз.* Жана ал файл тизмеси:
ядро/драйверлер/usb/гаджет/мурас/g_ether.ko
ядро/драйверлер/usb/gadget/legacy/g_mass_storage.ko ядро/драйверлер/usb/гаджет/мурас/g_cdc.ko ядро/драйверлер/usb/gadget/legacy/g_serial.ko ядро/драйверлер/usb/гаджет/функция/usb_f_mass_storage.ko ядро/драйверлер/usb/гаджет/функция/usb_f_acm.ko ядро/драйверлер/usb/гаджет/функция/u_ether.ko ядро/драйверлер/usb/гаджет/функция/usb_f_obex.ko ядро/драйверлер/usb/гаджет/функция /usb_f_serial.ko ядро/драйверлер/usb/гаджет/функция/usb_f_ecm.ko ядро/драйверлер/usb/гаджет/функция/usb_f_rndis.ko ядро/драйверлер/usb/гаджет/функция/u_serial.ko ядро/драйверлер/usb/гаджет /function/usb_f_fs.ko ядро/драйверлер/usb/гаджет/функция/usb_f_ecm_subset.ko ядро/драйверлер/usb/гаджет/libcomposite.ko
Бул файлдар USB Ethernet CDC баштоо үчүн зарыл болгон бардык модулдар.
Акыры, баштапкы сүрөттү кайра таңып, кысыңыз:
$ табуу. | cpio -o -H newc | gzip -9>../kernel/initrd_nfs.img
Жок дегенде, ядро сүрөтү жана DTB файлы Android жүктөөчү сүрөтүнө топтолушу керек. Мындай сүрөттү abootimg куралы менен түзсө болот.
Келгиле, ядро каталогуна кирип, сүрөттү түзүү жана кысылган ядро сүрөтүнө DTB кошуу үчүн төмөнкү буйрукту колдонолу:
$ cd../kernel
$ 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 pagesize = 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 консолу = tty0 консолу = ttyMSM0, 115200n8"
Шилтемелер:
- https://access.redhat.com/solutions/24029
- 96Boards Documentation
4 -кадам: HOSTто Root Files системасын түзүү
Эми бизде ажыдаар тактаны 410c жаңыртуу үчүн жаңы жүктөөчү сүрөт пайда болду. Бирок модулдарды, кызматтарды жана тиркемелерди жүктөө үчүн бизге алыскы сервердеги тамыр файл системасы керек. Бул кадамда, биз бул маалыматтардын бардыгын сактоо үчүн хостко бөлүшүлгөн каталог курабыз. Ошентип, initrdде колдонулган версиясы бар линаро сайтынан rootfs файл тутумун жүктөп алалы. Ошентип, бир каталогго кайтып, 431 версиясы менен linaro-developer rootfs сүрөтүн жүктөп алыңыз.
$ cd..
$ wget
Бул файлды ачыңыз
$ unzip dragonboard-410c-sdcard-developer-buster-431.zip
Бул файлды колдонуп, бардык бөлүктөргө кирүү жана rootfs файлдарын көчүрүү үчүн sdcardга бардык сүрөттү жазалы. Ошентип, uSDCardдагы маалыматтын камдык көчүрмөсүн камсыз кылыңыз, анткени SDCardдагы бардык нерселер жоголот.
SDCard түзмөгүңүздүн атын табуу үчүн, SDCardды алып салыңыз жана төмөнкү буйрукту аткарыңыз:
$ lsblk
Бардык таанылган диск аттарын эсиңизде сактаңыз. Эми SDCard салыңыз, бир аз күтө туруңуз жана буйрукту кайра аткарыңыз:
$ lsblk
Жаңы таанылган дискке көңүл буруңуз. Бул сиздин SDCard болот. Атыңызды унутпаңыз жана SDCard түзмөгүңүздүн атынын "of =" параметрин өзгөртүңүз жана түзмөктүн атын бөлүмсүз колдонуңуз, p.e.: /dev /mmcblk0
$ sudo dd if = dragonboard-410c-sdcard-developer-buster-431.img of//dev/XXX bs = 4M oflag = sync status = progress
Эскертүүлөр:
- Бул буйрукту аткаруу үчүн бир аз убакыт талап кылынат. Чыдамдуу болуңуз жана процесс аяктаганга чейин терминалды бузуудан алыс болуңуз.
- SD карта жаркырап бүткөндөн кийин, башкы компьютерден алып салыңыз.
Шилтеме: 96 доска документтери
5 -кадам: HOSTто Server NFSти түзүү жана файлдарды көчүрүү
Бул жерде бизде жүктөөчү сүрөт бар, ажыдаарга 410c жана SDCard, биздин модулдар, кызматтар жана тиркемелер үчүн rootfs файл тутуму. Кийинки кадам - USB Ethernet DEVICE которгучун HOST rootfs файл тутуму менен туташтыруу үчүн алыскы каталогду түзүү. Бул Ubuntuдан nfs-kernel-server деген пакеттин жардамы менен жасалышы мүмкүн.
Бул пакет NFS кызматын Ubuntuго орнотуп, тармактын кээ бир түзмөктөрү үчүн кээ бир каталогдорду бөлүшүүгө мүмкүндүк берет, биз сиздин IPди колдонуу менен ар бир түзмөк үчүн кайсы каталог колдонуларын конфигурациялай алабыз.
Ошентип, келгиле, пакетти орнотуп, конфигурациялайбыз.
$ sudo apt-get nfs-kernel-server орнотуу
NFS кызматы автоматтык түрдө башталат. NFS кызматтарын колдонуу үчүн:
$ sudo кызматы nfs-kernel-server restart // кайра баштоо үчүн, же керек болсо 'stop' же 'start' колдонуңуз.
NFS кызматынын статусун буйрук сабынан текшерүү үчүн:
$ sudo кызматы nfs-ядро-сервер статусу
nfsd иштеп жатат // Кызмат өйдө турат nfsd иштебейт // Кызмат иштебейт
Эми, келгиле, жогорку каталогду /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/to/srv/nfs/rootfsке көчүрүңүз.
$ sudo cp -R ~/db410c -modules/*/srv/nfs/rootfs/
Бул каталогдор NFS кызматы тарабынан көрүнүп турушу керек. Же:
$ sudo exportfs -a
Шилтеме: TFTP/NFS Root Filesystem
6 -кадам: Dragonboard 410c жүктөө сүрөтүн жаңыртуу жана тармак интерфейстерин конфигурациялоо
Биз алыскы rootfs файл тутумун ишке ашыруу үчүн бардык кадамдарды жасадык, эми биз dragonboard 410c ичиндеги жүктөөчү сүрөттү жаңыртуубуз керек, ал үчүн USB кабелиңизди компьютерге жана ажыдаардын uUSB туташтыргычына туташтырыңыз. Ошентип, fastboot башкы компьютерде орнотулганын текшериңиз, эгерде аны орнотпосоңуз:
$ sudo apt fastboot орнотуу
Эми сүрөттү жаңыртуу үчүн, dragonboardду fastboot режимине баштаңыз, бул кадамдарды аткарыңыз:
- DragonBoard 410c боюнча Vol (-) баскычын басып туруңуз, бул S4 баскычы. DragonBoard ™ 410c дагы эле күйгүзүлбөшү керек
- Vol (-) баскычын кармап турганда, DragonBoard 410c'ду туташтырып күйгүзүңүз
- DragonBoard 410c электр кубатына туташтырылганда, Vol (-) баскычын басып коюңуз.
- Болжол менен 20 секунд күтө туруңуз.
- Board fastboot режимине жүктөлүшү керек.
Туташкан хост машина терминалынын терезесинен төмөнкү буйруктарды аткарыңыз:
$ sudo fastboot түзмөктөрү
Адатта, ал төмөндөгүдөй көрсөтүлөт
de82318 fastboot
Бул жерде сиз DragonBoard 410cке USB менен microUSB кабели аркылуу туташышыңыз керек. Сиздин DragonBoard 410c тез жүктөө режимине жүктөлүп, тийиштүү сүрөттөр менен жаркыроого даяр болушу керек. Жүктөө сүрөтүн өзүбүздүн жүктөө сүрөтүбүз менен жаңыртып көрөлү:
$ sudo fastboot flash boot ~/db410remoteroot/kernel/initrd_nfs.img
Жана, такта кайра
$ sudo fastboot кайра жүктөө
Эми, сиздин ХОСТ usb0 аттуу жаңы интерфейсти аныктайт, бирок азырынча IPи жок. Ошентип, бул интерфейске статикалык IP кошуңуз:
$ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 чейин
Же HOSTтун "Тарам" бөлүмүнө "Ethernet" пунктуна кирип, USB Ethernetти ошол интерфейске статикалык IP катары коюңуз.
Эми, ажыдаар тактаны кайра өчүрүп күйгүзүңүз жана ssh аркылуу туташууга аракет кылып, тутумдун башталышын текшериңиз:
$ ssh [email protected]
Шилтемелер:
- 96 доска документтери
- HowtoForge - пункт 6
Сунушталууда:
Ардуино ISP катары -- AVRде Hex файлын жазуу -- AVRдеги сактандыруучу -- Ардуино программист катары: 10 кадам

Ардуино ISP катары || AVRде Hex файлын жазуу || AVRдеги сактандыруучу || Ардуино программист катары: ……………………… Сураныч, дагы видеолор үчүн менин YouTube каналыма ЖАЗЫЛЫҢЫЗ …….. Бул макала isp сыяктуу ардуино жөнүндө. Эгерде сиз он алтылык файлды жүктөгүңүз келсе же AVRде сактандыргычты орноткуңуз келсе, анда программистти сатып алуунун кажети жок, сиз жасай аласыз
Millis () жана PfodAppты колдонуу менен Arduino Дата/Убакыт Чийүү/Кирүү: 11 кадам

Millis () жана PfodAppты колдонуу менен Arduino Date/Time Plotting/Logging: Ардуино же Android программалоо талап кылынбайт. RTC жана GPS модулдары да колдоого алынган. Убакыт алкактары үчүн автоматтык оңдоо, RTC дрейф жана GPS секирик секунддары киришүү Бул окуу куралы сиздин Arduino millisти кантип колдонууну көрсөтөт ( ) маалыматтарды белгилөө үчүн убакыт белгилери
PSPди компьютердик джойстик катары колдонуу жана компьютериңизди PSP менен башкаруу: 5 кадам (сүрөттөр менен)

PSPди компьютердик джойстик катары колдонуу жана андан кийин компьютериңизди PSP менен башкаруу: Сиз PSP homebrew менен көптөгөн сонун нерселерди жасай аласыз, жана бул нускамада мен сизге PSPти оюндарды ойноо үчүн джойстик катары кантип колдонууну үйрөтөм. джойстикти чычкан катары колдонууга мүмкүнчүлүк берген программа. Мына апа
Шамдарды сенсор катары колдонуп, Wiimoteту компьютердик чычкан катары кантип колдонуу керек?: 3 кадам

Шамдарды сенсор катары колдонуп, Wiimoteту компьютердик чычкан катары кантип колдонуу керек !!: Бул колдонмо Wii Remote (Wiimote) компьютериңизге кантип туташтырып, чычкан катары колдонууну көрсөтөт
Электрондук ванна таразасын жеткирүү системасына <$ 1: 8 кадамга айлантыңыз (сүрөттөр менен)

Электрондук ванна таразасын жеткирүү шкаласына айландырыңыз <$ 1 :, Менин чакан бизнесимде орто жана чоң нерселерди жана коробкаларды жеткирүү үчүн бир кабат таразага тартышым керек болчу. Өнөр жай үлгүсү үчүн өтө көп төлөөнүн ордуна, мен санарип ванна таразасын колдондум. Мен аны тактыкка жетиштүү жакын деп таптым