Sistemas embarcados: motivação e primeiros passos

Embed Size (px)

DESCRIPTION

Sistemas embarcados: motivação e primeiros passos; Palestra apresentada em 10/nov/2009 em Limeira, para a turma de engenharia elétrica da faculdade Einsten.

Citation preview

  • 1. Faculdades integradas Einstein de Limeira Eletrnica embarcada Marcelo Barros de Almeida [email_address]

2. Marcelo Barros ?

  • Formao:
  • Engenheiro eletrnico (UNIFEI, 1996)

3. Mestre (UFMG, 1998) 4. Doutor (UFMG, 2002) Atualmente:

  • Engenheiro de P&D (Smar Equip. Industriais LTDA)

5. Professor do Centro Univ. Baro de Mau Detalhes:

  • http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros

6. http://wiki.forum.nokia.com/index.php/User:Marcelobarrosalmeida 7. http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4795354H9 8. http://www.twitter.com/marcelobarros 9. http://jedizone.wordpress.com 10. http://blog.nokiabr.com.br smar 11. O que voc vai ser quando crescer ?

  • Conhece-te a ti mesmo - Scrates (479-399 a.C.)

12. Direcione-se durante a graduao, no somente depois

  • Decida a rea de atuao

13. Faa cursos 14. Disciplinas alternativas 15. Estgios 16. Iniciao cientfica 17. Tenha projetos paralelos Errar possvel, permita-se

  • Aprenda com seus erro

18. Aprenda com os erros dos outros Imagem: http://mel-melica.blogspot.com/2007/02/conhece-te-ti-mesmo.html 19. Formao universitria ajuda bastante

  • Engenharia eltrica ou de computao saem na frente:
  • Melhor base de hardware e eletrnica digital

20. Maior afinidade com microcontroladores e arquitetura de computadores 21. Foco em C e linguagens de baixo nvel 22. Principais disciplinas correlacionadas:

  • Eletrnica e eletrnica digital

23. Arquitetura de computadores 24. Algoritmos e estrutura de dados e programao em geral 25. Microcontroladores 26. Processamento de sinais Desejvel:

  • Sistemas operacionais, compiladores, engenharia de software e linguagens de alto nvel

27. Possveis reas de atuao

  • Indstria automobilstica

28. Eletrnica de consumo 29. Telefonia mvel 30. Controle e automao industrial 31. Telecomunicaes 32. Redes de computadores 33. Segurana 34. Entretenimento 35. Aero-espacial 36. Rastreamento, posicionamento

  • Automao comercial

37. Robtica 38. Aparelhos mdicos 39. Processamento de sinais 40. Sistemas operacionais 41. Bibliotecas para sistemas embarcados 42. Design house (hardware e software) 43. Treinamento 44. Consultor 45. ... 46. Uma gerao privilegiada Novas formas de distribuio de contedo Imagens:http://pt.wikipedia.org/wiki/Disco_de_vinilehttp://pt.wikipedia.org/wiki/CD 47. Uma gerao privilegiada Processadores e placas grficas 48. Uma gerao privilegiada Dispositivos mveis 49. Uma gerao privilegiada Internet Imagem: http://www.rbt.com.br/ 50. Novas fronteiras aps a Internet: vocs esto aproveitando tudo isso ?

  • Wikinomics, a fora coletiva

51. Free and open source software 52. Virtualizao 53. Novos meios de comunicao 54. Ampla documentao 55. Novas posturas:

  • Criar e compartilhar

56. Trabalho coletivo 57. Pesquise, no arquive 58. Sistemas embarcados microcontrolados

  • Sistemas embarcadosPropsito geral
  • Um sistema embarcado sistema computadorizado projetado para realizar uma ou poucas funes dedicadas, geralmente com restries de computao de tempo real -Wikipedia

