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
 
(18 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 11: Linha 11:
 
*Sexta-feira - 15:40 às 17:30 (2h)
 
*Sexta-feira - 15:40 às 17:30 (2h)
 
Total = 20 hrs
 
Total = 20 hrs
 +
 +
=Links=
  
 
[[Progresso da bolsa - 2018/2]]
 
[[Progresso da bolsa - 2018/2]]
  
=Base de conhecimento=
+
[[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:
 
*http://sourceforge.net/projects/contiki/files/Instant%20Contiki/
 
Foi escolhido o software VMWare Player pra simular a maquina virtual do Contiki. O VMWare pode ser baixado em:
 
*http://www.vmware.com/go/downloadplayer/
 
 
 
==Instalação==
 
 
 
Em breve...
 
 
 
Teclado de Inglês para Português:
 
> sudo dpkg-reconfigure keyboard-configuration
 
 
 
==Estrutura genérica da aplicação Contiki==
 
 
 
<syntaxhighlight lang=c>
 
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();
 
}
 
</syntaxhighlight>
 
 
 
==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===
+
[[Contiki]]
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:
+
[[Resumo sobre estimadores de estado de enlace]]
* 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===
+
[[Resumo "Estimador de link para redes de sensores sem fio baseada em Contiki"]]
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===
+
[[Resumo artigo "Estimador de enlace sem fio 4B" de Rodrigo Fonseca]]
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.
+
[[ Estudo sobre o protocolo collect ]]
*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.
 
  
 +
[[Processos no Contiki]]
  
[[teste]]
 
 
=Referências=
 
=Referências=
 +
*[https://ri.ufs.br/bitstream/riufs/6858/2/Diego%20Assis%20Siqueira%20G%C3%B3is.pdf Simulação de pilhas de protocolos para internet das coisas]
 +
*[http://delivery.acm.org/10.1145/1540000/1537055/a77-ni.pdf?ip=191.36.11.51&id=1537055&acc=ACTIVE%20SERVICE&key=344E943C9DC262BB%2E20BA84C2D88F9A43%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__=1535991581_351562e2c5149fded41838285b2f1c15 On the Performance of Expected Transmission Count (ETX) for Wireless Mesh Networks]
 +
*[http://sbrt.org.br/sbrt2016/anais/ST02/1570269791.pdf Avaliação de Desempenho do Protocolo RPL em Ambientes com Mobilidade]
 +
*[https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2011-07-1/NET-2011-07-1_09.pdf RPL - Protocolo de roteamento para redes de baixa potência]
 
*[https://github.com/contiki-os/contiki/wiki/Contiki-Build-System Criando makefile]
 
*[https://github.com/contiki-os/contiki/wiki/Contiki-Build-System Criando makefile]
 
*[https://github.com/alignan/contiki/blob/master/core/sys/process.h Biblioteca process.h]  
 
*[https://github.com/alignan/contiki/blob/master/core/sys/process.h Biblioteca process.h]  
Linha 106: Linha 44:
 
*[http://www.ti.com/lit/ds/symlink/cc2420.pdf Radio cc2420]
 
*[http://www.ti.com/lit/ds/symlink/cc2420.pdf Radio cc2420]
 
*[https://github.com/marcozennaro/IPv6-WSN-book/tree/master/Releases Livro WSN Marco Zennaro]
 
*[https://github.com/marcozennaro/IPv6-WSN-book/tree/master/Releases Livro WSN Marco Zennaro]
 +
*[http://savannah.nongnu.org/projects/avr-libc/ Download avr-libc]
 +
*[https://www.nongnu.org/avr-libc/user-manual/install_tools.html Como instalar avr-libc]
 +
*[https://repositorio.ufsm.br/bitstream/handle/1/5353/FREITAS%2C%20JOSUE%20PAULO%20JOSE%20DE.pdf?sequence=1&isAllowed=y Uma proposta de arquitetura de pilha de comunicação em rede com um numero reduzido de camadas]
 +
*[https://anrg.usc.edu/contiki/index.php/Contiki_tutorials Tutoriais Contiki]

Edição atual tal como às 09h33min de 20 de dezembro de 2018