Slides da minha palestra apresentada na JEEL - Jornada da Engenharia Elétrica- da UFU em 2017, em que tratei de falar sobre sistemas Linux Embarcados em aplicações de automação com interface a rede CAN para troca de dados e monitoramento.
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Rede CAN em Linux Embarcado para Aplicações Conectadas
1. Rede CAN em Linux
Embarcado para
Aplicações Conectadas
Prof. André Márcio de Lima Curvello – contato@andrecurvello.com.br
2. Sobre mim
2
André Márcio de Lima Curvello
• Engenheiro de Computação – USP São Carlos
• MBA em Gestão de TI - UNIFRAN
• Mestre em Ciências – USP São Carlos
• Analista de Tecnologia – Padtec S/A
• Articulista do Portal Embarcados e FilipeFlop
• Professor na Pós-Graduação em Sistemas
Embarcados – UNISAL São José – Campinas
3. “Se não puder voar, corra.
Se não puder correr, ande.
Se não puder andar, rasteje.
Mas continue em frente de
qualquer jeito.
Martin Luther King
5. O que é Linux Embarcado?
▸ Mesmo Linux que o usado em um PC
▸ Mas com algumas “adaptações” para sistemas
embarcados
▸ Precisa de um sistema com microprocessador
▸ Uso em ascensão!
▸ Redução de custos de componentes
▸ Facilidade no desenvolvimento e manutenção
5
8. O que é Linux Embarcado?
▸ Linux Embarcado favorece aplicações que usem:
▸ Recursos multimídia (áudio, fotos, vídeos)
▸ Rede
▸ Criptografia
▸ Banco de Dados
▸ Interface Gráfica
8
12. O que é Rede CAN?
▸ Desenvolvido pela Bosch para redes de
comunicação veiculares na década de 80
▸ Publicado em 1986 na SAE
▸ Troca de mensagens entre ECUs
▸ Electronic Control Unit
▸ Robusto em ambientes com ruído!
▸ Baixo custo
12
13. O que é Rede CAN?
▸ Protocolo multi-mestre
▸ Broadcast
▸ Comunicação serial
▸ Baseado em mensagens
▸ Sem “endereços”
▸ IDs
▸ Mensagens
13
14. O que é Rede CAN?
Standard CAN – Versão 2.0A
▸ ID de 11 bit
▸ 2048 ids diferentes!
14
Fonte: http://www.ti.com
15. Transmissão de dados em CAN
15
Fonte: https://www.linkedin.com/pulse/automotive-can-bus-system-explained-kiril-mucevski
16. Transmissão de dados em CAN
16
Fonte: https://www.linkedin.com/pulse/automotive-can-bus-system-explained-kiril-mucevski
17. Topologia de uma rede CAN
17
Fonte: https://www.linkedin.com/pulse/automotive-can-bus-system-explained-kiril-mucevski
25. Documentação
▸ Já disponível na árvore do Kernel Linux
▸ Link:
▸ https://www.kernel.org/doc/Documentation/networking/can.txt
▸ Documentação tem por base o SocketCAN
▸ Trata de CAN como interface de rede
▸ Especifica chamadas (API)
▸ E estruturas de dados
25
26. Ferramentas
▸ Tudo parte do can-utils
▸ Link: https://github.com/linux-can/can-utils/
▸ candump - display, filter and log CAN data to files
▸ canplayer - replay CAN logfiles
▸ cansend - send a single frame
▸ cangen - generate (random) CAN traffic
▸ cansniffer - display CAN data content differences (just 11bit
CAN IDs)
26
27. Linux Embarcado + Rede CAN
▸ SocketCAN é uma API em C
▸ Mas há “wrappers” para outras linguagens
▸ Como por exemplo... Python!
▸ Biblioteca python-can
▸ E suporte no Python 3.3 em diante
27
28. Linux Embarcado + Rede CAN - Setup
▸ Módulos habilitados em Kernel
28
30. Linux Embarcado + Rede CAN - Setup
▸ Carregamento dos módulos
30
# modprobe can
# modprobe can_raw
# modprobe can_dev
31. Linux Embarcado + Rede CAN - Setup
▸ Setup da Rede
31
# ip link set can0 type can bitrate 500000
# ip link set can0 up
# ip link show can0
32. Desenvolvimento com CAN em Linux
▸ SocketCAN é uma API em C
▸ Mas há “wrappers” para outras linguagens
▸ Como por exemplo... Python!
▸ Biblioteca python-can
▸ E suporte no Python 3.3 em diante
32
33. Desenvolvimento com CAN em Linux - C
33
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <net/if.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/can.h>
#include <linux/can/raw.h>
46. Execução em um veículo
46
Termos principais:
ID – identificação da mensagem
DLC – tamanho em bytes da mensagem
Payload – mensagem propriamente
(bytes)
51. 51
• Autor: Derek Molloy
• De A a Z com Linux Embarcado na Beagle
Bone Black
• Link:
https://www.amazon.com/Exploring-BeagleBone-
Techniques-Building-Embedded/dp/1118935128
Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux
52. 52
• Livro disponibilizado gratuitamente na
forma de ebook: PDF!
• Objetivo: Inspirar a criação de Internet das
Coisas
• Disponível no Google mais próximo de
você! Ou...
http://iotcomicbook.org/
Inspirando a Internet das Coisas!
53. 53
• Livro disponibilizado gratuitamente via web.
• Informações sobre como explorar recursos
do veículo (como informações da rede
CAN).
• Link:
http://opengarages.org/handbook/
The Car Hacker’s Handbook