ecos - Gestores de dispositivos

Documentos relacionados
USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Nome Endereço IRQ COM1 3F8 4 COM2 2F8 3 COM3 3E8 4 COM4 2E UART - Universal Asynchronous Receiver/Transmitter. descrição

CODIGOS CONTROLE RS232 Matrix HDMI 4x4 Control EDID/RS232 (GB )

CODIGOS CONTROLE RS232 Matrix HDMI 4x2 Control EDID/RS232 (GB )

Sistemas Embebidos II Semestre de Verão de 2012/2013 Segunda atividade prática

1/24 FICHEIROS DE TEXTO

COMUNICAÇÃO SERIAL. Prof. Clayrton Henrique Microprocessadores Aula 30 Rev.02

Pretende-se neste trabalho familiarizar o aluno com a interface RS-232 e a sua aplicação em aquisição de dados num ambiente laboratorial

Sumário. Ficheiros. Ficheiros

CODIGOS CONTROLE RS232 Matrix HDMI 4x2 Control EDID/RS232 (GB )

Sistemas Microcontrolados

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Comunicação entre Processos Named Pipes (FIFO)

PROGRAMANDO A PORTA SERIAL USANDO API DO WINDOWS NA LINGUAGEM C.

A Nota Técnica na prioridade transmite créditos de B2B no Switches MDS

Porta Série SÉRIE x PARALELO PORTA SÉRIE. Comunicação série SÉRIE PARALELA

Exemplos de Programas em C para o 8051 para o compilador crossware EEL Prof. Raimes Moraes

Linguagem de Programação C. Arquivos

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG04056 Microcontroladores

Inicialmente a IBM (1981) disponibilizou uma porta paralela para ligação a impressoras (lentas)

Trabalho de AMSR. Especificação e Verificação de uma Câmara Fotográfica Digital. Problema a Resolver FEUP/MRSC/AMSR MPR. » Problema a concurso

Plano de Aula. 1 o semestre. Aula número 012 Periféricos Comunicação Serial. Conhecer os princípios de comunicação serial

1. CONFIGURAÇÃO DO PINO

PSI3441 Arquitetura de Sistemas Embarcados. 17ª Aula Introdução: CPUs, Interrupções e Gerenciamento de Memória

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Message Passing Interface - MPI. Jorge Barbosa

A linguagem C (visão histórica)

ENG-1450 Microcontroladores e Sistemas Embarcados. Lab03 Execução Experiência 01, Keypad, 7-seg, Exercícios

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Laboratório de Sistemas Processadores e Periféricos Porta Serial Prática 14

BR localization: Hotfix 002. Technical documentation Documentação Técnica Version Nov 27, de novembro de 2018

Conexão de roteadores back-to-back através das portas auxiliares (AUX)

Acetatos de apoio às aulas teóricas

Como obter a informação sobre os usuários conectados ao TTY usando o SNMP

Linguagem C Ficheiros Compilação Separada

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

SCC-211 Lab. Algoritmos Avançados

Roteiro de Laboratório 8 Serial Peripheral Interface (SPI) Prof. Walter Fetter Lages 21 de outubro de 2015

Comunicação de Dados. Comunicação de Dados

Programação em C Aplicações de Microprocessadores 2006/2007

Acesso Directo aos Recursos do Hardware

Elementos de entrada e saída com arquivos

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

Transmitter MISO MOSI SCLK

Comunicação Serial 1

Física Experimental VI

Algoritmos e Estruturas de Dados

Sincronização e memória compartilhada no Linux

Memória partilhada em Unix SysV

Comunicação entre Processos Memória Compartilhada

Entrada e Saída. Tópicos de E/S

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

UFPR Bacharelado em Ciência da Computação CI064 Software Básico Trabalho Semestral: Driver para a Interface Serial de maio de 2018

COS Sistemas Operacionais. SystemCalls() [Linux Kernel Development, 2 nd edition] Prof. Vítor Santos Costa

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Manipulação de Ficheiros

MAC323 Estruturas de Dados

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 17

Comunicação entre Processos

Introdução à Programação em C Input / Output

Curso introdutório de microcontroladores - Plataforma Arduino

PROJETO EM REDES DE SENSORES (TET 0020) ROTEIRO PARA CONFIGURAÇÃO DOS MÓDULOS XBEE

Exame de Sistemas de Operação 13 de Junho de 2006

Sistema Digitais. Bacharelado de Informática UEM DIN - Prof. Elvio 2017

Tópicos. Introdução. Padrões de Interfaceamento

