O primeiro treinamento de RTOS do Brasil

- por Sergio Prado

Categorias: FreeRTOS, Treinamentos Tags: , ,

Meu treina­mento de Linux embar­cado já esta com quase 8 meses de vida. Desde novem­bro de 2011 formei 13 tur­mas, ou aprox­i­mada­mente 140 alunos entre estu­dantes e profis­sion­ais da área.

Sei que esta minha mis­são de desmisti­ficar o Linux e dis­sem­i­nar o uso de soft­ware livre em sis­temas embar­ca­dos esta longe do fim. Muito pelo con­trário. Cada turma que abro tem as inscrições encer­radas em menos de duas sem­anas. E quanto mais as pes­soas e as empre­sas percebem o valor de soluções aber­tas como o Linux em sis­temas embar­ca­dos, maior é a demanda por capac­i­tação. Por isso me sinto bem em saber que tenho aju­dado muitas pes­soas e empre­sas a vencer esta bar­reira inicial.

Mas sei tam­bém que estou aju­dando ape­nas uma parcela das pes­soas que tra­bal­ham com sis­temas embar­ca­dos. O uso do Linux vem da exigên­cia de pro­je­tos mais com­plexos, com car­ac­terís­ti­cas de conec­tivi­dade e inter­faces mul­ti­me­dia, que exigem CPUs mais potentes, rodando à 600/800/1GHz, com 256/512MB de RAM, etc.

Mas e aque­las pes­soas envolvi­das com micro­con­tro­ladores, que rodam à 20MHz, 40MHz, 100MHz no máx­imo? Onde as memórias são medi­das em KB, não em MB? Como trazer as van­ta­gens do uso de um sis­tema opera­cional para estes tipos de pro­jeto? A resposta esta no uso de um RTOS. E é para estas pes­soas que criei o primeiro treina­mento de RTOS do Brasil!

Mas antes de falar do treina­mento, vamos respon­der à algu­mas perguntas…:)

RTOS? POR QUÊ?

Antes de mais nada, quem não con­hece os con­ceitos de um RTOS pode ler dois arti­gos que escrevi sobre o assunto um tempo atrás. Tem uma intro­dução sobre o tema no artigo “Sis­temas de Tempo Real — Parte 1″ e uma apli­cação prática no artigo “Sis­temas de Tempo Real — Parte 2″.

Mas Ser­gio, eu sem­pre tra­bal­hei sem um RTOS. Por que agora eu pre­ciso de um?

Bom, sabe­mos que o prin­ci­pal obje­tivo de um RTOS é garan­tir que as restrições de tempo da apli­cação sejam aten­di­das. Mas mesmo que sua apli­cação não tenha req­ui­si­tos de tempo real, um RTOS traz diver­sas out­ras van­ta­gens. Vamos começar pelo…

LADO TÉCNICO DA COISA

Sem um RTOS, nosso firmware é basi­ca­mente um monte de roti­nas de trata­mento de inter­rupção (ISR), mais um loop infinito na função main() para geren­ciar todas as fun­cional­i­dades provi­das pelo soft­ware. Este loop infinito pode ou não ser imple­men­tado através de uma máquina de esta­dos. Esse é o máx­imo que con­seguimos chegar em ter­mos de arquite­tura de soft­ware para nosso firmware sem um sis­tema opera­cional para geren­ciar os recur­sos da máquina. Mais do que isso, você já começou à imple­men­tar seu próprio ker­nel de sis­tema operacional.

À grosso modo, é mais ou menos assim que esta­mos acos­tu­ma­dos a desen­volver firmware:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main(void)
{
    init_hardware();
 
    init_system();
 
    for (;;) { 
        read_sensors();
        read_usb();
        read_rede();
        check_gpios();
        update_display();
        ...
    }
}

