If you can't read please download the document
Upload
marcelo-barros-de-almeida
View
5.158
Download
0
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
2. Marcelo Barros ?
3. Mestre (UFMG, 1998) 4. Doutor (UFMG, 2002) Atualmente:
5. Professor do Centro Univ. Baro de Mau Detalhes:
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 ?
12. Direcione-se durante a graduao, no somente depois
13. Faa cursos 14. Disciplinas alternativas 15. Estgios 16. Iniciao cientfica 17. Tenha projetos paralelos Errar possvel, permita-se
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
20. Maior afinidade com microcontroladores e arquitetura de computadores 21. Foco em C e linguagens de baixo nvel 22. Principais disciplinas correlacionadas:
23. Arquitetura de computadores 24. Algoritmos e estrutura de dados e programao em geral 25. Microcontroladores 26. Processamento de sinais Desejvel:
27. Possveis reas de atuao
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
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 ?
51. Free and open source software 52. Virtualizao 53. Novos meios de comunicao 54. Ampla documentao 55. Novas posturas:
56. Trabalho coletivo 57. Pesquise, no arquive 58. Sistemas embarcados microcontrolados
Microcontroladores Microprocessadores
Firmwareprograma
59. Eles esto por toda parte ! 60. Evoluo da eletrnica embarcada
61. 1kb RAM, 512b EEPROM 62. At 4MHz 63. A/D (10bits), PWM, UART, SPI, timer 64. Emulador
65. At 8kb RAM e 128kb flash interna 66. At 50MHz 67. A/D (12bits), PWM, SPI, timer 68. BDM interface
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
74. Evoluo da eletrnica embarcada
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
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 ...
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
#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
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
108. Durante a execuo leva fragmentao da memria, mesmo quando todo malloc() tem um free() correspondente 109. Neste caso, prefira pools de memria:
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
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
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)
121. 263 bytes de RAM 122. ~3,18 kb/KSLOC 123. Processamento
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
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
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
134. polling: fica-se executando continuamente, procurando por novos eventos 135. Tempo de execuo
136. Isto especialmente crtico no tratamento de interrupes. 137. Exemplo:
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
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
143. little endian: byte mais significativo na maior posio de memria A arquiterura ARM usa alinhamento no acesso da memria:
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
149. Contiki 150. TinyOS 151. TNkernel 152. XMK 153. FreeOSEC 154. uClinux/Linux 155. Symbian 156. QNX 157. ...
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)
Fonte: http://www.st.com/mcu/contentid-90.html 169. Sistemas embarcados em softcore
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:
172. MicroBlaze (32 bits) 173. Dando o chute inicial
174. Envolva-se em um projeto da faculdade ou estgio 175. Controladores interessantes para comear:
Participe de comunidades relacionadas (Arduino, AVRFreaks) 176. Tenha um projeto e divulgue:
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
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.
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!