Instituto Tecnológico de Aeronáutica
CE-235
Sistemas Embarcados de Tempo Real
Prof. Dr. Adilson Marques da Cunha
Prof. Dr. Luiz Alberto Vieira Dias
(Relatório 1 – Warm Ups)
José Luiz Moreira
Sumário
1.
Warm Up 1 – HelloWord ... 5
2.
Warm Up 2 – Passive Classes ... 11
3.
Warm Up 3 - Traffic Light... 18
4.
Warm Up 4 - Eletronic Light ... 23
5.
Warm Up 5 - Battleship... 26
6.
Warm Up 6 - Traffic System ... 29
7.
Warm Up 7 - Client/Server ... 32
8.
Warm Up 8 - RQA-RT ... 36
Lista de Figuras
Figura 1 - Criar Cápsula ... 5
Figura 2 - Diagrama de Estado ... 6
Figura 3 - Incluir Código da Transição ... 6
Figura 4 - Incluir I/O Libraries ... 7
Figura 5 - Criar Componente ... 8
Figura 6 - Tornar Componente Ativo ... 8
Figura 7 - Definir o TargetConfiguration ... 9
Figura 8 - Definir o Topcapsule ... 9
Figura 9 - Criar Processador ... 10
Figura 10 - Tornar o Processador Ativo ... 10
Figura 11 - Tela de Processamento do Warm Up 1 ... 11
Figura 12 - Criar Classe Passiva ... 12
Figura 13 - Criar Operação ... 12
Figura 14 - Definir Parâmetros ... 13
Figura 15 - Definir Código da Operação ... 13
Figura 16 - Definir O Tipo de Operação como Global ... 14
Figura 17 - Incluir I/O Libraries ... 14
Figura 18 - Definir o Environment ... 15
Figura 19 - Desabilitar a Opção Attach to Target on startup ... 15
Figura 20 - Tela de Processamento do Warm Up ... 16
Figura 21 - Alteração do Programa Fonte... 17
Figura 22 - Compilação do Programa ... 17
Figura 23 - Processamento do Warm Up ... 18
Figura 24 - Sincronizar o Código... 18
Figura 25 - Criar Protocolo ... 19
Figura 26 - Definir Sinais do Protocolo ... 20
Figura 27 - Criação de Porta e Definição de suas características ... 20
Figura 28 - Criar Diagrama de Estado ... 21
Figura 29 - Definir características da a Transição ... 21
Figura 30 - Diagrama de Estado após definição das características ... 22
Figura 31 - Criação da Probe para Execução do Programa ... 22
Figura 32 - Tela de Processamento do Warm Up ... 23
Figura 33 - Definir uma Operação do Tipo Trigger ... 24
Figura 34 - Definir a Trigger a ser usada na Transição ... 24
Figura 35 - Adicionar a condição de execução da Transição ... 25
Figura 36 - Diagrama de Estado da Cápsula LockSystem ... 25
Figura 37 - Tela de Processamento do Warm Up 4 ... 26
Figura 38 - Diagrama de Estado da Cápsula Battleship ... 27
Figura 40 - Diagrama de Estrutura da Cápsula World ... 28
Figura 41 - Dependência entre as classes BattleShip, Ocean e o Timer ... 28
Figura 42 - Tela de Processamento do Warm Up 5 ... 29
Figura 43 - Diagrama de Estado da Cápsula Controller ... 30
Figura 44 - Diagrama de Estrutura da Cápsula Controller ... 30
Figura 45 - Diagrama de Estrutura do Container Intersection ... 31
Figura 46 - Tela de Processamento do Warm Up 6 ... 31
Figura 47 - Cápsula Client com a Opção do Tipo Optional ... 32
Figura 48 - Transição Inicial da Cápsula TheSystem ... 33
Figura 49 - Tela de Processamento do Warm Up 7 ... 33
Figura 50 - Cápsula Client com a Opção do Tipo Plug-in ... 34
Figura 51- Inserir novo client ... 35
Figura 52 - Alterar o Código da transição inicial ... 35
Figura 53 - Processamento do Warm Up 7 ... 36
Figura 54 - Criar Package ... 37
Figura 55 – Conexão entre Client e Server ... 38
Figura 56 - Criar Diagrama de Colaboração ... 38
Figura 57 - Criar Diagrama de Sequência... 39
Figura 58 - Setar Opções de FromPort, ToPort e Signal ... 39
Figura 59 - Diagrama de Sequência ... 40
Figura 60 - Selecionar opção de Reuse ... 40
Figura 61 - Selecionar opção de driver ... 41
Figura 62 - Definir a Saída do Teste ... 41
1.
Warm Up 1 – HelloWord
A realização do Warm Up 1 – HelloWord foi executada sem problemas. Foi um programa de baixa complexidade, mas que auxiliou na inicialização do autor desta lista no Software Rational Rose Real Time. Através desse exercício foi possível aprender como criar um novo modelo, uma cápsula, adicionar comportamento a mesma, além de aprender a compilar, executar e depurar o modelo.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos: • Criar um novo modelo
• Criar uma cápsula chamada HelloWord – vide Figura 1 - Criar Cápsula
• Abrir o Diagrama de Estado, incluir um estado chamado Active e criar a transição inicial – vide Figura 2 - Diagrama de Estado
• Incluir na Transição inicial o código a ser executado – vide Figura 3 - Incluir Código da Transição
• Incluir as I/O Libraries necessárias para rodar o programa C++ - vide Figura 4 - Incluir I/O Libraries
Figura 2 - Diagrama de Estado
Figura 4 - Incluir I/O Libraries
Os procedimentos para criação do componente e processador, a compilação e a execução do programa, são listados a seguir.
Após a criação do componente, vide Figura 5 - Criar Componente, deve-se seguir os seguintes passos:
• Arrastar a cápsula HelloWord para o componente
• Tornar o componente ativo – vide Figura 6 - Tornar Componente Ativo • Definir o TargetConfiguration – vide Figura 7 - Definir o TargetConfiguration • Definir o TopCapsule – Figura 8 - Definir o Topcapsule
• Criar Processador – vide Figura 9 - Criar Processador • Arrastar o componente HelloWord para o processador
• Tornar o processador ativo – vide Figura 10 - Tornar o Processador Ativo Após seguir estes passos, já se pode compilar e executar o programa.
Figura 5 - Criar Componente
Figura 7 - Definir o TargetConfiguration
Figura 9 - Criar Processador
A seguir veremos a execução do programa.
Figura 11 - Tela de Processamento do Warm Up 1
2.
Warm Up 2 – Passive Classes
Na realização do Warm Up 2 – Passive Class foi possível aprender como criar classe passiva e como adicionar comportamento à mesma.
Os seguintes passos foram executados para o desenvolvimento deste exercício. • Criar um modelo
• Criar a classe passiva – vide Figura 12 - Criar Classe Passiva
• Criar a operação principal para a classe – vide Figura 13 - Criar Operação • Definir os parâmetros da operação – vide Figura 14 - Definir Parâmetros
• Inserir na operação o código a ser executado – vide Figura 15 - Definir Código da Operação
• Definir a operação como global – vide Figura 16 - Definir O Tipo de Operação como Global
• Inserir I/O Libraries – vide Figura 17 - Incluir I/O Libraries • Definir o Environment – vide Figura 18 - Definir o Environment
• Como é uma Classe Passiva deve-se desabilitar a opção Attach to target on startup – vide Figura 19 - Desabilitar a Opção Attach to Target on startup
• Criar o componente e o processador – vide procedimentos descrito no Warm Up 1 • Rodar o Programa
Figura 12 - Criar Classe Passiva
Figura 14 - Definir Parâmetros
Figura 16 - Definir O Tipo de Operação como Global
Figura 18 - Definir o Environment
A seguir veremos a execução do programa.
Figura 20 - Tela de Processamento do Warm Up
Foi solicitado neste Warm Up que se fizesse alteração no programa com um editor qualquer, compilar e executar o programa em modo de comando, e depois sincronizar o programa alterado com o programa do projeto do Rational Rose.
Figura 21 - Alteração do Programa Fonte
Figura 23 - Processamento do Warm Up
Figura 24 - Sincronizar o Código
3.
Warm Up 3 - Traffic Light
Na realização do Warm Up 3 – Traffic light foi possível aprender como criar protocolo e adicionar sinais de entrada e saída no mesmo.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos • Criar um modelo
• Criar protocolo – vide Figura 25 - Criar Protocolo
• Definir sinais para o protocolo – vide Figura 26 - Definir Sinais do Protocolo • Criar cápsula – vide Figura 1 - Criar Cápsula
• Criar porta e definir característica da porta (toda porta que se comunica com outra deve ser do tipo End Port) – vide Figura 27 - Criação de Porta e Definição de suas características
• Definir o diagrama de estado da cápsula a partir do diagrama de sequência dado – vide Figura 28 - Criar Diagrama de Estado
• Definir as características das transições – vide Figura 29 - Definir características da a Transição
• Ao rodar o programa deve-se criar um elemento Probe na porta com os sinais do protocolo red, green e yellow – vide Figura 26 - Definir Sinais do Protocolo
Figura 26 - Definir Sinais do Protocolo
Figura 28 - Criar Diagrama de Estado
Figura 29 - Definir características da a Transição
Figura 30 - Diagrama de Estado após definição das características
OBS: Observem que as linhas das transições estão contínua.
Figura 31 - Criação da Probe para Execução do Programa
Após a criação do Probe podemos executar o programa. Basta clicar no botão de rodar o programa e clicar nos sinais definidos no Probe. Vide figura abaixo.
Figura 32 - Tela de Processamento do Warm Up
4.
Warm Up 4 - Eletronic Light
Na realização do Warm Up 4 – Eletornic Lock foi possível aprender como criar trigger , criar uma máquina de estado para uma passive class alem de adicionar código em transição.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos • Criar um modelo
• Criar uma classe passiva – vide Figura 12 - Criar Classe Passiva • Incluir I/O Libraries – vide Figura 4 - Incluir I/O Libraries • Criar operação principal – vide Figura 13 - Criar Operação
• Definir a operação principal como global – vide Figura 16 - Definir O Tipo de Operação como Global
• Criar parâmetros – vide Figura 14 - Definir Parâmetros
• Inserir código na operação principal – vide Figura 15 - Definir Código da Operação
• Criar nova operação – vide Figura 13 - Criar Operação
• Definir uma operação como uma trigger – vide Figura 33 - Definir uma Operação do Tipo Trigger
• Criar a máquina de estado – vide Figura 28 - Criar Diagrama de Estado
• Acrescentar o código para cada transição – vide Figura 15 - Definir Código da Operação
• Definir a trigger que será usada em cada transição – vide Figura 34 - Definir a Trigger a ser usada na Transição
• Adicionar o teste a ser feito nesta transição – vide Figura 35 - Adicionar a condição de execução da Transição
• Criar componente – vide Figura 5 - Criar Componente • Torná-lo ativo – vide Figura 6 - Tornar Componente Ativo • Compilar o programa
• Desabilitar o opção Attach to target on startup vide Figura 19 - Desabilitar a Opção Attach to Target on startup
• Criar novo processador – vide Figura 9 - Criar Processador
• Tornar o Processador ativo – vide Figura 10 - Tornar o Processador Ativo • Rodar o programa
Figura 34 - Definir a Trigger a ser usada na Transição
Figura 35 - Adicionar a condição de execução da Transição
Figura 36 - Diagrama de Estado da Cápsula LockSystem
A seguir veremos a execução do programa.
5.
Warm Up 5 - Battleship
Na realização do Warm Up 5 – Battleship foi o primeiro exercício onde encontrei dificuldades uma vez que o tutorial é sucinto. Mas com a ajuda dos monitores foi possível realizar o Warm UP. Através deste Warm Up foi possível aprender como criar ligar cápsulas e utilizar o Timing Service Library.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos • Abrir um modelo já existente no diretório c:\MRRT\WarmUp • Salvar o modelo
• Criar uma cápsula chamada World – vide Figura 1 - Criar Cápsula • Criar uma cápsula chamada BattleShip – vide Figura 1 - Criar Cápsula
• Criar o diagrama de estado de para esta cápsula a partir do diagrama de sequência dado – vide Figura 28 - Criar Diagrama de Estado
• Acrescentar uma porta e um timer na estrutura da cápsula – vide Figura 39 - Diagrama de Estrutura da Cápsula BattleShip
• Colocar a cápsula Ocean já definida e a cápsula Battleship como capsule role da cápsula World – vide Figura 38 - Diagrama de Estado da Cápsula Battleship • Criar as dependência entre as cápsulas Battlship, Ocean e o RTTimeSpec – vide
Figura 41 - Dependência entre as classes BattleShip, Ocean e o Timer • Criar Componente – vide Figura 5 - Criar Componente
• Criar processador – vide Figura 9 - Criar Processador
• Rodar o programa – vide Figura 42 - Tela de Processamento do Warm Up 5 • Checar se a execução foi correta através do diagrama de sequência gerado no
Figura 38 - Diagrama de Estado da Cápsula Battleship
Figura 40 - Diagrama de Estrutura da Cápsula World
Figura 41 - Dependência entre as classes BattleShip, Ocean e o Timer
Figura 42 - Tela de Processamento do Warm Up 5
Figura 41 – Diagrama de Sequência gera pelo processamento Warm Up 5
6.
Warm Up 6 - Traffic System
Na realização do Warm Up 6 – Traffic System foi reforçado a maneira de criar container de cápsulas, adicionando suas estruturas e adicionar estas cápsulas no container.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos • Abrir um modelo já existente no diretório c:\MRRT\WarmUp • Salvar o modelo
• Criar uma cápsula chamada Controller – vide Figura 1 - Criar Cápsula
• Criar o diagrama de estado da cápsula Controller baseado no diagrama de sequência dado – vide Figura 44 - Diagrama de Estrutura da Cápsula Controller • Definir a estrutura da cápsula controller, incluindo as portas e o timer – vide
Figura 44 - Diagrama de Estrutura da Cápsula Controller • Criar um container de cápsulas chamada Intersection • Adicionar uma capsule role baseada na cápsula Controller • Adiconar 4 capsule role baseada na cápsula TrafficLight
• Conectar as as cápsulas TrafficLight ao controler – vide Figura 45 - Diagrama de Estrutura do Container Intersection
• Criar componente, vide Figura 5 - Criar Componente • Criar processador – vide Figura 9 - Criar Processador
• Rodar o programa – vide Figura 46 - Tela de Processamento do Warm Up 6
Figura 43 - Diagrama de Estado da Cápsula Controller
Figura 45 - Diagrama de Estrutura do Container Intersection
A seguir veremos a execução do programa.
7.
Warm Up 7 - Client/Server
Na realização do Warm Up 7 – Client/Server foi possível aprender como instanciar cápsula dinamicamente e como instanciar uma cápsula importada em tempo de execução (utilização de frame).
Para o desenvolvimento deste exercício seguiu-se os seguintes passos • Abrir um modelo já existente no diretório c:\MRRT\WarmUp • Salvar o modelo
• Alterar a capsule role Client para o tipo Optional no container de cápsula TheSystem – vide Figura 47 - Cápsula Client com a Opção do Tipo Optional • Adicionar uma transição no diagrama de estado da cápsula TheSystem e
acrescentar o código para para encarnar a cápsula Client – vide Figura 48 - Transição Inicial da Cápsula TheSystem
• Criar componente, vide Figura 5 - Criar Componente • Criar processador – vide Figura 9 - Criar Processador
• Rodar o programa – vide Figura 46 - Tela de Processamento do Warm Up 6
Figura 48 - Transição Inicial da Cápsula TheSystem
A seguir veremos a execução do programa.
A segunda parte deste Warm Up mostra como utilizar cápsulas importadas, com o objetivo de otimizar o uso memória no sistema.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos • Salvar o modelo como ClientServerImported
• Alterar a capsule role Client para o tipo Plug-in no container de cápsula TheSystem – vide Figura 47 - Cápsula Client com a Opção do Tipo Optional • Adicionar um novo client na estrutura do TheSystem – vide Figura 47 - Cápsula
Client com a Opção do Tipo Optional
• Altera o código da Transição inicial - – vide Figura 47 - Cápsula Client com a Opção do Tipo Optional
• Rodar o programa – vide Figura 46 - Tela de Processamento do Warm Up 6
Figura 51- Inserir novo client
Figura 53 - Processamento do Warm Up 7
8.
Warm Up 8 - RQA-RT
Na realização do Warm Up 8 – RQA-RT foi possível aprender a criar um diagrama de sequência a partir de um modelo existente e criar um teste controlado deste diagrama de sequêmcia.
Para o desenvolvimento deste exercício seguiu-se os seguintes passos
• Abrir um modelo ClientServer já existente no diretório c:\MRRT\WarmUp • Salvar o modelo
• Criar uma package – vide Figura 54 - Criar Package • Criar um diagrama de colaboração – vide Figura 56
• Arrastar as cápsulas Client e Server para este diagrama e fazer a conexão entre eles – vide Figura 55
• Criar um Diagrama de Sequência utilizando as cápsulas Client e Server – vide Figura 57
• Criar mensagens assíncrona conforme o Diagrama de Sequência apresentado e setar as configurações de FromPort, ToPort e Signal – vide Figura 58
• Setar o TargetConfiguration
• Criar um processador chamado TestProc
• Clicar com o botão direito do mouse no Diagrama de Sequência e selecionar Verify Behavior e fazer as seguintes configurações:
o Selecionar a opção Reuse selected component, e colocar o processador a ser usado – vide Figura 60
o Selecionar ClientR1 na opção Select Drivers – vide Figura 61
• Limpar Store results with generated harness e setar o arquivo para saída do teste – vide Erro! Fonte de referência não encontrada.
• Clicar no botão verify
• Checar o Diagrama gerado - vide Figura 63
Figura 55 – Conexão entre Client e Server
Figura 57 - Criar Diagrama de Sequência
Figura 59 - Diagrama de Sequência
Figura 61 - Selecionar opção de driver
Figura 63 - Resultado da verificação
9.
Conclusão
A realização dos 8 Warm Ups é somente o início da familiarização com o Rational Rose Real Time e com os conceitos do desenvolvimento dirigido a modelo, o que exige a continuidade dos estudos nesta área.
O modelo do CSC – CSG Gerenciamento de Exceções, do qual faço parte da equipe de projeto, será um grande desafio para por emprática os conceitos e técnicas demonstradas neste exercício.