Cleiton Bueno
● B2OPEN SYSTEMS
● ATUAMOS COM CONSULTORIA, TREINAMENTO E PROJETOS COM
LINUX EMBARCADO E SOFTWARES
● PUBLICAMOS CONTEÚDO NO PORTAL EMBARCADOS E
ATUALMENTE PELA B2OPEN
Linux Embarcado
Linux Embarcado
• Roteadores
• SmartTV - Ex. LG WebOS
• Set-Top Box
• Relógios
• Tesla
• SpaceX
• Automotive Grade Linux
• Equipamentos Médicos
• IHM’s Industriais
• Totens
• Equipamentos de ITS
• Automação Residencial
• Cameras | DVR’s
• Rifle
• Robôs
• etc...
O poderoso Kernel Linux
O Kernel é o regente de uma orquestra que seria a Distribuição Linux
onde cada instrumento é um software/serviço.
O poderoso Kernel Linux
Navegando dentro do
Kernel Linux
Wifi/Ethernet/3G/VPN
Wifi/Ethernet/3G/VPN
Administrar conexões e interface de rede seja Ethernet ou Wireless é
com o NetworkManager.
Wifi/Ethernet/3G/VPN
$ nmcli device
DEVICE TYPE STATE CONNECTION
wlp2s0 wifi connected AP-B2OpenPub
enp1s0 ethernet unavailable --
lo loopback unmanaged --
Visualizando
informações das
interfaces com nmcli
Wifi/Ethernet/3G/VPN
$ nmcli device wifi
* SSID MODE CHAN RATE SIGNAL BARS SECURITY
* AP-B2OpenPub Infra 1054 Mbit/s 87 **** WPA1 WPA2
ServClean Infra 9 54 Mbit/s 80 *** WPA1
VIVO-B14C Infra 11 54 Mbit/s 24 * WPA1 WPA2
Visualizando redes
wireless disponíveis com
nmcli
Wifi/Ethernet/3G/VPN
$ nmcli device wifi
* SSID MODE CHAN RATE SIGNAL BARS SECURITY
* AP-B2OpenPub Infra 1054 Mbit/s 87 **** WPA1 WPA2
ServClean Infra 9 54 Mbit/s 80 *** WPA1
VIVO-B14C Infra 11 54 Mbit/s 24 * WPA1 WPA2
Visualizando redes
wireless disponíveis com
nmcli
Wifi/Ethernet/3G/VPN
$ nmcli device wifi connect "NOME REDE" password "SENHA-REDE"
Conectando em uma
rede wireless com nmcli
Wifi/Ethernet/3G/VPN
# dbus-send --print-reply --system 
--dest=org.freedesktop.NetworkManager 
/org/freedesktop/NetworkManager 
org.freedesktop.NetworkManager.GetDevices
method return time=1602011270.628625 sender=:1.10 ->
destination=:1.120 serial=8531 reply_serial=2
array [
object path "/org/freedesktop/NetworkManager/Devices/0"
object path "/org/freedesktop/NetworkManager/Devices/1"
object path "/org/freedesktop/NetworkManager/Devices/2"
]
Sua aplicação pode
obter e enviar
informações via DBUS
para NetworkManager
Bluetooth
• Bluez - É a pilha de protocolo Bluetooth oficial do Linux
• GAP (Generic Access Profile)
• GATT (Generic Attribute Profile
• 6LowPAN
• HoG (HID Over GATT)
Ferramentas: btmon(HCI Tracer), bluetoothctl(CLI Bluetooth), hcitool(administrar e
configurar interfaces)
Bluetooth
$ hciconfig -a
hci0: Type: BR/EDR Bus: USB
BD Address: 5C:C9:D3:XX:XX:XX ACL MTU: 1024:8 SCO MTU: 50:8
UP RUNNING
RX bytes:1202 acl:0 sco:0 events:75 errors:0
TX bytes:4264 acl:0 sco:0 commands:69 errors:0
Features: 0xff 0xfe 0x8f 0xfe 0xd8 0x3f 0x5b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF
Link mode: SLAVE ACCEPT
Name: 'b2-nb2'
Class: 0x10010c
Service Classes: Object Transfer
Device Class: Computer, Laptop
HCI Version: 4.1 (0x7) Revision: 0x0
LMP Version: 4.1 (0x7) Subversion: 0x25a
Manufacturer: Qualcomm (29)
Obtendo a interface
Bluetooth e suas
configurações
Bluetooth
$ hcitool -i hci0 lescan
LE Scan ...
72:23:C8:XX:XX:XX (unknown)
$Buscando por
dispositivos BLE
Aplicações Gráficas
Aplicações Gráficas
Framework Qt5 TotalCross LVGL
Aplicações Gráficas
Multiplataforma
Linguagem Oficial: C++ e
Python
Linux Embarcado:
LinuxFB, X11, Wayland e
EGLFS
Aplicações Gráficas
Multiplataforma
Linguagem Oficial: Java
Linux Embarcado: X11,
Wayland e FrameBuffer
Aplicações Gráficas
Aplicações Gráficas
Linguagem Oficial: C e
C++*
Linux Embarcado:
FrameBuffer
OTA - Over-The-Air
OTA - Over-The-Air
Assimétrico Simétrico
BOOTLOADER BOOTLOADER
OS-A
(ativo)
OS-B
(inativo)
DADOS
PERSISTENTE
OS
DADOS
PERSISTENTE
A B C
OTA - Over-The-Air
OTA - Over-The-Air
• SWUpdate
• OStree
• UpdateHub - UHU
• Mender
• RAUC
• Here OTA
• Torizon - Toradex
Fail-safe
roll-back
IPC
IPC
• Sockets
• Shared Memory
• Pipes
• Signals - Kill -l
• DBUS - Ex. Bluez(Bluetooth) e NetworkManager
• ZeroMQ - https://zeromq.org/
Contra quantos?
• GPSd - Serviço que monitora um ou mais GPS’s e disponibiliza as
informações na porta 2947/TCP
• CAN e can-utils - SocketCAN, VCAN, J1939 e pacotes de comandos
com can-utils
• libmodbus - Bibilioteca em C para ModBUS RTU e TCP
• libgpiod - Kernel >=4.8 o gpiod é um dispositivo de caractere que
disponibiliza um API via UserSpace, atualmente C, C++ e Python
Contra quantos?
• IIO - Industrial IO abstraindo ADC’s, Sensores I2C e SPI ao nivel
user-space para o usuário
• UDev - Gerenciador de Dispositivos sucessor do HotPlug,
manipulando eventos e executando ações
• Cron e Systemd Timers - Tarefas Agendadas
Referências
https://www.zdnet.com/article/from-earth-to-orbit-with-linux-and-spa
cex/
https://www.reddit.com/user/spacexfsw/
https://electrek.co/2018/05/19/tesla-releases-softwar-open-source-lic
ences/?utm_campaign=Built%20with%20Qt%202018&utm_content=7
1800933&utm_medium=social&utm_source=twitter
http://events17.linuxfoundation.org/sites/events/files/slides/elc-came
ra-dt-acpi.pdf
Referências
https://arstechnica.com/gadgets/2013/01/17000-linux-powered-rifle-b
rings-auto-aim-to-the-real-world/
https://developer.gnome.org/NetworkManager/stable/spec.html
https://www.kernel.org/doc/Documentation/networking/can.txt
Obrigado
Site: https://www.b2open.com
Contato: cleiton.bueno@b2open.com
Acesse e se cadastre no https://publicacoes.b2open.com
Obrigado

Linux embarcado - tudo o que seu projeto precisa está aqui!