Globalcode – Open4education
Novas técnicas de controle de tempo real em
Linux: Processadores Multicore Heterogêneos
Raul Rosetto Muñoz
CTO Toradex Brasil
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
Globalcode – Open4education
Opções de abordagens e como
escolher?
RT-LinuxLinux Kernel Microcontrolador
Globalcode – Open4education
Será que está tão ruim assim?
Linux Kernel MicrocontroladorRT-Linux
Globalcode – Open4education
Projeto PCB
Abordagem “Tradicional”
UART
PROCESSADOR
Microcontrolador
Firmware
- Processador Linux
- Microcontrolador Real-Time
- Comunicação Serial/Sinais de Interrupção
- Não compartilham memória
- Não compartilham Devices
Globalcode – Open4education
Projeto PCB
SOC
Multicore Heterogêneos
RPMSG
PROCESSADOR Microcontrolador
Firmware
- 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.
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
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
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
Globalcode – Open4education
É uma tendência?
+ Documentação
+ Padronização
+ Exemplos
git://git.toradex.com/freertos­toradex.git
+Suporte ARM DS-5 IDE (DEBUG M4) freeRTOS (NXP)
QUALIDADE
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.bin
dcache flush
bootaux 0x7F8000
- Comunicação.
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.
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
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 Kernel
Documentation/rpmsg.txt
OpenAMP
https://github.com/OpenAMP
FreeRTOS BSP (incluindo documentos NXP)
Release Notes, Getting Started, API Reference Manual
http://git.toradex.com/cgit/freertos-toradex.git/

TDC2016SP - Trilha Linux Embarcado

  • 1.
    Globalcode – Open4education Novastécnicas de controle de tempo real em Linux: Processadores Multicore Heterogêneos Raul Rosetto Muñoz CTO Toradex Brasil
  • 2.
    Globalcode – Open4education Oque é 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
  • 3.
    Globalcode – Open4education Opçõesde abordagens e como escolher? RT-LinuxLinux Kernel Microcontrolador
  • 4.
    Globalcode – Open4education Seráque está tão ruim assim? Linux Kernel MicrocontroladorRT-Linux
  • 5.
    Globalcode – Open4education ProjetoPCB Abordagem “Tradicional” UART PROCESSADOR Microcontrolador Firmware - Processador Linux - Microcontrolador Real-Time - Comunicação Serial/Sinais de Interrupção - Não compartilham memória - Não compartilham Devices
  • 6.
    Globalcode – Open4education ProjetoPCB SOC Multicore Heterogêneos RPMSG PROCESSADOR Microcontrolador Firmware - 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.
  • 7.
    Globalcode – Open4education ColibriiMX7 - 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
  • 8.
    Globalcode – Open4education ArquiteturaiMX7 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
  • 9.
    Globalcode – Open4education Poronde 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
  • 10.
    Globalcode – Open4education Éuma tendência? + Documentação + Padronização + Exemplos git://git.toradex.com/freertos­toradex.git +Suporte ARM DS-5 IDE (DEBUG M4) freeRTOS (NXP) QUALIDADE
  • 11.
    Globalcode – Open4education Comousar 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.bin dcache flush bootaux 0x7F8000 - Comunicação.
  • 12.
    Globalcode – Open4education Comousar 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.
  • 13.
    Globalcode – Open4education Aondepodemos 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
  • 14.
    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 Kernel Documentation/rpmsg.txt OpenAMP https://github.com/OpenAMP FreeRTOS BSP (incluindo documentos NXP) Release Notes, Getting Started, API Reference Manual http://git.toradex.com/cgit/freertos-toradex.git/