E pra falar a ver­dade, esta solução é mais do que sufi­ciente para aquele pro­duto baseado em 8 bits que tem ape­nas algu­mas fun­cional­i­dades bási­cas. Como um RTOS con­some recur­sos da máquina, adi­cio­nando over­head de proces­sa­mento, con­sumo de flash e RAM, não é a mel­hor solução para pro­je­tos pequenos com micro­con­tro­ladores mais modestos. Então aquele seu PIC, AVR ou 8051 com 4KB de flash e 128B de RAM pode não servir para um pro­jeto com RTOS.

O prob­lema é que cada vez mais os pro­je­tos que tra­bal­hamos estão ficando mais com­plexos, o que exige tam­bém micro­con­tro­ladores mais com­plexos, com maior capaci­dade de flash e RAM, e rec­hea­dos de recur­sos como inter­faces grá­fi­cas, por­tas USB, comu­ni­cação sem-fio e conexão com a Inter­net. E tra­bal­har nestes sis­temas com o “par­a­digma de 8 bits” trazem alguns desafios.

Como pre­cisamos tratar tare­fas pri­or­itárias den­tro de uma ISR, adi­cionamos uma latên­cia (tempo de resposta) maior ao sis­tema, prin­ci­pal­mente se a ISR for muito longa. E este prob­lema se mul­ti­plica dev­ido ao fato de ter­mos mais inter­faces de I/Os do que o nor­mal, e con­se­quente­mente mais inter­rupções acon­te­cendo ao mesmo tempo. Um RTOS facilita a divisão do tra­balho entre inter­rupções e tare­fas, mel­ho­rando a per­for­mance e dimin­uindo con­sid­er­av­el­mente o tempo de latên­cia do sistema.

Outro prob­lema esta no loop prin­ci­pal da apli­cação. Se uma das funções do loop prin­ci­pal demorar mais do que o esper­ado, todo o sis­tema será impactado. Adi­cionar mais fun­cional­i­dades sig­nifica aumen­tar o tempo de resposta, pio­rando a per­for­mance do sis­tema como um todo. O prob­lema fica maior ainda se você tiver diver­sos desen­volve­dores tra­bal­hando no mesmo código. Existe um sen­ti­mento de medo para dar manutenção na apli­cação: “Será que se eu adi­cionar esta fun­cional­i­dade aqui, vou impactar aquela outra fun­cional­i­dade lá?” Com um RTOS, o fato de ter­mos um ker­nel geren­ciando as tare­fas com base em suas pri­or­i­dades, garan­ti­mos uma mel­hor gestão dos recur­sos de CPU, memória e I/O. A apli­cação irá escalar muito mel­hor, porque fica muito mais fácil adi­cionar novas fun­cional­i­dades sem se pre­ocu­par tanto com o impacto no resto do sistema.

Uma outra grande van­tagem do RTOS é que a tendên­cia à tra­bal­har com even­tos é muito maior.

Em sis­temas con­ven­cionais, é comum fazer polling em tudo:

1
2
3
4
5
6
void le_adc()
{
    ...
    while (!adc_ready);
    ...
}

Tra­bal­har com pool­ing é des­perdiçar pre­ciosos recur­sos da CPU. Com um RTOS, a arquite­tura do soft­ware pode ser toda baseada em even­tos e inter­rupções, econ­o­mizando proces­sa­mento e mel­ho­rando a efi­ciên­cia. E isso traz uma outra van­tagem menos percebida…

Neste mundo cada vez mais móvel e conec­tado, o assunto “con­sumo de ener­gia” esta em moda. E com um sis­tema todo ori­en­tado à even­tos, você pode imag­i­nar como fica mais fácil colo­car a CPU para dormir e acordá-la quando necessário.

MAIS ALGUMAS VANTAGENS

Exis­tem ainda mais algu­mas van­ta­gens não tão fáceis de men­su­rar quando tra­bal­hamos com um RTOS.

