2 o -Trabalho de Laboratorio - ecos Sistemas Computacionais IST - 2003/2004 Recolha de Informac~ao e Acesso Remoto (2 a -parte) 1 Introduc~ao Alguns sistemas embebidos s~ao desenvolvidos sobre plataformas relativamente simples, com escassos recursos, e onde a utilizac~ao de sistemas operativos como suporte a aplicac~ao pode n~ao ser viavel. No entanto, em muitos outros casos, a exist^encia desse suporte ao nvel de sistema operativo (mesmo que com funcionalidade reduzida) pode facilitar grandemente o desenvolvimento das aplicac~oes. Esta parte do trabalho de laboratorio tem como objectivo fundamental a familiarizac~ao por parte dos alunos com a utilizac~ao de nucleos multitarefa para o desenvolvimento de aplicac~oes concorrentes em sistemas embebidos. Em particular, dever~ao adquirir alguma sensibilidade na utilizac~ao de mecanismos de sincronizac~ao e comunicac~ao entre tarefas, no contexto de aplicac~oes concorrentes. O nucleo multitarefa (sistema operativo) a utilizar sera o ecos (Embedded Congurable Operating System) a funcionar numa plataforma PC. 2 Descric~ao do problema As limitac~oes inerentes a alguns sistemas embebidos tornam desejavel a possibilidade de interac- c~ao remota para transfer^encia de informac~ao, ou operac~oes de recongurac~ao. No caso da aplicac~ao desenvolvida no 1 o Trabalho, as limitac~oes no que respeita a interface com o utilizador, constituem um exemplo de uma dessas situac~oes. Neste trabalho, pretende-se desenvolver uma aplicac~ao que, funcionando num ambiente com mais recursos (PC), permita oferecer ao utilizador uma interface mais exvel na interacc~ao com o sistema desenvolvido no 1 o Trabalho. Esta aplicac~ao sera constituda por varias tarefas (aplicac~ao concorrente) que ir~ao interagir entre si, e com a placa PICDEM-2 (1 o Trabalho) atraves de uma linha serie RS232. Mais concretamente, dever~ao existir pelo menos tr^es tarefas, responsaveis, respectivamente, pela interface com o utilizador, a comunicac~ao com a placa PICDEM-2, e o processamento da informac~ao recolhida a partir da placa PICDEM-2. 2.1 Recolha de informac~ao Relativamente a primeira parte do trabalho de laboratorio, devera agora ser acrescentada a seguinte funcionalidade: Comunicac~ao serie RS232 para permitir o acesso remoto. 1
Realizac~ao das operac~oes de recongurac~ao e transfer^encia da informac~ao recolhida. Aquando da axac~ao da letra \R" no LCD, correspondente a situac~ao de se ultrapassar metade da capacidade de armazenamento, enviar tambem uma mensagem de noticac~ao atraves da linha serie RS232. 3 Interface com o utilizador Na parte do trabalho que se executa no PC, existe uma tarefa responsavel pela interface com o utilizador, que permitira a este efectuar um conjunto de comandos para interagir, quer com a placa PICDEM-2 (atraves da(s) tarefa(s) de comunicac~ao), quer com a tarefa de processamento de informa- c~ao. S~ao os seguintes, os comandos a disponibilizar: Comandos Disponveis comando argumentos descric~ao cr - consultar relogio ar <hh><mm><ss> - acertar relogio cpa - consultar perodo de amostragem mpa <p> - modicar perodo de amostragem cnr - consultar valor NREG mnr <r> - modicar valor NREG tr <n> - tranferir <n>registos (ind. leit. corrente) tri <n><i> - tranferir <n>registos a partir do ndice <i> lri <n><i> - listar <n>registos a partir do ndice <i> lrt < n > < hh > < mm > < ss > - listar <n>registos a partir do instante "hh:mm:ss" rr - reinicializar registos ap -activar processamento dp - desactivar processamento cpp - consultar perodo da tarefa de processamento mpp <p> - modicar perodo da tarefa de processamento le - listar estatsticas TV(min/max/med) re - reinicializar estatsticas No primeiro grupo de comandos, a interacc~ao e feita com a tarefa de comunicac~ao, e no ultimo grupo de comandos a interacc~ao e feita com a tarefa de processamento. A listagem dos registos e feita acedendo directamente a uma zona de memoria onde eles se encontram, e que pode ser acedida pelas varias tarefas. Esta zona de memoria esta organizada na forma de um \buer" circular, com capacidade para NRBUF=1000 registos. A actualizac~ao dos registos nessa zona de memoria e feita pela tarefa de comunicac~ao, a pedido da tarefa de processamento, ou do utilizador atraves dos comandos tr e tri. O comando rr permite reinicializar esta zona de memoria (considerar o \buer" como tendo zero registos). Todos os comandos especicados acima que implicam comunicac~ao com outras tarefas, possuem uma interface sncrona (i.e. bloqueiam a espera de resposta). No entanto, deve ser prevista a hipotese de impossibilidade de comunicac~ao. No caso em que o comando especicado n~ao seja executado com sucesso, a mensagem de resposta tera um codigo de erro. 2
Os comandos de transfer^encia de registos (entre a placa PICDEM-2 e o PC) possuem duas variantes. Na primeira (tr), apenas se especica o numero (n) de registos pretendidos, sendo estes obtidos (caso existam) a partir do primeiro registo ainda n~ao transferido. Na segunda variante (tri), para alem do numero n, e ainda especicado qual o ndice (i) a partir do qual se pretendem os registos. O ndice zero corresponde ao registo mais antigo existente no \buer" circular, independentemente de ja ter sido transferido ou n~ao. Nos comandos de listagem de registos (visualizac~ao dos registos no ecr~a por parte do utilizador), em que se acede directamente a memoria partilhada onde se encontram os registos ja transferidos, existe a possibilidade de especicar o ndice, ou a estampilha temporal do primeiro dos registos a listar. No caso da estampilha temporal, caso o valor especicado n~ao exista, sera considerado como registo inicial o primeiro que tiver uma estampilha superior a especicada. Tanto nos comandos de transfer^encia como nos de listar, caso n~ao exista o numero suciente de registos para satisfazer o pedido, ser~ao enviados / listados os registos disponveis (eventualmente zero). 4 Processamento da informac~ao recolhida A tarefa responsavel pelo desencadear da transfer^encia, e posterior processamento da informac~ao, tera um funcionamento periodico (perodo PPROC). Em cada iterac~ao, faz o pedido de transfer^encia de NR=20 registos (atraves da tarefa de comunicac~ao), e, apos a noticac~ao da transfer^encia, faz o respectivo processamento de modo a actualizar os seguintes dados estatsticos: valores maximo e mnimo da temperatura e da tens~ao (com refer^encia a hora a que ocorreram e valor do outro par^ametro, ou seja, registo completo), e ainda a media (correspondente aos registos existentes nesse momento em memoria) de cada um desses dois par^ametros (temperatura e tens~ao). Em funcionamento normal, a tarefa de processamento faz os seus calculos em \sil^encio". Apenas envia uma mensagem para o ecr~a no caso de surgir algum novo maximo ou mnimo de algum dos par^ametros (temperatura, tens~ao). Esta tarefa aceita comandos da tarefa do utilizador para lhe enviar os dados estatsticos, ou para reinicializar as estatsticas. A tarefa de processamento podera ainda ser activada ou desactivada pelo utilizador, que tambem pode mudar o seu perodo. O perodo PPROC e inicialmente 30 segundos mas pode tomar valores na gama [10.. 3600] segundos. Tal como foi dito acima, a informac~ao recolhida (registos) devera ser mantida numa zona de memoria partilhada, acessvel em escrita pela tarefa de comunicac~ao, e em leitura pelas tarefas de processamento e de interface com o utilizador. O acesso coerente a essa zona de memoria, por parte das varias tarefas, e de extrema import^ancia para o correcto funcionamento da aplicac~ao. 5 Comunicac~ao entre o PC e a Placa PICDEM-2 A comunicac~ao entre o PC e a placa PICDEM-2 sera canalizada atraves de uma tarefa dedicada (ou duas { recepc~ao e transmiss~ao) que faz a interface com o gestor de dispositivo (\device driver") da porta serie fornecido pelo ecos ("/dev/ser0"). O suporte fsico para a comunicac~ao sera uma linha serie RS232 com as seguintes caractersticas: 9600 baud, 8 bits, sem paridade, 1 stop bit. 3
Sobre a linha serie RS232 sera estabelecido um protocolo simples de troca de mensagens. Uma mensagem e iniciada com um codigo especco de incio de mensagem SOM (ver em ap^endice o valor dos codigos), e terminada com um codigo especco de m de mensagem EOM: SOM <MSG> EOM A mensagem propriamente (<MSG>) dita comeca com o identicador do comando, sendo este seguido pelos eventuais dados associados a esse comando: <MSG> := <CMD> <DADOS> Tipos de mensagens comando dados descric~ao CRLG [H M S] consultar relogio ARLG HMS acertar relogio CPAM [p] consultar perodo de amostragem MPAM p modicar perodo de amostragem CNRG consultar valor NREG MNRG r modicar valor NREG TREG n[regs] transferir <n>registos TRGI n i [regs] transferir <n>registos a partir do ndice <i> NBCH noticac~ao de buer meio cheio Na tabela acima (Tipos de mensagens), tanto os codigos de comando como cada um dos varios campos de dados, com excepc~ao de regs, t^em uma dimens~ao de um octeto. Cada registo, e fazem parte da mensagem n registos, tem uma dimens~ao de 6 octetos (HMSTVv). Signicado dos campos de dados: H - horas [00.. 23] M -minutos [00.. 59] S - segundos [00.. 59] p -perodo de amostragem da temperatura e tens~ao (em segundos) [0.. 99] r -novo valor para NREG [1.. 250] n -numero de registos a ler / lidos [0.. 250] i -ndice do primeiro registo a ler / lidos [0.. NREG-1] regs - registos (n x fhmstvvg) (T - temperatura V,v - tens~ao) Os dados representados entre parentesis rectos ([]) apenas fazem parte da mensagem de resposta en~ao do pedido (apesar do codigo do comando ser o mesmo). Mensagens cuja resposta n~ao tenha dados, ou em que tenha ocorrido um erro na execuc~ao remota do comando, ter~ao o seguinte formato: <MSG> := <CMD> <ERRO> 4
em que <ERRO> pode tomar os valores CMD OK e CMD ERRO. A interface de comunicac~ao especicada deve ser estritamente respeitada, de modo a permitir interligar componentes desenvolvidos de forma independente, se assim se desejar. Com excepc~ao das mensagens de noticac~ao (NBCH), que ser~ao escritas no ecr~a do PC directamente pela tarefa de comunicac~ao, todas as restantes mensagens s~ao encaminhadas para a tarefa que efectuou o pedido, sendo esta a responsavel pela sua axac~ao, se for caso disso. No caso dos comandos de transfer^encia de registos, a tarefa que desencadeou essa operac~ao apenas recebe a noticac~ao da sua conclus~ao com sucesso ou n~ao. Os registos propriamente ditos s~ao colocados na memoria partilhada pela tarefa de comunicac~ao, como se disse anteriormente. Sendo o ecr~a do PC um recurso partilhado por mais do que uma tarefa, devera ser garantida a coer^encia na sua utilizac~ao. 6 Ambiente de suporte/desenvolvimento Este trabalho sera programado na linguagem C, utilizando como sistema de desenvolvimento um PC com o sistema operativo Linux. No entanto, tal como se disse acima, o sistema operativo de suporte a aplicac~ao e o ecos, pelo que o Linux apenas e utilizado como sistema de desenvolvimento. A aplicac~ao nal, ligada com o ecos, ira depois ser executada de forma nativa nopcalvo, que sera reinicializado com esta aplicac~ao / sistema operativo. 7 Desenvolvimento do projecto No desenvolvimento do projecto, aconselha-se a utilizac~ao de uma estrutura modular, com testes faseados. Nesse sentido, podem tirar partido da exist^encia de um \alvo sintetico" do ecos para a plataforma PC, a funcionar no contexto do sistema operativo Linux. Desta forma e possvel testar varias partes do trabalho sem necessidade de reiniciar o PC, ou de transferir a aplicac~ao para um PC alvo. Na interface com o utilizador, n~ao se pretende nada de muito complexo (n~ao e esse o objectivo fundamental). Para simplicar a sua concretizac~ao, os alunos podem/devem utilizar um interpretador de comandos rudimentar, que e fornecido (ver pagina da disciplina). A interface de comunicac~ao especicada deve ser estritamente respeitada, de modo a permitir interligar componentes desenvolvidos por diferentes grupos, se assim se desejar. 8 Entrega do trabalho Este trabalho deve ser entregue ate as 16:00h do dia 4 de Junho de 2004 na Secc~ao de Sistemas Digitais e Computadores (gabinete do docente responsavel da disciplina). O material a entregar consiste numa disquete com todos os programas desenvolvidos, e numa listagem dos mesmos. Devem ainda juntar 1ou2paginas A4 com a especicac~ao da estrutura de dados e as partes mais relevantes dos algoritmos (em pseudo-codigo). Todos estes elementos devem vir identicados com o numero do grupo de laboratorio e identica- 5
c~ao dos alunos que o comp~oem. A visualizac~ao dos trabalhos sera efectuada na semana de 7 de Junho (no horario de laboratorio) com base nos trabalhos entregues. As discuss~oes dos trabalhos ser~ao realizadas na semana de 14 de Junho, em data e hora a axar posteriormente na pagina da disciplina. Refer^encias [1] Microchip Technology Inc. PICDEM 2 Plus User's Guide. 2002. [2] Microchip Technology Inc. PIC18FXX2 Data Sheet. 2002. [3] Microchip Technology Inc. MPLAB C18 C Compiler Getting Started. 2002. [4] Microchip Technology Inc. MPLAB C18 C Compiler User's Guide. 2002. [5] Microchip Technology Inc. MPLAB C18 C Compiler Libraries. 2002. [6] Hitachi. HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver). [7] Microchip Technology Inc. TC74 - Tiny Serial Digital Thermal Sensor. 2002. [8] Microchip Technology Inc. 24AA256/24LC256/24FC256-256K I2C CMOS Serial EEPROM. 2002. [9] Red Hat, Inc. ecos Reference Manual. 2003. A Codigos dos comandos usados na comunicac~ao serie /* Assume-se que os valores de SOM e EOM nao ocorrem na mensagem */ #define SOM 0xFD /* inicio mensagem */ #define EOM 0xFE /* fim mensagem */ #define CRLG 0xC0 /* consultar relogio */ #define ARLG 0xC1 /* acertar relogio */ #define CPAM 0xC2 /* consultar periodo amostragem */ #define MPAM 0xC3 /* modificar periodo amostragem */ #define CNRG 0xC4 /* consultar valor NREG */ #define MNRG 0xC5 /* modificar valor NREG */ #define TREG 0xC6 /* transferir registos */ #define TRGI 0xC7 /* transferir registos a partir do indice especificado */ #define NBCH 0xC8 /* notificacao buffer meio cheio */ #define CMD_OK 0 /* comando realizado com sucesso */ #define CMD_ERRO 0xFF /* erro no comando */ 6