LINGUAGEM C PARA O 8051

Técnicas de Programação I

Memória compartilhada

Sistemas Opera r cionais Sistemas de E/S 1

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira


Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Introdução a Engenharia Elétrica

Interrupções 8051 Porta Serial

Manual de Configuração Rápida. Magellan 2200 VS Magellan 2300 HS Linha Magellan 8300 / RE:

Entender o problema Encontrar um algoritmo para resolvê-lo. Implementar o algoritmo numa linguagem de programação

Arquitectura e Sistemas de Computadores I

Bravas shield sample app 2017

Linguagem de Programação C. Funções e Procedimentos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Linguagens de Programação I

1 System Calls no Linux

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída

Bravas shield light sample app 2017

User Manual. Linksys PAP2 Broadband Phone Service. Linhagratuita grupo csdata

Tutorial 132 CP DUO Configuração MODBUS Escravo

Comunicação entre Processos Memória Compartilhada

Linguagem C. André Tavares da Silva.

09 Unidade de controlo. v0.1

Driver DNP3.0 Mestre

Comunicação Serial PIC16F877A. Leandro Resende Mattioli. Centro Federal de Educação Tecnológica de Minas Gerais Unidade Araxá

Grupo de Robótica Experimental do Instituto Militar de Engenharia. Microcontroladores STM32 ARM Cortex-M3 Aula 04 Periféricos II

Manipulação de Arquivos Exercício/Exemplo:

Entrada e saída Introdução hardware de E/S

Interfaces e Periféricos 2005/2006

Introdução à linguagem C++

Transcrição:

ecos - Gestores de dispositivos gestores de dispositivos ( device drivers ) interface aplicacional (API) gestor de linha série raw serial driver tty driver ecos - device driver - user API cyg_io_lookup cyg_io_write cyg_io_read cyg_io_get_config cyg_io_set_config - obter identificador a partir de nome - operações de escrita - operações de leitura - obter informação de configuração - especificar configuração 1

Obter identificador ( handle ) a partir de nome Cyg_ErrNo cyg_io_lookup( const char *name, cyg_io_handle_t *handle ) Exemplo de nome: /dev/ser0 Escrever dados no dispositivo Cyg_ErrNo cyg_io_write( cyg_io_handle_t handle, const void *buf, cyg_uint32 *len ) buf len - dados a enviar para o dispositivo - dimensão dos dados a escrever / escritos 2

Ler dados do dispositivo Cyg_ErrNo cyg_io_read( cyg_io_handle_t handle, void *buf, cyg_uint32 *len ) buf len - vector para receber dados do dispositivo - dimensão dos dados a ler / lidos Obter configuração do dispositivo Cyg_ErrNo cyg_io_get_config( cyg_io_handle_t handle, cyg_uint32 key, void *buf, cyg_uint32 *len ) key buf len - tipo de informação a obter - estrutura onde colocar a informação (depende de key) - dimensão da informação a obter / obtida 3

Modificar configuração do dispositivo Cyg_ErrNo cyg_io_set_config( cyg_io_handle_t handle, cyg_uint32 key, const void *buf, cyg_uint32 *len ) key buf len - tipo de parâmetros a modificar - novos valores dos parâmetros (depende de key) - dimensão ocupada pelos novos parâmetros Estruturas de dados associadas ao dispositivo série typedef struct { cyg_serial_baud_rate_t cyg_serial_stop_bits_t cyg_serial_parity_t cyg_serial_word_length_t cyg_uint32 baud; stop; parity; word_length; flags; } cyg_serial_info_t; 4

word_length -- número de bits por caracter CYGNUM_SERIAL_WORD_LENGTH_5 CYGNUM_SERIAL_WORD_LENGTH_6 CYGNUM_SERIAL_WORD_LENGTH_7 CYGNUM_SERIAL_WORD_LENGTH_8 baud -- baud rate CYGNUM_SERIAL_BAUD_50... CYGNUM_SERIAL_BAUD_9600 CYGNUM_SERIAL_BAUD_14400 CYGNUM_SERIAL_BAUD_19200 CYGNUM_SERIAL_BAUD_38400 CYGNUM_SERIAL_BAUD_57600 CYGNUM_SERIAL_BAUD_115200 CYGNUM_SERIAL_BAUD_234000 stop -- número de stop bits CYGNUM_SERIAL_STOP_1 CYGNUM_SERIAL_STOP_1_5 CYGNUM_SERIAL_STOP_2 parity -- paridade CYGNUM_SERIAL_PARITY_NONE CYGNUM_SERIAL_PARITY_EVEN CYGNUM_SERIAL_PARITY_ODD CYGNUM_SERIAL_PARITY_MARK CYGNUM_SERIAL_PARITY_SPACE 5