Microcontroladores Microprocessadores

  • P equeno computador em um CI consistindo de uma CPU relativamente simples combinada com funes de suporte tais como osciladores, timers, watchdogs, I/O serial e analgico, etc. Memria de programa em flash NOR ou ROM frequentemente includa assim como tipicamente uma pequena quantidade de RAM - Wikipedia

Firmwareprograma

  • Termo usada para denotar programas e estruturas de dados, geralmente fixos e pequenos, que controlam internamente vrios dispositivos eletrnicos - Wikipedia

59. Eles esto por toda parte ! 60. Evoluo da eletrnica embarcada

  • 90's: 68HC11
  • 8 bits

61. 1kb RAM, 512b EEPROM 62. At 4MHz 63. A/D (10bits), PWM, UART, SPI, timer 64. Emulador

  • 2k's: S08QE
  • 8 bits

65. At 8kb RAM e 128kb flash interna 66. At 50MHz 67. A/D (12bits), PWM, SPI, timer 68. BDM interface

  • 2009: STM32F
  • 32 bits, ARM Cortex M3

69. At 64kb RAM, 256kb de flash interna 70. At 72MHz 71. MAC Ethernet 10/100 com suporte a IEEE 1588 72. CAN, USB, SPI, UART, timer, A/D (12bits), PWM, jtag 73. Evoluo da eletrnica embarcada Debug

  • 90's: 68HC11
  • 2k's: S08QE
  • 2009: STM32F

74. Evoluo da eletrnica embarcada

  • Relativamente complexo escolher um microcontrolador hoje. Muitas opes entre 8 e 32bits.
  • AVR, AVR32, ARM, 8051 (atmel)

75. MSP430, C2000, Arm M3 (Texas) 76. PIC (Microchip) 77. STM8, STM32 (ST) 78. Rabbit (Rabbit) 79. HC08, RS08, S12, HC16, Coldfire, ARM (Freescale) 80. eZ80 (Zilog) 81. 80C51, XA, ARM7, ARM9, ARM M0/M3 (NXP) 82. ARM7, ARM9, ARM11 (Digi) 83. 8051 (vrios fabricantes) 84. R8, H8, SuperH, M16, R32 (Renesas) 85. SAM8, ARM M3, ARM R4 (Samsung) 86. ....... 87. Alguns parmetros na hora da escolha

  • Disponibilidade de ferramentas de desenvolvimento (compiladores, bibliotecas, jtags/DBM)

88. Comunidade ao redor do projeto 89. Facilidade de programao, gravao e debug 90. Suporte local e facilidade de importao 91. Faixa de temperatura operao 92. Perifricos disponveis no controlador 93. Custo e estimativa de tempo de vida no mercado 94. Encapsulamento 95. Consumo 96. Mas nem tudo mudou ...

  • Vivemos num mundo finito ! Mesmo que o PC no nos ajude a pensar assim...
  • Armazenamento finito

97. Processamento finito 98. Alimentao finita 99. Tempo para executar operaes finito Alm disso, programao e arquitetura de computadores andam juntas 100. Sistemas operacionais tambm existem para os pequenos 101. Armazenamento voltil Stacks e memria global

  • Qual a diferena ?

#define TAM_VETOR 256 void funcao(void) { char vetor[TAM_VETOR]; vetor[0] = 1; vetor[TAM_VETOR-1]=TAM_VETOR-1; } int main(int argc, char *argv[]) { funcao(); return 0; } #define TAM_VETOR 256 char vetor[TAM_VETOR]; void funcao(void) { vetor[0] = 1; vetor[TAM_VETOR-1]=TAM_VETOR-1; } int main(int argc, char *argv[]) { funcao(); return 0; } 102. Vetor no heap 103. Vetor na memria global 104. Armazenamento voltil Stacks e memria global

  • Qual o seu mapa de memria ?
  • Em PCs ningum se preocupa, mas em sistemas embarcados algo obrigatrio

