Skip to content. Skip to navigation

Eletronica.org

Sections
Personal tools
You are here: Home Artigos Eletrônica Digital e Sistemas Embarcados SKM – Sistema Operacional Livre e Multitarefa para Microcontroladores

Document Actions

SKM – Sistema Operacional Livre e Multitarefa para Microcontroladores

by Otávio Alcântara — last modified 01/12/2008 19:02

Microcontroladores estão cada vez mais poderosos e baratos. Uma breve visita nos sites dos maiores fabricantes mundiais nos mostra que a relação MIPS/dólar vem crescendo lançamento após lançamento. Um exemplo, segundo o site da Microchip, um PIC33F com 40 MIPS custa U$ 1.99, praticamente 20 MIPS/dólar[1]! Claro que essa relação é um modelo bastante simplista para escolha de um microcontrolador, mas ilustra que o custo de hardware vem caindo.

Com o aumento da taxa MIPS/dólar, cresce a pressão para que o firmware dos produtos possa utilizar mais e melhor os recursos que as novas arquiteturas disponibilizam. Funcionalidades cada vez mais complexas são exigidas em aplicações com microcontroladores, como: conectividade com a Internet, processamento de sinais em tempo-real, reconhecimento de padrões e muitas outras. Toda essa pressão culmina em um único ponto: a forma como escrevemos firmware. Para aplicações complexas, é mais difícil alcançar as especificações de projeto utilizando técnicas como: foreground/background [2] ou executor cíclico [3].

O modelo foreground/background preconiza que as tarefas mais importantes do sistema residam nas rotinas de tratamento de interrupções (ISR), que devem ser pequenas e rápidas. Esse contexto de execução é chamado de foreground, porque as ISR possuem mais prioridade do que o código que executa no contexto normal, o chamado background. Geralmente, o código de background executa em um laço infinito que coloca a CPU no modo de baixo consumo, e fica esperando por algum evento das interrupções dos periféricos. A função do background é tratar os eventos e voltar para o estado de baixo consumo. Essa estratégia é eficiente para sistemas pequenos e simples.

O modelo executor cíclico aloca as atividades em um laço infinito na função main, geralmente o tempo de execução do laço é controlado e corresponde ao período da menor tarefa do sistema. As funções que são chamadas no laço são codificadas como máquinas de estado, de forma que elas guardam o estado de execução durante sucessivas chamadas a essa função. Esse modelo traz sérios problemas para manutenção do código, visto que o tempo de execução de cada rotina precisa ser conhecido para que não ocorra estouro do tempo.

Esses dois modelos tentam lidar com a concorrência inerente em sistemas embarcados. Contudo, acreditamos que com o aumento da complexidade dos projetos não seja interessante persistir na utilização dessas soluções. O uso de um Sistema Operacional de Tempo-Real (RTOS) pode ser mais indicado, mas exige uma grande mudança no paradigma de desenvolvimento de software embarcado. O desenvolvedor deverá trabalhar com tarefas concorrentes, que compartilham recursos escassos.

Existem diversos RTOSs disponíveis no mercado, mas poucos são voltados para trabalhar com microcontroladores de 8 ou 16 bit. Alguns projetos, como o FreeRTOS [4], fornecem uma solução apropriada para esse nicho de aplicações. Contudo, vemos que é interessante que o desenvolvedor tenha diversas opções de ferramentas disponíveis.

No início desse ano, nós começamos o projeto de um kernel de RTOS voltado para aplicações com microcontroladores de 8 e 16 bit. O primeiro foco do projeto foi utilizar o kernel em aplicações de redes de sensores sem-fio. Contudo, percebemos que o projeto poderia ser utilizado com sucesso em outras aplicações e resolvemos disponibilizá-lo para a comunidade de desenvolvedores do eletrônica.org.

O projeto é denominado SKM (Small RTOS Kernel for Microcontrollers), está hospedado no eletrônica.org [5] e pode ser utilizado sem nenhum ônus em projetos científicos, comerciais e educacionais. Atualmente, o SKM prover portes para quatro arquiteturas: TI MSP430, Microchip PIC24F, PIC18F e PIC30F.

O desenvolvedor conta com vários escalonadores e objetos de comunicação interprocesso, como: semáforos binários com proteção à inversão de prioridades, filas de mensagens e buffer circulares. Os recursos de sistema são reservados em tempo de projeto, evitando que ocorram falhas por falta de memória. A API do SKM é pequena, reduzindo a curva de aprendizado do usuário, que em pouco tempo já escreve suas primeiras aplicações concorrentes.

O SKM está sendo usado com certo sucesso em projetos educacionais, como na disciplina de Sistemas de Tempo-Real do curso de graduação em engenharia de Teleinformática da Universidade Federal do Ceará.

Convidamos o leitor a acessar o site do projeto [5], ler o manual, baixar o código fonte e, se possível, nos passar suas considerações em relação ao SKM. E aqueles que estiverem interessados em participar contribuindo com o seu tempo de desenvolvimento, também serão bem-vindos.

Referências

1 – Microchip Technology- http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8154&mid=14&lang=en&pageId=75 , visitado em 11/2008.

2 – Automotive Design Line - http://www.automotivedesignline.com/showArticle.jhtml?articleID=202201151, visitado em 11/2008.

3 – Wikipedia - http://en.wikipedia.org/wiki/Cyclic_executive, visitado em 11/2008.

4 – FreeRTOS – www.freertos.org , visitado em 11/2008.

5 – SKM - http://www2.eletronica.org/projetos/skm/manual-skm, visitado em 11/2008.


Otávio Alcântara
otavio@eletronica.org

Otávio Alcântara é professor da área de telemática do CEFET-CE, especializado no desenvolvimento de firmware de controle para sistemas de tempo-real.

SKM e Rockbox

Posted by Aurélio A. Heckert at 02/02/2010 19:01
SKM e Rockbox http://www.rockbox.org são relacionáveis?
SKM faz parte do trabalho de baixo nível do Rockbox?
SKM faria um "Rockbox mais portável"?



Acesso rápido: Lista Completa de Projetos | Diretório de Artigos | Apostilas & E-Books | Política de Privacidade

Publicidade

 
Assine o informativo Eletronica.org Grupos de Usuários O'Reilly

Log in


Forgot your password?
New user?
Recent Changes
All recent changes…
Conheça Também
Sites em Português
  - Neoradix
  - DQSoft
  - Gabiarra
  - SafiraTec
  - Feira de Ciências
  - RoboFEI
  - Transistor548
  - Rogercom.com
  - Pise na Grama
  - Electronics.com.br
  - Tecnocientista.info

Listas em Português
  - PicListBrasil
  - SisEembarcados

Sites em Inglês
  - Embedded.com
  - Hack a Day
  - Electr. Design
  - Arch Embedded!



[O que é isso?]
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: