tdc2016sp - trilha linux embarcado

14
Globalcode – Open4education Novas técnicas de controle de tempo real em Linux: Processadores Multicore Heterogêneos Raul Rosetto Muñoz CTO Toradex Brasil

Upload: tdc-globalcode

Post on 14-Jan-2017

64 views

Category:

Education


5 download

TRANSCRIPT

Page 1: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Novas técnicas de controle de tempo real em Linux: Processadores Multicore Heterogêneos

Raul Rosetto MuñozCTO Toradex Brasil

Page 2: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

O que é um Sistema Operacional de Tempo Real?

É um sistema destinado a execução de múltiplas tarefas em que exite um tempo de resposta a um evento pré-definido

Page 3: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Opções de abordagens e como escolher?

RT-LinuxLinux Kernel Microcontrolador

Page 4: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Será que está tão ruim assim?

Linux Kernel MicrocontroladorRT-Linux

Page 5: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Projeto PCB

Abordagem “Tradicional”

UART

PROCESSADOR

MicrocontroladorFirmware

- Processador Linux- Microcontrolador Real-Time- Comunicação Serial/Sinais de Interrupção- Não compartilham memória- Não compartilham Devices

Page 6: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Projeto PCB

SOC

Multicore Heterogêneos

RPMSG

PROCESSADOR MicrocontroladorFirmware

- Rápido canal de comunicação.- Diminui a complexidade do projeto de Hardware.- Interrupções internas no processador.- Semáforos entre núcleos.- Compartilham dispositivos possibilitando ótima flexibilidade do design.- Facilidade na atualização do firmware no segundo núcleo.

Page 7: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Colibri iMX7

- Pino compatível com toda família Colibri

- Ciclo de vida de mais de 10 anos

- Baixo consumo

- Alta performance

- Venda local (Brasil)

ARM Cortex-A7 Single/Dual (1GHz)Arm Cortex-M4 (200MHz)NAND 512MB RAM 256MB / 512MB

Page 8: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Arquitetura iMX7

8

Main CPU Platform

Core #0 (Cortex-A7)

Core #1 (Cortex-A7)32 KB I-cache 32 KB D-cache

FPU NEON

512 KB L2-cache

Secondary CPU Platform

Cortex-M4

16 KB I-cache 16 KB D-cache

FPU

32 KB TCMU

MPU

Internal Memory

128 KB OCRAM

32 KB OCRAM_S

32 KB TCML

...

96 KB ROM

External Memory

DDR Controller

GPMI&BCH (NAND)

Peripherals

UART

PWM

Heterogeous Multicore Units

Messaging Unit (MU)

Resource Domain Controller (RDC)

Semaphore (SEMA4/SEMA42)

GPIO

ADC CAN

I2C SPI

...

AXI/AHB Interconnect

Page 9: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Por onde começar?

Comunicação entre núcleos!

Rpmsg: Remote Processor Messaging Framework(Usada no I.MX7)

- Linux (A7): RPMSG Driver de Kernel disponibilizados pela NXP- - Pingpong (CONFIG_IMX_RPMSG_PINGPONG, drivers/rpmsg/imx_rpmsg_pingpong.c)- - Serial Port (CONFIG_IMX_RPMSG_TTY, drivers/rpmsg/imx_rpmsg_tty.c) TTY driver (/dev/ttyRPMSG)

- Firmware (M4): Rpmsg: OpenAMP- - RPMsg implementada para firmware bare-metel- - Open source project

Page 10: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

É uma tendência?

+ Documentação+ Padronização+ Exemplosgit://git.toradex.com/freertos­toradex.git

+Suporte ARM DS-5 IDE (DEBUG M4) freeRTOS (NXP)

QUALIDADE

Page 11: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Como usar RPMsg no M4?

Como fazer no Firmware (M4):

- IDE ( ARM DS-5 IDE).- u-boot carrega e roda o firmware no M4.fatload mmc 0:1 0x7F8000 rpmsg_str_echo_freertos_example_imx7_colibri_m4.bindcache flushbootaux 0x7F8000

- Comunicação.

Page 12: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Como usar RPMsg no A7?●

Como fazer no Linux (A7):

modprobe imx_rpmsg_tty

Módulo montado em: “/dev/ttyRPMSG”.

Comunicar apenas usando open, read, write, close.

Page 13: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Aonde podemos chegar?

Demo desenvolvida pela Toradex

- Robô que se auto-equilibra (pêndulo invertido)

https://www.youtube.com/watch?v=BUq0Y3fHWLU&feature=youtu.be&t=139

Page 14: TDC2016SP - Trilha Linux Embarcado

Globalcode – Open4education

Referências

Robô Firmware.https://github.com/antmicro/imx7-taq-demo (soon)

Robô User Interface.https://github.com/mitchcurtis/robot-faces

Toradex Artigo de Desenvolvimento.FreeRTOS on the Cortex-M4 of a Colibri iMX7

Código Linux KernelDocumentation/rpmsg.txt

OpenAMPhttps://github.com/OpenAMP

FreeRTOS BSP (incluindo documentos NXP)Release Notes, Getting Started, API Reference Manualhttp://git.toradex.com/cgit/freertos-toradex.git/