Deve-se ficar atento ao uso de stacks e heaps 105. Variveis no escopo de uma funo so alocadas no stack. 106. Soluo: use static. 0x0000 0x0280 0x0200 0x0300 0x037f 1kb de RAM Variveis globais (512) Stack (128) Outros Heap (128) Interrup. (128) #define TAM_VETOR 256 void funcao(void) { staticchar vetor[TAM_VETOR]; vetor[0] = 1; vetor[TAM_VETOR-1]=TAM_VETOR-1; } 107. Armazenamento voltil Heap

  • Em geral, alocao dinmica pode ser usada, desde que na inicializao apenas

108. Durante a execuo leva fragmentao da memria, mesmo quando todo malloc() tem um free() correspondente 109. Neste caso, prefira pools de memria:

  • O pool uma coleo de buffers de memria, todos do mesmo tamanho

110. Cada pool tem gerenciamento prprio 111. No ir ocorrer fragmentao Pool de memria (gerenciamento) buffer 1 buffer 2 buffer 3 buffer 4 buffer 5 buffer 6 ... buffer n 112. Armazenamento no voltil Uso da flash

  • Mantenha seu cdigo sob controle no quesito tamanho

113. Tenha uma estimativa do uso de flash em termos de bytes/SLOC(SLOC = linhas de cdigo fonte) 114. A eficincia ir depender da arquitetura e do compilador, considerando-se o mesmo programa 115. Armazenamento no voltil Uso da flash

  • Kit caseiro com MSP430F2274

116. 32kb flash, 1kb RAM 117. Mdulo de GPS externo (serial) 118. Display 16x2 externo 119. Objetivo: mostrar as coordenadas, data/ e hora no display 120. 406 linhas de cdigo C (sloccount)

  • 1324 bytes de flash

121. 263 bytes de RAM 122. ~3,18 kb/KSLOC 123. Processamento

  • Escolha um processador adequado para o processo

124. Valores fornecidos de MIPS ou DMIPS podem ajudar a definir o processador (MIPS = milhes de instrues por segundo) 125. Use mais de um processador, se for o caso, ou FPGAs, se o consumo permitir. 126. Processadores com ponto flutuante e operaes em hardware (criptografia, por exemplo) podem viabilizar vrios projetos. 127. Processamento

  • Loops infinitos podem ser um problema em ambientes multi-tarefa:
  • Crie tarefas com time slice

128. Use sleeps quando necessrio 129. Sincronize adequadamente suas tarefas Crie sistemas com watchdog int tarefa(int argc) { while(1) { if(recebe_dados()) { envia_dados(); sleep(10); } else { /* indicar erro aqui */ sleep(10); } } } int tarefa(int argc) { while(1) { if(recebe_dados()) { envia_dados(); sleep(10); } } } 130. Alimentao

  • Projetos com restries de consumo devem ter tratamento especial, cada componente deve ser analisado.

131. Escolha processadores com sleep modes adequados. 132. Se alimentado por bateria, crie circuitos de superviso da carga da bateria e formas de indicar que ela est fraca. 133. Tente operar por interrupo, nunca por polling, para economizar bateria

  • interrupo: um evento gera uma interrupo que tira o processador do modo de economia de energia e realiza uma tarefa

134. polling: fica-se executando continuamente, procurando por novos eventos 135. Tempo de execuo

  • Suas rotinas levam um determinado tempo para serem executadas, srio !

136. Isto especialmente crtico no tratamento de interrupes. 137. Exemplo:

  • Seu processador est recebendo bytes na serial a uma taxa de 115200bps (config. 8N1 = start bit, 8 bits, stop bit = 10 bits)

138. O clock do sistema de 5MHz e o controlador executa uma instruo por ciclo (5MIPS) 139. Isto significa 432 ciclos de clock entre bytes. Se a sua rotina de tratamento de interrupo for muito lenta, voc ir perder bytes ! 140. Alinhamento de memria e endianess

  • Nem todas as plataformas alinham dados na memria da mesma forma.

