
рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╡рд╛рдпрд░реНрдб рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЙрдкрдХрд░рдг рд╕реЗрд▓реБрд▓рд░ рдХрд╡рд░реЗрдЬ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреАрдПрд╕рдПрдо / 3 рдЬреА / 4 рдЬреА рдореЛрдбреЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдиреЛрдЯ рдпреЛрдХреНрдЯреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЬреАрдПрд╕рдПрдо / 3 рдЬреА / 4 рдЬреА рдореЙрдбреЗрдо рдФрд░ рдкреАрдкреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕рд╛рдордЧреНрд░реА
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рд╣рдо рдЙрдмрдВрдЯреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд╕реНрдХрд░рдг THUD 2.6.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреАрд╕реА рдкрд░ Ubuntu 18.04 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ ред
BeagleBone Black Rev. C LTE- Quectel EC21-E. UMTS<E EVB UMTS LTE Quectel. , , . 1.

1 тАФ
, 50 :
- Git 1.8.3.1 ;
- Tar 1.27 ;
- Python 3.4.0 .
:
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo \
gcc-multilib build-essential chrpath socat \
cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping libsdl1.2-dev xterm
Yocto Project . Yocto Project Quick Build.
, Poky
- . habr-yocto-lte
:
~$ mkdir habr-yocto-lte
habr-yocto-lte
git
:
~$ cd habr-yocto-lte
~/habr-yocto-lte$ git init
git
-, , Poky
meta-ti
:
~/habr-yocto-lte$ git submodule add -b thud git://git.yoctoproject.org/poky.git
~/habr-yocto-lte$ git submodule add -b thud git://git.yoctoproject.org/meta-ti
Poky
, , meta-ti
тАУ , , Texas Instruments. , Poky
- Yocto Project Overview and Concepts Manual.
oe-init-build-env
:
~/habr-yocto-lte$ touch oe-init-build-env
~/habr-yocto-lte$ chmod +x oe-init-build-env
:
#!/bin/sh
source $(pwd)/poky/oe-init-build-env build
oe-init-build-env
, . :
~/habr-yocto-lte$ source ./oe-init-build-env
~/habr-yocto-lte
build
, , :
You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86'
, , ┬л┬╗:
meta-ti
meta-poky-bsp
. BBLAYERS
, ~/habr-yocto-lte/build/conf/bblayers.conf
, :
BBLAYERS ?= " \
/home/alex/habr/poky/meta \
/home/alex/habr/poky/meta-poky \
/home/alex/habr/meta-ti \
"
- ,
beaglebone
. , , . ipk
. sysvinit
systemd
. , ~/habr-yocto-lte/build/conf/local.conf
:
MACHINE = "beaglebone"
INHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"
PACKAGE_CLASSES = "package_ipk"
CORE_IMAGE_EXTRA_INSTALL += " kernel-modules"
DISTRO_FEATURES_append = " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
:
~/habr-yocto-lte/build$ bitbake тАУk core-image-base
, 4 :). .
~/habr-yocto-lte/build/tmp/deploy/images/beaglebone
PPP
, , , LTE- Quectel EC21-E, .. Linux. PPP Linux, ppp
, ┬л┬╗ bitbake
pppd
chat
, ppp
.
:
~/habr-yocto-lte/build$ bitbake virtual/kernel -c menuconfig
menuconfig
:
Device drivers --->
[*] Network device support --->
<M> PPP (point-to-point protocol) support
<M> PPP BSD-Compress compression
<M> PPP Deflate compression
<*> PPP filtering
<M> PPP MPPE compression (encryption)
<*> PPP multilink support
<M> PPP over Ethernet
<M> PPP support for async serial ports
<M> PPP support for sync tty ports
menuconfig
. , , . , defconfig
recipes-kernel
.
defconfig
:
~/habr-yocto-lte/build$ bitbake virtual/kernel -c savedefconfig
defconfig
~/habr-yocto-lte/build/tmp/work/beaglebone-poky-linux-gnueabi/linux-ti-staging/4.19.94+gitAUTOINC+5a23bc00e0-r22a/build
, , -. meta-habr
:
~/habr-yocto-lte/build$ bitbake-layers create-layer ~/habr-yocto-lte/meta-habr
~/habr-yocto-lte
meta-habr
тАУ -. recipes-example
, , , - bblayers.conf
:
~/habr-yocto-lte/build$ rm -r ~/ habr-yocto-lte/meta-habr/recipes-example/
~/habr-yocto-lte/build$ bitbake-layers add-layer ~/habr-yocto-lte/meta-habr
Linux. :
~/habr-yocto-lte$ mkdir тАУ p meta-habr/recipes-kernel/linux/linux-ti-staging/beaglebone
~/habr-yocto-lte$ touch meta-habr/recipes-kernel/linux/linux-ti-staging_%.bbappend
defconfig
~/habr-yocto-lte/meta-habr/recipes-kernel/linux/linux-ti-staging/beaglebone
~/habr-yocto-lte$ cp ~/habr-yocto-lte/build/tmp/work/beaglebone-poky-linux-gnueabi/linux-ti-staging/4.19.94+gitAUTOINC+5a23bc00e0-r22a/build/defconfig meta-habr/recipes-kernel/linux/linux-ti-staging/beaglebone
linux-ti-staging_%.bbappend
:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://defconfig"
, defconfig
. , PPP :
~/habr-yocto-lte/build$ bitbake тАУk core-image-base
~/habr-yocto-lte/build$ cat buildhistory/images/beaglebone/glibc/core-image-base/installed-packages.txt | grep "ppp"
--------------------------------------------------------
kernel-module-ppp-async-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-deflate-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-generic-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-mppe-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
kernel-module-pppoe-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
kernel-module-pppox-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-synctty-4.19.94-g5a23bc00e0_4.19.94+git0+5a23bc00e0-r22a_beaglebone.ipk
ppp
IMAGE_INSTALL_append
. local.conf
:
IMAGE_INSTALL_append = " ppp"
, ppp
:
~/habr-yocto-lte/build$ bitbake тАУk core-image-base
~/habr-yocto-lte/build$ cat buildhistory/images/beaglebone/glibc/core-image-base/installed-packages.txt | grep "ppp_"
--------------------------------------------------------
ppp_2.4.7-r0_beaglebone.ipk
LTE-. pppd
chat
, ppp
, . ppp
.
pppd chat
habrppp
, habr-chat-connect
habr-chat-disconnect
:
- habrppp
/dev/ttyUSB3
921600
user "beeline"
password "beeline"
connect 'chat -s -v -f /etc/ppp/peers/habr-chat-connect'
disconnect 'chat -s -v -f /etc/ppp/peers/habr-chat-disconnect'
hide-password
noauth
debug
defaultroute
noipdefault
persist
- habr-chat-connect
ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
TIMEOUT 30
"" AT
OK ATE0
OK ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2
OK AT+CGDCONT=1,"IP","static.beeline.ru",,0,0
OK ATD*99#
CONNECT ""
- habr-chat-disconnect
ABORT "ERROR"
ABORT "NO DIALTONE"
"" +++
"" +++
"" +++
.
LTE- Quectel EC21-E :
ttyUSB0
тАУttyUSB1
тАУ GPS NMEAttyUSB2
тАУ AT-ttyUSB3
тАУ PPP
USB-, , , , . , habrppp
PPP /dev/ttyUSB3
.
user
password
habrppp
, APN
AT+CGDCONT
habr-chat-connect
, .
ppp
-. ppp
:
~/habr-yocto-lte$ mkdir тАУp meta-habr/recipes-connectivity/ppp/ppp/beaglebone
~/habr-yocto-lte$ touch meta-habr/recipes-connectivity/ppp/ppp_%.bbappend
, ~/habr-yocto-lte/meta-habr/recipes-connectivity/ppp/ppp/beaglebone
ppp_%.bbappend
:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://habrppp \
file://habr-chat-connect \
file://habr-chat-disconnect \
file://20-habr-modem.rules \
"
do_install_append () {
install -m 0755 ${WORKDIR}/habrppp ${D}${sysconfdir}/ppp/peers/habrppp
install -m 0755 ${WORKDIR}/habr-chat-connect ${D}${sysconfdir}/ppp/peers/habr-chat-connect
install -m 0755 ${WORKDIR}/habr-chat-disconnect ${D}${sysconfdir}/ppp/peers/habr-chat-disconnect
mkdir -p ${D}${sysconfdir}/udev/rules.d
install -m 0755 ${WORKDIR}/20-habr-modem.rules ${D}${sysconfdir}/udev/rules.d/20-habr-modem.rules
}
, , , 20-habr-modem.rules
. udev
, ttyUSB3
pppd
. USB-. 20-habr-modem.rules
:
SUBSYSTEM=="tty", KERNEL=="ttyUSB3", TAG+="systemd", ENV{SYSTEMD_WANTS}="ppp@habrppp.service"
, balenaEtcher microSD . :
~$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ppp0 Link encap:Point-to-Point Protocol
inet addr:XXX.XXX.XXX.XXX P-t-P:XXX.XXX.XXX.XXX Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:432 (432.0 B) TX bytes:611 (611.0 B)
PPP , pon
poff
. :
~$ pon habrppp
:
~$ poff habrppp
рдкрд░рд┐рдпреЛрдЬрдирд╛ https://gitlab.com/amamaev/habr-yocto-lte рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
~$ git clone --recursive https://gitlab.com/amamaev/habr-yocto-lte.git
Bblayers.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