Libraries/Bibliotecas do compilador SDCC para sistemas embarcados

Post date: 02/10/2010 14:13:35

O SDCC apresenta diversas libraries para auxiliar no desenvolvimento de programas para sistemas embarcados. Em geral estas libraries possuem dois objetivos:

1) Complementar as capacidades do microcontrolador escolhido

2) Implementar as funções do conjunto de bibliotecas especificado pela ISO C

Em geral os processadores que são utilizados em microcontroladores para sistemas embarcados possuem um conjunto de instruções e capacidades matemáticas reduzido, principalmente quando comparados com os processadores de PC's. Por exemplo o PIC18F4550 da Microchip. O processador consegue realizar apenas soma e multiplicação de números inteiros. Não existe divisão de inteiros implementada por hardware. Além disso o processador não sabe operar com ponto flutuante, seja ela simples ou dupla (float / double).

Por isso foram criadas rotinas que implementam estas funcionalidades por hardware. Tais rotinas são encontradas nas bibliotecas "libdev18F4550.lib", que vem junto com o SDCC.

A passagem de parâmetros por ponteiros também é implementada por uma biblioteca, pois no caso do PIC em questão o endereçamento da memória é mais complexo devido à arquitetura Harvard. Para realizar uma camada de abstração na operação de ponteiros foi desenvolvida a biblioteca "libSDCC.lib".

Além destas duas bibliotecas existe uma terceira, que serve apenas como facilitadora para acesso aos registros do microcontrolador. Para o micro em questão é a libio18f4550.

Agora que temos um processador que é capaz de realizar todas as operações necessárias (seja por hardware ou software) é possivel construir as 24 bibliotecas padronizadas pela ISO C. Estas biblitecas são acessadas através da inclusão dos headers que já conhecemos da programação tradicional para desktops.

(imagem retirada do Cocoa Dev Central)

Resumo: As bibliotecas/libraries possem instruções que podem (1) expandir a capacidade do processador e (2) fornecer novas funções/facilidades ao programador.

Observação para meus alunos: As bibliotecas libdev18f4550.lib e libsdcc.lib deve ser incluidas no projeto sempre que utilizarmos alguma operação com float ou passagem de parâmetros por referência.