141. Considere o seguinte cdigo e assuma um processador ARM (32 bits). Como a varivelvarestar na memria ? typedef struct SData { unsigned char flags; unsigned long len; unsigned char opt; unsigned short optval; } TData; TData var = { 0x11, 0x22334455, 0x66,0x7788 }; 142. Alinhamento de memria e endianess BIG ENDIAN 0xXXXXXXX0 (mltiplo de 4) 0123 LITTLE ENDIAN 0xXXXXXXX0 (mltiplo de 4) 0123

  • Endianess:
  • big endian: byte mais significativo na menor posio de memria

143. little endian: byte mais significativo na maior posio de memria A arquiterura ARM usa alinhamento no acesso da memria:

  • longs se alinham a cada 4 bytes

144. shorts se alinham a cada 2 bytes 145. Logo, sizeof(var) = 12 ! 146. Tratamento de buffers deve ser feito com cuidado, ainda mais se proveniente de uma plataforma com endianess diferente 11 22 33 44 55 66 77 88 11 55 44 33 22 66 88 77 147. Sistemas operacionais Opes

    • FreeRTOS
  • 148. eCos

149. Contiki 150. TinyOS 151. TNkernel 152. XMK 153. FreeOSEC 154. uClinux/Linux 155. Symbian 156. QNX 157. ...

    • MQX/Freescale
  • 158. ThreadX

159. uC/OS II 160. Fusion 161. Nucleus 162. WinCE 163. CMX 164. safeRTOS 165. VelOSity, Integrity 166. PowerPac 167. ... 168. Sistemas operacionais Tamanhos SISTEMA FreeRTOS CMX ThreadX eCosPro Integrity uClinux ROM < 4.3k < 10k < 5k < 2k < 95k < 512k RAM < 1k < 1k < 5k < 1k < 40k < 2MB (se no for XIP)

  • Algumas medidas de footprint para um STR7 e STR9 (da STM, ARM)

Fonte: http://www.st.com/mcu/contentid-90.html 169. Sistemas embarcados em softcore

  • Existem vrios projetos de controladores em FPGAs ( http://www.opencores.org/ ). Interessante para projetos com necessidades especficas.

170. A Altera disponibiliza o NIOS II (32 bits) e lista vrios outros softcores para 8, 16 e 32 bits. Existe um Coldfire V1 listado como gratuito. 171. Xilinx tambm possui estratgia similar:

  • PicoBlaze (8 bits, pode ser colocado num CPLD)

172. MicroBlaze (32 bits) 173. Dando o chute inicial

  • Adquira um kit de desenvolvimento ou monte o seu prprio kit (veja o site www.olimex.com)

174. Envolva-se em um projeto da faculdade ou estgio 175. Controladores interessantes para comear:

  • MSP430, AVR, PIC, ...

Participe de comunidades relacionadas (Arduino, AVRFreaks) 176. Tenha um projeto e divulgue:

  • Blog

177. Grupos de discusso 178. Pgina do projeto http://www.arduino.cc 179. Dvidas, comentrios, sugestes ? Imagem: cena do filme Madagascar, da DreamWorks 180. Direitos de cpia Crditos - ShareAlike 2.0 Voc livre para

  • copiar, distribuir, apresentar e executar trabalhos

181. fazer trabalhos derivados 182. fazer uso comercial deste trabalho Sob as seguintes condies Crditos. Vocdeve dar crdito ao autor original. Compartilhedo mesmo modo . Se voc alterar, mudar, ou realizar trabalhos usando este como base,voc deve redistribuir o trabalhos resultante sob uma licena idntica a esta.

  • Para qualquer reuso ou distribuio voc deve deixar claro os termos de licena deste trabalho.

183. Qualqueruma destas condies podem ser abandonadas se voc obtiver uma permisso do detentor dos direitos autorais. Faa uso justo e o direitos dos outros no sero afetados de forma alguma pelas restries acima. Texto da licena:http://creativecommons.org/licenses/by-sa/2.0/legalcode Copyright 2009 Marcelo Barros [email_address] Correes, sugestes etradues so bem vindas!