flags -- máscara de bits que controla o comportamento do gestor de dispositivo série CYG_SERIAL_FLAGS_xxx: #define CYG_SERIAL_FLAGS_RTSCTS 0x0001 Se este bit estiver activo, a porta série é colocada no modo hardware handshake. Neste modo, os pinos CTS e RTS controlam quando é que os dados podem ser enviados / recebidos. Este bit é ignorado caso o hardware não suporte este modo de funcionamento. typedef struct { cyg_int32 cyg_int32 cyg_int32 cyg_int32 rx_bufsize; rx_count; tx_bufsize; tx_count; } cyg_serial_buf_info_t; rx_bufsize rx_count tx_bufsize tx_count -- tamanho do buffer de recepção -- número corrente de bytes no buffer de recepção -- tamanho do buffer de transmissão -- número corrente de bytes no buffer de transmissão Todos estes valores são colocados a zero no caso do dispositivo não suportar armazenamento ( buffering ) (i.e. dispositivo acedido por polling ). 6

Valores de key e tipo de informação CYG_IO_GET_CONFIG_SERIAL_INFO cyg_serial_info_t Função: This function retrieves the current state of the driver and hardware. This information contains fields for hardware baud rate, number of stop bits, and parity mode. It also includes a set of flags that control the port, such as hardware flow control. CYG_IO_GET_CONFIG_SERIAL_BUFFER_INFO cyg_serial_buf_info_t This function retrieves the current state of the software buffers in the serial drivers. For both receive and transmit buffers it returns the total buffer size and the current number of bytes occupied in the buffer. It does not take into account any buffering such as FIFOs or holding registers that the serial device itself may have. 7

CYG_IO_GET_CONFIG_SERIAL_OUTPUT_DRAIN void * This function waits for any buffered output to complete. This function only completes when there is no more data remaining to be sent to the device. CYG_IO_GET_CONFIG_SERIAL_OUTPUT_FLUSH void * This function discards any buffered output for the device. 8

CYG_IO_GET_CONFIG_SERIAL_INPUT_DRAIN void * This function discards any buffered input for the device. CYG_IO_GET_CONFIG_SERIAL_ABORT void* This function will cause any pending read or write calls on this device to return with -EABORT. 9

CYG_IO_GET_CONFIG_SERIAL_READ_BLOCKING cyg_uint32 (values 0 or 1) This function will read back the blocking-mode setting for read calls on this device. This call is only available if the configuration option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING is enabled. CYG_IO_GET_CONFIG_SERIAL_WRITE_BLOCKING cyg_uint32 (values 0 or 1) This function will read back the blocking-mode setting for write calls on this device. This call is only available if the configuration option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING is enabled. 10

CYG_IO_SET_CONFIG_SERIAL_INFO cyg_serial_info_t This function updates the information for the driver and hardware. The information contains fields for hardware baud rate, number of stop bits, and parity mode. It also includes a set of flags that control the port, such as hardware flow control. CYG_IO_SET_CONFIG_SERIAL_READ_BLOCKING cyg_uint32 (values 0 or 1) This function will set the blocking-mode for read calls on this device. This call is only available if the configuration option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING is enabled. 11

CYG_IO_SET_CONFIG_SERIAL_WRITE_BLOCKING cyg_uint32 (values 0 or 1) This function will set the blocking-mode for write calls on this device. This call is only available if the configuration option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING is enabled. #include <cyg/kernel/kapi.h> #include <cyg/error/codes.h> #include <cyg/io/io.h> #include <cyg/io/serialio.h> #include <cyg/io/config_keys.h> #include <stdio.h> Exemplo int main(void) { Cyg_ErrNo err; cyg_io_handle_t serh; char c; char bufr[10]; char bufw[10]="123456789"; int n; printf("ola, ecos world!\n"); err = cyg_io_lookup("/dev/ser0", &serh); printf("lookup err=%x\n", err); while(1){ c = getchar(); if (c=='l') { n = 10; err = cyg_io_read(serh, bufr, &n); printf("io_read err=%x, n=%d buf=%s\n", err, n, bufr); } if (c=='w') { n = 10; err = cyg_io_write(serh, bufw, &n); printf("io_write err=%x, n=%d buf=%s\n", err, n, bufw); } } return 0; } 12