Relatrio Intercalar
19 de Maio
2012
Realizado por: Rui Alexandre da Silva Miranda, n 32342 Orientado por: Eng Manuel Barata
ndice de Figuras
Figura 1 - Mapa Gantt do Projeto.......................................................................................... 5 Figura 2 - Diagrama da Maquina Virtual OCCAM .................................................................. 6 Figura 3 - FIFO em OCCAM-PI ................................................................................................ 7 Figura 4 - Execuo fifo.tbc ................................................................................................... 8 Figura 5 - Transputer T425 .................................................................................................... 8 Figura 6 - UBW32 ................................................................................................................... 9 Figura 7 - MPLAB IDE ........................................................................................................... 10 Figura 8 - MPLAB C32 Compiler ........................................................................................... 11 Figura 9 - Bootloader ........................................................................................................... 11 Figura 10 Terminal ............................................................................................................ 12
ndice de Tabelas
Tabela 1 - Pormenores da cada uma das tarefas a realizar................................................... 5
Com o exponencial crescimento da indstria de tecnologias mveis nas ltimas dcadas, cada vez mais se d importncia a sistemas embebidos, como por exemplo microcontroladores. Estes sistemas so definidos como sistemas de computao com os recursos estritamente necessrios para executar uma funo especfica. Atualmente o uso de sistemas embebidos praticamente global, tendo aplicaes tanto em ambientes privados como em ambientes empresariais. Ainda no atual panorama tecnolgico cada vez mais so necessrios sistemas de tempo-real, estes sistemas podem ser definidos como sistemas que respondem a eventos externos de forma pronta. Da juno dos dois conceitos descritos anteriormente, surge outro tipo de sistema, o sistema embebido de tempo-real, que abrange os principais aspetos dos outros dois. Os sistemas embebidos de tempo-real tm os mais diversos tipos de aplicaes atualmente, como por exemplo em veculos motorizados, sistemas de telecomunicaes, entre outros.
1.2.
Com a introduo de sistemas de tempo-real, vem a necessidade de uma programao mais eficiente no que toca a tempos de execuo, fazendo uso de mltiplas unidades de processamento de um sistema, de sistemas em rede partilhando recursos, ou de ambos, possvel um programa executar varias instrues em simultneo, este modelo de computao designado por programao paralela. Das mais diversas linguagens que suportam programao paralela, temos a OCCAM. Esta linguagem foi desenvolvida em 1980 por uma equipa da INMOS como linguagem nativa do seu microprocessador Transputer, e baseada na teoria de T. Hoare, CSP (Communicating Sequential Process). Uma das principais funcionalidades desta linguagem a concorrncia entre processos e comunicao entre eles. A gesto da concorrncia entre processos feita atravs da comunicao entre os mesmos atravs de canais sncronos. A universidade de KENT deu continuidade ao estudo e aplicao do OCCAM, evoluindo para o OCCAM-PI. Mantendo assim ativo este paradigma de programao que para alm de poder ser executado por um processador, pode tambm ser usado para programar arquiteturas com vrios ncleos processadores, ou at mesmo ser diretamente compilada para execuo em hardware programvel (e.g. FPGA). Atualmente existem disponveis vrias ferramentas para desenvolver e testar programas OCCAM, sendo estas cdigo aberto e livre. Uma delas o TRANSTERPRETER que utilizando uma mquina virtual emula um processador que executa cdigo compilado do OCCAM. O cdigo dessa mquina virtual simples e passvel de ser migrado para execuo em qualquer processador de 8, 16 ou 32 bit.
3. Implementao do Projeto
[3]
Existem duas maneiras de implementar a mquina virtual: traduzindo diretamente para o cdigo ASM do processador alvo, ou ento implementar um simulador das instrues da mquina virtual. Neste projeto, por se tratar de uma abordagem exploratria, vai-se optar pela adoo da verso com instrues simuladas/interpretadas. Adicionalmente tambm necessrio desenvolver uma pequena biblioteca de interface entre o programa e os aspetos de I/O especficos do processador a utilizar. A mquina virtual ser desenvolvida para operar sobre o microcontrolador PIC32MX460, mas o desenvolvimento ser com vista a poder migrar para qualquer outro processador.
Durao
Inicio
Fim
1 2 3 4 5
7 8 9 10 11
Estudo OCCAMP-PI 32 dias? 19-12-11 13-01-12 100% Estudo Transputer 38,4 dias? 16-01-12 17-02-12 1 100% Estudo PIC32MX460 70,4 dias? 23-02-12 24-04-12 18% Estudo TVM 70,4 dias? 23-02-12 24-04-12 1;2 18% Desenho do cdigo nativo de interface com o hardware do 48 dias? 25-04-12 05-06-12 3;4 0% processador Migrao da mquina virtual executora do cdigo gerado no 33,6 dias? 06-06-12 04-07-12 4;5 0% microcontrolador Desenho de uma aplicao de 8 dias? 05-07-12 11-07-12 4;5;6 0% demonstrao Elaborao da pgina Web do 11,2 dias? 12-07-12 20-07-12 7 0% Projecto Elaborao Relatrio Inicial 3,2 dias? 07-03-12 09-03-12 100% Elaborao Relatrio 72 dias? 15-03-12 16-05-12 9 29% Progresso/Intercalar Elaborao do Relatrio Final 75,2 dias? 17-05-12 20-07-12 10;9 29% Notas: A durao de cada tarefa no passa de uma estimativa.
Como est representado na Figura 2 - Diagrama da Maquina Virtual OCCAM, a implementao da Maquina Virtual de OCCAM ser dividida em 2 mdulos principais: Loader, Descodificador de programas OCCAM-PI, que recebe os ficheiros executveis OCCAM-PI (cdigo j compilado e linkado com as bibliotecas de runtime do OCCAM-PI) e descodifica para instrues simuladas do processador alvo, PICMX32. HAL (Hardware Abstraction Layer), Interface de interligao com o PICMX32, esta interface ser constituda pelas bibliotecas de interao das instrues simuladas do descodificador com as funcionalidades do microprocessador.
Para a investigao da Linguagem OCCAM, mais especificamente da ultima verso OCCAM-PI, e das suas funcionalidades foram feitos vrios testes e experimentaes atravs de um programa emulador de OCCAMPI/Transputer, Transterpreter[7] . De um dos programas de teste feitos destaca-se a implementao de uma Lista FIFO atravs da Linguagem OCCAM-PI, funcionamento descrito na Figura 3 - FIFO em OCCAM-PI.
6.2.
Exemplo
7. Transputer
[5]
Nos anos 80 a companhia de semicondutores INMOS produziu o Transputer (Figura 5 - Transputer T425), um inovador microprocessador de alta performance desenhado para computao paralela. Este processamento paralelo conseguido atravs de 4 canais srie integrados, que permitem a ligao dos microprocessadores entre si. Neste contexto surge a linguagem OCCAM, desenhada especificamente para programar no Transputer, com uma ligao muito mais forte ao Hardware do que linguagens como C ou Pascal em relao aos processadores de arquitectura CISC (Complex Instruction Set Computer).
O PIC32MX460 um microcontrolador da famlia PIC32, este dispositivo permite uma velocidade de processamento superior a 80 DMIPS (Dhrystone Million of Instruncions per Second) e tem uma grande variedade de perifricos integrados. Uma caracterstica especfica da famlia PIC32MX facilidade de migrao da aplicao, que tem todo o seu interesse num projeto deste mbito. Uma das configuraes programticas do microcontrolador de extrema importncia para a implementao da mquina virtual ser a diretiva #pragma, que permite transmitir ao processador definies de configurao usadas pela aplicao. Tambm os Interrupts tradicionais do PIC32 sero utilizados na gesto dos time-slices, para simular o paralelismo nativo da linguagem OCCAM-PI.
8.2.
8.2.1.
O Kit de desenvolvimento a utilizar para a implementao da mquina virtual de OCCAM no PIC32MX460, ser o UBW32 (Figura 6 - UBW32). Este Kit permite a ligao via USB ao computador, por onde possvel carregar os programas desenvolvidos e ainda receber/enviar input/output para o PIC32MX460. Contem 2 botes e 3 LEDs, programveis pelo utilizador, como tambm todos os Pinos I/O do PIC32MX460F512L.
Figura 6 - UBW32
10
c) Carregamento Para carregamento do cdigo compilado no PIC, utilizado o Bootloader da Microchip (Figura 9 - Bootloader), que permite o carregamento via USB.
Figura 9 - Bootloader
11
Figura 10 Terminal
9. Estado do Trabalho
Como pode ser visto na Figura 1 - Mapa Gantt do Projeto, j se encontra concludo todo o estudo da Linguagem OCCAM-PI, PIC32MX460, e das bibliotecas C dos perifricos do PIC32 [13]. Correntemente est a ser feito e estudo da TVM j existente para POSIX, em paralelo feita a adaptao/implementao do Loader (Figura 2 - Diagrama da Maquina Virtual OCCAM) e a implementao, de raiz, do HAL (Figura 2 - Diagrama da Maquina Virtual OCCAM). Nesta altura era previsto j estar o Loader concludo, e estar a meio da implementao da HAL. Contudo, salvaguardando alguma exceo devido ao cariz exploratrio deste Projeto, possvel garantir que os prazos do Projeto sero respeitados.
12
[12] [13]
Qing Li e Carolyn Yao (2003). Real-Time Concepts for Embedded Systems. CMP Books INMOS Limited (1998). OCCAM 2, Reference Manual. Prentice Hall Eng Manuel Barata (2011). Documento de Proposta do Projecto (P8). http://moodle.isel.pt/deetc/file.php/1398/LEETC_lista_de_projectos-_Projecto_2010_2011.pdf (sitio acedido em 05/2011) OCCAM-PI. Universidade de Kent. http://www.cs.kent.ac.uk/projects/ofa/kroc/ (sitio acedido em 05/2011) Transputer. Michael Brstle. http://www.transputer.net/welcome.asp (sitio acedido em 05/2011) Department of Computer, Science Bucknell University (1995). Introduction to the Programming Language OCCAM. Dr. Daniel, C. Hyde. The Transterpreter Project. http://www.transterpreter.org/ (sitio acedido em 05/2011) Microchip Technology Inc (2008), Getting Started with PIC32 Users Guide. Microchip Technology Inc (2007), MPLAB C32 User Guide Microchip Technology Inc (2008), PIC32MX3XX/4XX Family Data Sheet UBW32 Schmalzhaus http://www.sparkfun.com/products/8971 (sitio acedido em 05/2011) http://www.schmalzhaus.com/UBW32/ (sitio acedido em 05/2011) Microship http://www.microchip.com/ (sitio acedido em 05/2011) Microchip Technology Inc (2007), PIC32 Peripheral Libraries for MPLAB C32 Compiler
13