Dev­ido ao fato de pre­cis­ar­mos dividir a apli­cação em tare­fas, auto­mati­ca­mente o soft­ware fica muito mel­hor estru­tu­rado e muito mais mod­u­lar. Fica fácil dar manutenção no código, pois temos uma visão clara do rela­ciona­mento entre as tare­fas. Facilita tam­bém os testes, já que cada tarefa é uma enti­dade inde­pen­dente. E facilita o desen­volvi­mento em equipes com múlti­p­los desen­volve­dores. E incen­tiva o reuso de código. E facilita o porte do soft­ware para outra plataforma. E …

MAIS UM MOTIVO

Só mais um motivo para você avaliar o uso de um RTOS. E é esse o motivo que você irá usar para con­vencer seu chefe! :)

Dá uma olhada nas ima­gens abaixo, que retirei do site da Far­nell na data em que publiquei este artigo (clique nas ima­gens para vê-las no tamanho original).

PIC18F87, 8 bits, 48MHz de clock, 128K de flash, 3.8K de RAM — Custo: 4.85 euros:

microchip O primeiro treinamento de RTOS do Brasil

LPC1754, 32 bits, 100MHz de clock, 128K de flash, 32K de RAM — Custo: 4.69 euros:

lpc1754 O primeiro treinamento de RTOS do Brasil

Sim, é isso mesmo. O LPC1754 é um ARM Cortex-M3 da NPX, uma CPU de 32 bits que roda a 100MHZ e tem 128K de flash e 32K de RAM. Ele esta mais barato que o PIC18F87, uma CPU de 8 bits que roda à metade da veloci­dade e tem ape­nas 1/8 da quan­ti­dade de RAM do LPC1754! Sim, uma CPU de 32 bits, com clock maior e mais RAM esta mais barata que uma CPU de 8 bits com clock menor e menos RAM!

Se eu acho que os micro­con­tro­ladores de 8 bits vão mor­rer? Não, não acho. Mas boa parte dos pro­je­tos que são desen­volvi­dos hoje em 8 bits estão migrando ou migrarão para 32 bits num futuro próx­imo. E se você quiser fazer parte deste futuro, e aproveitar todas as van­ta­gens de uma CPU de 32 bits, vai pre­cisar entrar no mundo do RTOS.

AGORA SIM, O TREINAMENTO

O meu treina­mento é um con­vite para você entrar neste mundo. Ele será baseado no FreeR­TOS, o sis­tema opera­cional de tempo real (RTOS) de código aberto mais usado no mundo. Ainda não defini o kit de desen­volvi­mento que uti­lizarei nas ativi­dades práti­cas, mas a idéia é que ele seja baseado em um ARM Cortex-M3.

Será um treina­mento de 3 dias. A idéia é intro­duzir o aluno no desen­volvi­mento com um RTOS, e depois cobrir toda a API do FreeR­TOS, sem­pre apoiado em exer­cí­cios e ativi­dades práti­cas focadas do mundo real.

A primeira turma dev­erá acon­te­cer em Agosto. Tam­bém ainda não tenho definido o valor do treina­mento, mas assim como o treina­mento de Linux embar­cado, a idéia é do inves­ti­mento ser abaixo de R$1.000,00.

Mais infor­mações sobre o treina­mento e uma visão ini­cial da agenda podem ser vis­tos na página ofi­cial de divul­gação do treina­mento.

Se você tem inter­esse em par­tic­i­par das primeiras tur­mas, pode preencher um for­mulário de pré-inscrição sem com­pro­misso e entrar na fila de espera. Os primeiros que realizarem a pré-inscrição terão pri­or­i­dade na for­mação das primeiras tur­mas. Para aces­sar o for­mulário de pré-inscrição clique aqui.

Qual­quer dúvida, crítica ou sug­estão, mande um e-mail para treinamentos@e-labworks.com ou deixe um comen­tário neste post.

Um abraço!

