Mudanças entre as edições de "Projeto de Estimador de Estado de Enlace - Semestre 2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 30: Linha 30:
  
 
Em breve...
 
Em breve...
 +
 +
Teclado de Inglês para Português:
 +
> sudo dpkg-reconfigure keyboard-configuration
  
 
==Estrutura genérica da aplicação Contiki==
 
==Estrutura genérica da aplicação Contiki==

Edição das 22h58min de 21 de agosto de 2018

Espaço do Bolsista

  • Assunto: Projeto de Estimador de estado de enlace
  • Aluno: Nelson Espindola Alves
  • Matricula: 141003075-0

Horário disponível

  • Segunda-Feira - 13:30 às 15:30 (2h)
  • Terça-Feira - 13:30 às 17:30 (4h)
  • Quarta-feira - 9:40 às 11:40 e 15:20 às 17:30 (4h)
  • Quinta feira - 7:30 às 11:30 e 13:30 às 17:30 (8h)
  • Sexta-feira - 15:40 às 17:30 (2h)

Total = 20 hrs

Progresso da bolsa - 2018/2

Base de conhecimento

Este tópico foi idealizado com a intenção de juntar informações encontradas sobre o assunto do projeto para formar uma base de conhecimento para o bolsista atual e também para futuros estudantes do câmpus interessados sobre o assunto, seja para a continuação da mesma bolsa ou para um tcc.

O que é o Contiki

Contiki é um sistema operacional de código aberto que conecta micro controladores de baixa potência à Internet. Contiki apoia plenamente o padrão IPv6 e IPv4 e os últimos padrões wireless de baixo consumo: 6LoWPAN , RPL, COAP. Contiki é executado em uma grande quantidade de dispositivos sem fio de baixa potência (Contiki et al. 2013).

Download Contiki e VMWare Player

Para instalar o Contiki acesse:

Foi escolhido o software VMWare Player pra simular a maquina virtual do Contiki. O VMWare pode ser baixado em:

Instalação

Em breve...

Teclado de Inglês para Português: > sudo dpkg-reconfigure keyboard-configuration

Estrutura genérica da aplicação Contiki

PROCESS(process_name, "The string representation of the process name"); 
AUTOSTART_PROCESSES(&process_name); 

PROCESS_THREAD(process_name, process_event_t, process_data_t){
 PROCESS_BEGIN();
 /*Execução do código*/
 PROCESS_END();
}

Criando um makefile

Para cada código .c que for criado, é necessária a criar o arquivo que contém as instruções para as ferramentas de compilação da tarefa, o conhecido makefile. O arquivo makefile deve estar no mesmo diretório do código criado para a aplicação Contiki. A seguir, alguns passos de como criar o seu makefile: Em breve...

Iniciando a implementação

Process

Como visto anteriormente, o process é um método essencial para o funcionamento da aplicação. Nesta seção, iremos estar explicando melhor cada método da biblioteca process.h e como são implementados no Contiki.

Uma process_thread contém o código do processo. Nela há uma protothread que é invocada pelo escalonador de processos. A protothread é uma maneira de estruturar o código de modo que permita que o sistema execute outras atividades enquanto o código está aguardando que algum determinado evento aconteça.

Vamos agora para os métodos:

  • PROCESS() -> Criador do processo.
  • AUTOSTART_PROCESS() -> Inicia o processo automaticamente passado o seu nome por referência.
  • PROCESS_BEGIN() -> Define o inicio de um processo.
  • PROCESS_END() -> Define o fim de um processo.
  • PROCESS_WAIT_EVENT() -> bloqueia o processo atualmente em execução até que o processo receba um evento.
  • PROCESS_WAIT_EVENT_UNTIL() -> Necessita ser passada uma condição que deve ser verdadeira para chamar o processo.
  • PROCESS_EXITHANDLER(handler) -> Especifica uma ação quando há uma saída do processo.

Timers

A utilização dos timers nos permitirá acionar eventos em um determinado momento, acelerando a transição de um estado para outro e automatizar um determinado processo ou tarefa.

No Contiki existem 4 tipos de timers:

  • Simple timer: A aplicação deve conferir manualmente se o timer expirou. #include "sys/timer.h".
  • Callback timer: Quanto o timer expira o callback chama uma determinada função. #include "sys/ctimer.h".
  • Timer Event: O mesmo que acima, mas em vez de chamar uma função, quando o timer expira posta um evento sinalizando sua expiração. #include "sys/etimer.h".
  • Real time timer: O módulo em tempo real lida com o agendamento e execução de tempo real tarefas. #include "sys/rtimer.h"

Clock Timer

A biblioteca clock é a interface entre o Contiki e a funcionalidade clock da plataforma especificada.

  • CLOCK_SECOND - A biblioteca clock define esse macro para converter segundos na resolução de instante da plataforma.

Interface de sistema de arquivo do Contiki

A interface do sistema de arquivos Contiki (CFS) define uma API abstrata para ler diretórios e ler e gravar arquivos. A seguir alguns principais métodos e atributos da biblioteca.

  • cfs_open (const char *name, int flags) - Abre um arquivo.
  • cfs_close (int fd) - Fecha um arquivo.
  • cfs_read (int fd, void *buf, unsigned int len) - Lê o dado de um arquivo aberto.
  • cfs_write (int fd, const void *buf, unsigned int len) - Escreve dado em um arquivo aberto.
  • cfs_seek (int fd, cfs_offset_t offset, int whence) - Procura uma posição especifica em um arquivo aberto.
  • cfs_remove (const char *name) - Remove um arquivo.
  • CFS_READ - Atributo que especifica ao cfs_open() que o arquivo aberto é para leitura.
  • CFS_WRITE - Atributo que especifica ao cfs_open() que o arquivo aberto é para escrita.


teste

Referências