Ser­gio Prado

  • Eduardo C. Scherrer

    Olha muito boa esta notí­cia.
    Espero con­seguir par­tic­i­par do treinamento.

    Abraço.

  • Jeron­imo Ave­lar Filho

    Muito bom Ser­gio. Desejo sucesso ao seu novo treina­mento. Sugiro uti­lizar o mBed como kit para o treina­mento. Este curso irá ter ver­são on-line ?

    • http://sergioprado.org/ Ser­gio Prado

      Olá Jeron­imo,

      O mbed é uma pos­si­bil­i­dade. O que sinto falta nele é uma maior quan­ti­dade de I/Os na própria placa (só temos uma porta ser­ial e uns leds para manip­u­lar). Mas ainda não descartei a hipótese de usá-lo.

      No momento não tenho nen­hum plano de lançar o treina­mento online. Mas se você estiver a fim de levar este treina­mento para Brasilia, vamos bater um papo! :)

      Um abraço.

  • Andre Souza

    Parabens Ser­gio! Tomara que ele seja tão bom qto o de Linux que eu fiz!

    Eu sugiro esse kit da texas: 
    https://estore.ti.com/EKT-LM3S8962-EKT-LM3S8962-EthernetCAN-Evaluation-Kits-with-Code-Red-Technologies-Tools-P1682.aspxEu com­prei ele pelo site da texas, e chegou em casa rapid­inho e sem imposto!
    Abraço

    • http://sergioprado.org/ Ser­gio Prado

      Obri­gado pela dica André!

    • Caio Pereira

      Andre plaquinha inter­es­sante mesmo !
      No site da Texas aparece
      EKC-LM3S8962 Ethernet+CAN Eval­u­a­tion Kit with CodeS­ourcery Tools
      Por US$89,00
      Foi esse preço que vc pagou?
      Abraços

  • Ivo Triv­ella Giacomini

    Fala Ser­gio!
    Se não lem­bra de mim, estou fazendo o treina­mento de Embed­ded Linux na FAJ.

    Tem algu­mas pes­soas inter­es­sadas aqui na empresa e alguns ami­gos tam­bém, acha que podemos ten­tar trazer uma edição deste treina­mento pra região de Campinas?

    • http://sergioprado.org/ Ser­gio Prado

      Olá Ivo,

      Claro, podemos sim! Nos falamos este fim de sem­ana durante o treina­mento de Linux.

      Um abraço!

  • Denis

    Achei bas­tante inter­es­sante esse treina­mento sobre RTOS, como disse o Ivo, seria legal a pos­si­bil­i­dade de um treina­mento desse em Campinas.

    • Matheus

      Esta­mos ten­tando trazer o curso de linux embar­cado para Camp­inas, temos 5 pes­soas, quer­e­mos 10 para fechar. 
      Me mande e-mail: matheus@ineltec.com.br

  • Emer­son Suguimoto

    Parabéns Sér­gio! Sem­pre acom­panho seu blog, até con­ver­samos sobre a bea­gle board. Gostaria de saber se este treina­mento será min­istrado um dia online ou terá uma ver­são gravada para ser assis­tida? Eu teria inter­esse em me inscr­ever nesta modal­i­dade já que não moro em SP.

    • http://sergioprado.org/ Ser­gio Prado

      Olá Emer­son,

      No momento não estou plane­jando treina­men­tos online, mas talvez acon­teça algo no futuro.

      De qual­quer forma, faça a pré-inscrição no treina­mento, indi­cando onde gostaria que o curso fosse real­izado. Depen­dendo da demanda, posso levar o treina­mento para a sua cidade.

      Este é o link para a pre-inscrição:

      http://e-labworks.com/inscricao/

      Você pode tam­bém se cadas­trar na newslet­ter e rece­ber um email assim que eu abrir novas turmas:

      http://eepurl.com/o747L

      Um abraço.

  • Plinio

    Muito bom seu post. Tudo muito bem detal­hado e real­mente convincente.

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.