Página 1 de 4

Últimas novidades sobre o livro de ARM

MensagemEnviado: 02 Abr 2007 13:14
por Fábio Pereira
Olá Pessoal,

Resolvi criar este post para centralizar as notícias sobre a fase final de desenvolvimento do meu novo livro sobre ARM.

Como eu já disse em outro post, o livro está com 378 páginas e a minha previsão é de que tenha algo em torno de 420 ...

Infelizmente o tempo que tenho podido dedicar ao livro tem sido muito pequeno, já que tenho estado muito ocupado com os projetos da nossa empresa e com a pós que estou fazendo.

No momento estou trabalhando no tópico USB. Aliás, para quem puder esperar, prometo que o livro será um divisor de águas no que diz respeito à interface USB e dispositivos HID. :)

Além disso, ainda tenho alguns exemplos pendentes e que precisam ser concluídos (não é fácil fazer tudo sozinho).

Bom, a título de curiosidade, coloquei abaixo o índice provisório do livro. ;-)

T+

Código: Selecionar todos

1. Introdução. 11

1.1. Versões da CPU ARM... 12

1.2. Famílias ARM... 13

1.3. Eu Preciso de um ARM ?. 16

1.4. Características Gerais de Alguns Modelos. 17

1.5. Hardware Utilizado. 19

1.6. Convenções Adotadas. 21

2. Ambientes de Programação. 23

2.1. O Ambiente Embedded Workbench. 23

2.1.1. Criando o Primeiro Projeto no EWARM... 23

2.1.2. Configurando o Linker. 28

2.1.3. O Arquivo de Inicialização. 31

2.1.4. Simulando um Programa. 33

2.1.5. Depurando um Programa. 40

2.2. O Ambiente Eclipse + GCC.. 45

2.2.1. Criando um Projeto em C.. 45

2.2.2. Configuração do Linker. 50

2.2.3. O Makefile. 51

2.2.4. Simulando o Projeto. 52

2.2.5. Depurando o Projeto. 54

3. A Arquitetura ARM... 58

3.1. Estados da CPU.. 62

3.2. Registradores da CPU.. 63

3.2.1. Registradores do Estado ARM... 64

3.2.2. Registradores do Estado Thumb. 66

3.2.3. Registrador CPSR.. 67

3.3. Modos de Processamento. 69

3.3.1. Modo User (usr) 70

3.3.2. Modo System (sys) 70

3.3.3. Modo Supervisor (svc) 70

3.3.4. Modo Abort (abt) 70

3.3.5. Modo Undefined (und) 72

3.3.6. Modo IRQ (irq) 73

3.3.7. Modo FIQ (fiq) 74

3.3.8. Endereços e Prioridades das Exceções. 75

3.4. Organização e Alinhamento da Memória. 75

3.5. Instruções ARM... 76

3.5.1. Manipulação de Dados. 76

3.5.2. Lógicas e Aritméticas. 76

3.5.3. Teste e Desvio. 77

3.5.4. Controle da CPU.. 77

3.5.5. Co-Processador 77

3.5.6. LDR, STR, LDM e STM... 77

3.5.7. SWP. 82

3.5.8. ADD e ADC.. 83

3.5.9. SUB e SBC.. 84

3.5.10. RSB e RSC.. 84

3.5.11. AND, EOR, ORR e BIC.. 85

3.5.12. MOV e MVN.. 86

3.5.13. CMP, CMN, TST e TEQ.. 86

3.5.14. MUL e MLA.. 87

3.5.15. B, BL e BX.. 88

3.5.16. MRS e MSR.. 89

3.5.17. SWI 90

3.5.18. LDC, STC, CDP, MCR e MRC.. 90

3.5.19. Sufixos das Instruções ARM... 91

3.6. Instruções Thumb. 93

3.6.1. LDR e STR.. 95

3.6.2. LDMIA e STMIA.. 96

3.6.3. PUSH e POP. 96

3.6.4. MOV.. 97

3.6.5. MVN.. 98

3.6.6. ADD e ADC.. 98

3.6.7. SUB e SBC.. 99

3.6.8. NEG.. 99

3.6.9. MUL. 99

3.6.10. AND, ORR e EOR.. 99

3.6.11. BIC.. 100

3.6.12. ASR, LSL, LSR e ROR.. 100

3.6.13. B.. 100

3.6.14. Bxx. 101

3.6.15. BL. 101

3.6.16. BX.. 102

3.6.17. CMP. 102

3.6.18. CMN.. 102

3.6.19. TST.. 103

3.6.20. SWI 103

3.7. Temporização das Instruções. 103

3.8. Outras Tecnologias ARM... 104

3.8.1. Instruções ARM v5 e Posteriores. 104

3.8.1.1. Thumb-2. 108

3.8.2. MMU e MPU.. 108

3.8.3. Co-processador VFP. 109

4. Programação em C.. 110

4.1. Revisão da Linguagem C.. 110

4.1.1. Comandos e Palavras Reservadas. 110

4.1.2. Estrutura Básica de um Programa. 110

4.1.3. Tipos de Dados. 111

4.1.3.1. Declaração de Variáveis. 112

4.1.3.2. Outros Modificadores. 113

4.1.4. Operadores e Expressões em C.. 114

4.1.5. Tipos de Dados Complexos. 116

4.1.5.1. Enumerações. 116

4.1.5.2. Ponteiros. 117

4.1.5.3. Matrizes. 118

4.1.5.4. Estruturas. 120

4.1.5.5. Uniões. 121

4.1.5.6. Definições de Tipos. 122

4.1.6. Comandos da Linguagem C.. 122

4.1.6.1. If 122

4.1.6.2. Switch. 123

4.1.6.3. For 124

4.1.6.4. While. 124

4.1.6.5. Do. 125

4.1.7. Funções. 125

4.2. O Compilador IAR.. 127

4.2.1. Tipos e Organização dos Dados. 127

4.2.1.1. Uniões, Estruturas e Campos de Bit 128

4.2.2. Funções Intrínsecas. 130

4.2.3. Diretivas e Extensões da Linguagem.. 131

4.2.4. Bibliotecas C.. 134

4.2.5. Embutindo Código Assembly. 136

4.2.5.1. Convenções de Chamada e de Retorno de Funções. 137

4.3. O Compilador GCC.. 138

4.3.1. Pragmas. 139

4.3.2. Atributos Especiais. 139

4.3.3. Opções de Linha de Comando do GCC.. 140

4.4. Produzindo Código C Eficiente. 143

4.4.1. Tipos de Dados. 143

4.4.2. Alinhamento de Memória. 145

4.4.3. Manipulação de Bits. 146

4.4.4. Outros Aspectos Importantes. 147

5. ST STR71x. 148

5.1. Descrição Geral da Família STR71x. 149

5.1.1. Pinagem.. 152

5.1.2. Mapa de Memória. 155

5.2. Portas de E/S. 157

5.2.1. Modo de Alta Impedância / Entrada Analógica. 158

5.2.2. Modos de Entrada Digital 159

5.2.3. Modos de Saída Digital de Uso Geral 160

5.2.4. Modos de Saída de Periférico Digital 161

5.2.5. Exemplos. 161

5.3. Sistema de Suporte à CPU.. 163

5.3.1. Controle de Interrupções (EIC) 163

5.3.1.1. Canais e Vetores de Interrupção. 166

5.3.1.2. Latência das Interrupções. 167

5.3.1.3. Registradores do EIC.. 168

5.3.1.4. Exemplos de Configuração. 171

5.3.1.5. Módulo de Interrupções Externas (XTI) 173

5.3.1.6. Registradores do XTI 175

5.3.1.7. Exemplos de Utilização. 178

5.3.2. Reset 182

5.3.2.1. Controle de Reset dos Periféricos. 183

5.3.2.2. Registradores. 184

5.3.3. Clock. 187

5.3.3.1. Operação a Partir do Oscilador Externo. 188

5.3.3.2. Operação do PLL1 no modo Free Running. 189

5.3.3.3. Operação a Partir do Oscilador de Baixo Consumo. 190

5.3.3.4. Alterando a Fonte ou Velocidade dos Clocks. 190

5.3.3.5. Bloco PLL2. 191

5.3.3.6. Controle Individual do Clock dos Periféricos. 192

5.3.3.7. Saída de Clock CKOUT.. 193

5.3.3.8. Interrupções. 193

5.3.3.9. Registradores. 193

5.3.3.10. Exemplos de Configuração. 200

5.3.4. Gerenciamento de Energia. 205

5.3.4.1. Modo SLOW... 207

5.3.4.2. Modo WFI 207

5.3.4.3. Modo LPWFI 208

5.3.4.4. Modo STOP. 209

5.3.4.5. Modo STANDBY.. 210

5.3.5. Registradores do PRCCU.. 211

5.3.6. Exemplos de Uso. 219

5.4. RTC.. 222

5.4.1. Configuração do RTC.. 223

5.4.2. Interrupções do RTC.. 224

5.4.3. Registradores do RTC.. 224

5.4.4. Exemplo. 228

5.5. Timers. 229

5.5.1. Contador Principal 230

5.5.2. Canais A e B.. 231

5.5.2.1. Canais de Captura. 231

5.5.2.2. Canais de Comparação. 233

5.5.3. Modo OPM... 234

5.5.4. Modo PWM... 235

5.5.5. Interrupções dos Timers. 236

5.5.6. Conexões dos Timers. 237

5.5.7. Registradores dos Timers. 238

5.5.8. Exemplos. 241

5.6. UARTs. 246

5.6.1. Transmissão. 247

5.6.2. Recepção. 249

5.6.2.1. Timeouts. 251

5.6.3. Gerador de Baud Rate (BRG) 251

5.6.4. Modo de Endereçamento. 255

5.6.5. Interrupções. 255

5.6.6. Conexões das UARTs. 257

5.6.7. Registradores das UARTs. 258

5.6.8. Exemplos de Utilização. 262

5.7. Interfaces SPI 266

5.7.1. Interrupções das SPI 270

5.7.2. Conexões das SPI 271

5.7.3. Registradores das SPI 271

5.7.4. Exemplos de Utilização. 274

5.8. Interfaces I2C.. 275

5.8.1. Chamada Geral 278

5.8.2. Byte de partida. 278

5.8.3. Funcionamento. 279

5.8.3.1. Modo Mestre. 280

5.8.3.2. Modo Escravo. 284

5.8.4. Interrupções I2C.. 286

5.8.5. Conexões das Interfaces I2C.. 286

5.8.6. Registradores das Interfaces I2C.. 287

5.8.7. Exemplos de Utilização. 291

5.9. Conversor A/D de 12 Bits. 293

5.9.1. Aumentando a Velocidade do Conversor 295

5.9.2. Interrupções do ADC.. 295

5.9.3. Conexões do ADC.. 296

5.9.4. Registradores do ADC.. 296

5.9.5. Exemplos de Configuração. 298

5.10. Controlador de Memória FLASH (FPEC) 301

5.10.1. Programação da FLASH.. 302

5.10.1.1. Apagamento de um Setor 302

5.10.1.2. Programação de uma Word. 304

5.10.1.3. Programação de duas Words. 305

5.10.1.4. Suspendendo uma Operação. 306

5.10.2. Proteção da Memória FLASH.. 306

5.10.2.1. Proteção Contra Escrita. 306

5.10.2.2. Proteção Contra Leitura/Acesso. 308

5.10.3. Registradores do FPEC.. 309

5.11. Interface USB.. 314

5.11.1. Conceitos Básicos de USB.. 315

5.11.1.1. Nível Elétrico e Físico. 316

5.11.1.2. Estados de um Dispositivo. 318

5.11.1.3. Pipes e Endpoints. 319

5.11.1.4. Quadros e Microquadros USB.. 321

5.11.1.5. Pacotes USB.. 321

5.11.2. Anatomia das Transações USB.. 326

5.11.2.1. Transações de Controle. 327

5.11.2.2. Transações de Interrupção. 331

5.11.2.3. Transações Bulk. 332

5.11.2.4. Transações Isócronas. 334

5.11.3. Requisições USB.. 335

5.11.3.1. SET_ADDRESS. 335

5.11.3.2. GET_STATUS. 336

5.11.3.3. CLEAR_FEATURE. 337

5.11.3.4. SET_FEATURE. 337

5.11.3.5. GET_DESCRIPTOR.. 338

5.11.3.6. SET_DESCRIPTOR.. 339

5.11.3.7. GET_CONFIGURATION.. 339

5.11.3.8. SET_CONFIGURATION.. 339

5.11.3.9. GET_INTERFACE. 339

5.11.3.10. SET_INTERFACE. 340

5.11.4. Descritores. 340

5.11.4.1. Device Descriptor. 340

5.11.4.2. Device Qualifier Descriptor. 342

5.11.4.3. Configuration Descriptor. 343

5.11.4.4. Other Speed Configuration Descriptor. 344

5.11.4.5. Interface Descriptor. 345

5.11.4.6. Endpoint Descriptor. 346

5.11.4.7. String Descriptor. 347

5.11.5. Classes de Dispositivos. 348

5.11.6. Dispositivos HID.. 349

5.11.6.1. Requisições HID.. 350

5.11.6.2. Descritores de um Dispositivo HID.. 352

5.11.7. A Interface USB dos STR711. 356

5.11.7.1. Princípios de Operação. 356

5.11.7.2. Buffers de Dados. 356

5.11.7.3. Transações USB.. 356

5.11.7.4. Interrupções. 356

5.11.7.5. Registradores. 356

5.11.7.6. Exemplos de Utilização. 361

6. Exemplos de Projetos com ARM7. 362

6.1. Conversão de uma Aplicação de 8 para 32 Bits. 362

6.2. Interface com Módulo LCD Alfanumérico. 362

6.3. Mouse USB com um Acelerômetro. 362

7. Apêndice A – Funções da Biblioteca C.. 363

8. Apêndice B – Tabela ASCII 367

9. Índice Remissivo. 368

Referências Bibliográficas. 374

Marcas Registradas

MensagemEnviado: 02 Abr 2007 13:29
por Fábio Pereira
Mais algumas informações:

1- o livro é baseado no IAR. Alguns exemplos foram testados no GCC também, mas não tenho tempo para testar todos. No entanto, estou escrevendo os mesmos de forma a serem compatíveis com GCC;

2- a princípio o livro iria cobrir outros fabricantes (NXP, Atmel e Luminary), mas no desenrolar do projeto, tive de fazer algumas escolhas, pois do contrário o livro ficaria enorme, caro e demasiadamente demorado para escrever. Assim:
2.1 - a parte sobre Cortex-M3 foi retirada. Tenho bastante material escrito e esta arquitetura merecerá um livro a parte;
2.2 - o capítulo sobre Atmel foi retirado pois foi muito difícil estabelecer um diálogo com a Atmel no Brasil. Nem amostras consegui;
2.3 - o capítulo sobre NXP (que já estava relativamente adiantado) foi retirado pois a NXP lançou outro livro em parceria com a Mosaico e um novo livro sobre NXP não faria sentido (neste momento). Eu imaginava escrever um material sobre NXP em separado, mas como eles me solicitaram a devolução de todo o material que haviam me emprestado, acho que vou ter de abortar esta idéia, o que é uma pena, pois acho que a NXP não precisa disso.

Por hora é isso. Prometo que a medida que houver novas informações eu posto aqui.

Até +

MensagemEnviado: 02 Abr 2007 14:16
por jeff
Ok Fabio, vai ficar muito bom o livro, vale a pena esperar um pouco mais entao, estou com o kit da ST parado só esperando por esse livro.
Boa sorte e tomara que termine brevemente.
Obrigado e de noticias !!
Jeff

MensagemEnviado: 03 Abr 2007 06:58
por microeletronica
Oi Fabio. Parabens pela iniciativa!!! Seus livros sao otimos pra aprendizado e como referencia para o trabalho de varias pessoas que trabalham com microcontroladores.

Ressaltando que trabalhar com micros no brasil eh dificil... haja visto suas dificuldades com NXP e Atmel.

Como referencia pros meus estudos utilizo os seguintes livros que tenho certeza que conhece, mas deixo registrado as dicas pro pessoal interessado:

The Insider's Guide To The Philips ARM7-Based Microcontrollers
An Engineer's Introduction To The LPC2000 Series
http://www.hitex.com/download/docs/lpc/ ... -book.html


The Insider's Guide To The NXP LPC2300/2400 Based Microcontrollers
An Engineer's Introduction To The LPC2300 & LPC2400 Series
http://www.hitex.com/download/docs/lpc2 ... -book.html


The Insider's Guide To The ARM® STR71x
An Engineer's Introduction To The STR71x Series
http://www.hitex.com/download/docs/str7 ... -book.html


The Insider's Guide To The STR73x ARM7 Based Microcontroller (ARM9 TDMI)
An Engineer's Introduction To The STR73x Series
http://www.hitex.com/download/docs/str7 ... -book.html

The Insider's Guide To Planning XC166 Family Designs
An Engineer's Introduction To The XC166 Family
http://www.hitex.com/download/docs/xc16 ... -book.html

Alem claro do "Addison Wesley - Steve Furber - Arm System-On-Chip Architecture (2nd Edition)"

e do livro da OLIMEX pra trabalhar com GNU GCC + LPC
Estou empolgado em esperar este proximo livro seu!!!
O livro sobre NXP foi bom, mas nao chegou a entusiasmar!!!

Sobre a placa da ST, a minha tah parada tambem, mas continuo estudando o STR711, depois de ter ralado com os LPC21XX. Apenas fiz programinhas demo pra o ST...

=)

MensagemEnviado: 03 Abr 2007 07:53
por xultz
Se me permite dar uma opinião, eu ia sugerir que você não colocasse capítulos explicando como programar em C. Por exemplo, no livro de C para PIC você usou as primeiras 150 páginas fazendo um tutorial de inguagem C, sendo que o restante é o que realmente interessa. Na minha opinião, o sujeito que quer programar em C para PIC primeiro estuda linguagem C num dos milhares de livros que C que existem, e depois estuda as particularidades da programação C para o PIC.
Eu não sei o quão aprofundado está o capítulo 4, mas eu sugiro que você não perca tempo fazendo um grande tutorial de C como fez no livro de PIC, e use esse tempo se dedicando mais ao microcontrolador em si.
Bom, estes são meus dois centavos... :)

MensagemEnviado: 03 Abr 2007 08:12
por Jorge_Francisco
xultz escreveu:Se me permite dar uma opinião, eu ia sugerir que você não colocasse capítulos explicando como programar em C. Por exemplo, no livro de C para PIC você usou as primeiras 150 páginas fazendo um tutorial de inguagem C, sendo que o restante é o que realmente interessa. Na minha opinião, o sujeito que quer programar em C para PIC primeiro estuda linguagem C num dos milhares de livros que C que existem, e depois estuda as particularidades da programação C para o PIC.
Eu não sei o quão aprofundado está o capítulo 4, mas eu sugiro que você não perca tempo fazendo um grande tutorial de C como fez no livro de PIC, e use esse tempo se dedicando mais ao microcontrolador em si.
Bom, estes são meus dois centavos... :)


Bom,eu ia falar a mesma coisa sobre asm,tirar o asm e deixar o C,mas ia gerar polemica!!!

MensagemEnviado: 03 Abr 2007 10:00
por xultz
Desculpe, Jorge, mas eu desconcordo totalmente de você.
Primeiro que eu acho importante conhecer o asm do ARM se a pessoa quer se aprofundar no assunto. E segundo que é importante conhecer alguns detalhes em asm do ARM para entender como o compilador vai compilar, e dessa forma otimizar o código. O clássico exemplo é entender por que é melhor passar e retornar ints para funções do que qualquer outro tipo, mesmo que a variável seja do tamanho de um char.
E segundo que entender o asm do ARM não é tão difícil. Difícil é programar em ASM, e para isso tem compilador que faz o trabalho sujo, mas entender não é o fim do mundo não.

MensagemEnviado: 03 Abr 2007 10:37
por Fábio Pereira
Bom,

Eu pensei em não colocar a revisão de C, mas ela é tão pequena (17 páginas) que prefiro deixá-la ali, afinal nunca se sabe o perfil do leitor do livro.

O único livro meu que possui uma grande parte dedicada ao C é o de programação em C para PICs, mas aí eu acho que não poderia ser diferente, já que o tema do livro é esse.

Sobre ASM, no início não pensei em não me aprofundar muito, mas realmente ficaria uma lacuna muito grande. Assim, preferi tornar o livro menos superficial e mostrar mais detalhes do ASM dos ARMs.

Como o Xultz colocou, é de extrema importância conhecer o ASM da plataforma para se programar em C com eficiência.

Aliás, a parte final do capítulo 4 mostra justamente isso: alguns detalhes importantes sobre a eficiência de código C nos ARMs, especialmente em aspectos como manipulação de bits, alinhamento de dados, etc.

Até +

MensagemEnviado: 04 Abr 2007 11:35
por Renato
Já foi comentado noutro tópico sobre as particularidades de cada MCU no tratamento de interrupções.
Seria ótimo se pelo menos nesse item houvesse algum conteúdo para os NXP, quanto a teoria básica de funcionamento.

MensagemEnviado: 04 Abr 2007 21:14
por joe-adb
Fábio,

Assim como o resto da galera, tô ansioso para que esse livro saia logo.

Mas mais ansioso ainda eu estou em relação ao kit que você anunciou um tempo atrás.

Ele só será lançado junto com o livro?
Pelo que entendi, ele vai poder funcionar sem aquela sua outra placa de desenvolvimento (creio que seja Microlab o nome), sendo bastante semelhante ao kit da ST.

Eu tenho muito interesse nesse kit, já que o kit da ST já se esgotou e eu acabei me enrolando para comprar e fiquei sem :-(

Parabéns pelo trabalho, abraço

MensagemEnviado: 17 Mai 2007 21:22
por Fábio Pereira
Pessoal,

A minha parte está concluída, o livro está pronto :)

Agora é com a editora ... Creio que mais um mês mais ou menos e o livro deva estar a venda ...

A minha versão ficou com 457 páginas e o índice encontra-se abaixo:

Código: Selecionar todos
1. Introdução   13
1.1. Versões da CPU ARM   14
1.2. Famílias ARM   15
1.3. Eu Preciso de um ARM ?   18
1.4. Características Gerais de Alguns Modelos   19
1.5. Hardware Utilizado   22
1.6. Convenções Adotadas   24
2. Ambientes de Programação   25
2.1. O Ambiente Embedded Workbench   25
2.1.1. Criando o Primeiro Projeto no EWARM   25
2.1.2. Configurando o Linker   30
2.1.3. O Arquivo de Inicialização   33
2.1.4. Simulando um Programa   35
2.1.5. Depurando um Programa   42
2.2. O Ambiente Eclipse + GCC   47
2.2.1. Criando um Projeto em C   47
2.2.2. Configuração do Linker   52
2.2.3. O Makefile   53
2.2.4. Simulando o Projeto   54
2.2.5. Depurando o Projeto   56
3. A Arquitetura ARM   60
3.1. Estados da CPU   64
3.2. Registradores da CPU   65
3.2.1. Registradores do Estado ARM   66
3.2.2. Registradores do Estado Thumb   68
3.2.3. Registrador CPSR   69
3.3. Modos de Processamento   71
3.3.1. Modo User (usr)   72
3.3.2. Modo System (sys)   72
3.3.3. Modo Supervisor (svc)   72
3.3.4. Modo Abort (abt)   72
3.3.5. Modo Undefined (und)   74
3.3.6. Modo IRQ (irq)   75
3.3.7. Modo FIQ (fiq)   76
3.3.8. Endereços e Prioridades das Exceções   77
3.4. Organização e Alinhamento da Memória   77
3.5. Instruções ARM   78
3.5.1. Manipulação de Dados   78
3.5.2. Lógicas e Aritméticas   78
3.5.3. Teste e Desvio   79
3.5.4. Controle da CPU   79
3.5.5. Co-Processador   79
3.5.6. LDR, STR, LDM e STM   79
3.5.7. SWP   84
3.5.8. ADD e ADC   85
3.5.9. SUB e SBC   86
3.5.10. RSB e RSC   86
3.5.11. AND, EOR, ORR e BIC   87
3.5.12. MOV e MVN   88
3.5.13. CMP, CMN, TST e TEQ   88
3.5.14. MUL e MLA   89
3.5.15. B, BL e BX   90
3.5.16. MRS e MSR   91
3.5.17. SWI   92
3.5.18. LDC, STC, CDP, MCR e MRC   92
3.5.19. Sufixos das Instruções ARM   93
3.6. Instruções Thumb   95
3.6.1. LDR e STR   97
3.6.2. LDMIA e STMIA   98
3.6.3. PUSH e POP   98
3.6.4. MOV   99
3.6.5. MVN   100
3.6.6. ADD e ADC   100
3.6.7. SUB e SBC   101
3.6.8. NEG   101
3.6.9. MUL   101
3.6.10. AND, ORR e EOR   101
3.6.11. BIC   102
3.6.12. ASR, LSL, LSR e ROR   102
3.6.13. B   103
3.6.14. Bxx   103
3.6.15. BL   104
3.6.16. BX   104
3.6.17. CMP   104
3.6.18. CMN   104
3.6.19. TST   105
3.6.20. SWI   105
3.7. Temporização das Instruções   105
3.8. Outras Tecnologias ARM   106
3.8.1. Instruções ARM v5 e Posteriores   106
3.8.1.1. Thumb-2   110
3.8.2. MMU e MPU   110
3.8.3. Co-processador VFP   111
4. Programação em C   112
4.1. Revisão da Linguagem C   112
4.1.1. Comandos e Palavras Reservadas   112
4.1.2. Estrutura Básica de um Programa   112
4.1.3. Tipos de Dados   113
4.1.3.1. Declaração de Variáveis   114
4.1.3.2. Inicialização de Variáveis   115
4.1.3.3. Outros Modificadores   116
4.1.4. Operadores e Expressões em C   117
4.1.5. Tipos de Dados Complexos   119
4.1.5.1. Enumerações   119
4.1.5.2. Ponteiros   120
4.1.5.3. Matrizes   121
4.1.5.4. Estruturas   123
4.1.5.5. Uniões   124
4.1.5.6. Definições de Tipos   125
4.1.6. Comandos da Linguagem C   125
4.1.6.1. If   125
4.1.6.2. Switch   126
4.1.6.3. For   127
4.1.6.4. While   127
4.1.6.5. Do   128
4.1.7. Funções   128
4.2. O Compilador IAR   130
4.2.1. Tipos e Organização dos Dados   130
4.2.1.1. Uniões, Estruturas e Campos de Bit   131
4.2.2. Funções Intrínsecas   133
4.2.3. Diretivas e Extensões da Linguagem   134
4.2.4. Bibliotecas C   137
4.2.5. Embutindo Código Assembly   139
4.2.5.1. Convenções de Chamada e de Retorno de Funções   140
4.3. O Compilador GCC   141
4.3.1. Pragmas   142
4.3.2. Atributos Especiais   142
4.3.3. Opções de Linha de Comando do GCC   143
4.4. Produzindo Código C Eficiente   146
4.4.1. Tipos de Dados   146
4.4.2. Alinhamento de Memória   148
4.4.3. Manipulação de Bits   149
4.4.4. Outros Aspectos Importantes   150
5. ST STR71x   151
5.1. Descrição Geral da Família STR71x   152
5.1.1. Pinagem   155
5.1.2. Mapa de Memória   158
5.2. Portas de E/S   160
5.2.1. Modo de Alta Impedância / Entrada Analógica   161
5.2.2. Modos de Entrada Digital   162
5.2.3. Modos de Saída Digital de Uso Geral   163
5.2.4. Modos de Saída de Periférico Digital   164
5.2.5. Exemplos   165
5.3. Sistema de Suporte à CPU   167
5.3.1. Controle de Interrupções (EIC)   167
5.3.1.1. Canais e Vetores de Interrupção   169
5.3.1.2. Latência das Interrupções   170
5.3.1.3. Registradores do EIC   172
5.3.1.4. Exemplos de Configuração   174
5.3.1.5. Módulo de Interrupções Externas (XTI)   176
5.3.1.6. Registradores do XTI   179
5.3.1.7. Exemplos de Utilização   181
5.3.2. Reset   184
5.3.2.1. Controle de Reset dos Periféricos   185
5.3.2.2. Registradores   186
5.3.3. Clock   189
5.3.3.1. Operação a Partir do Oscilador Externo   190
5.3.3.2. Operação do PLL1 no modo Free Running   192
5.3.3.3. Operação a Partir do Oscilador de Baixo Consumo   192
5.3.3.4. Alterando a Fonte ou Velocidade dos Clocks   193
5.3.3.5. Bloco PLL2   194
5.3.3.6. Controle Individual do Clock dos Periféricos   195
5.3.3.7. Saída de Clock CKOUT   195
5.3.3.8. Interrupções   195
5.3.3.9. Registradores   196
5.3.3.10. Exemplos de Configuração   202
5.3.4. Gerenciamento de Energia   207
5.3.4.1. Modo SLOW   209
5.3.4.2. Modo WFI   209
5.3.4.3. Modo LPWFI   210
5.3.4.4. Modo STOP   211
5.3.4.5. Modo STANDBY   212
5.3.5. Registradores do PRCCU   213
5.3.6. Exemplo de Uso do Modo Stop   221
5.4. RTC   223
5.4.1. Configuração do RTC   224
5.4.2. Interrupções do RTC   225
5.4.3. Registradores do RTC   225
5.4.4. Exemplo   229
5.5. Timers   230
5.5.1. Contador Principal   231
5.5.2. Canais A e B   232
5.5.2.1. Canais de Captura   232
5.5.2.2. Canais de Comparação   234
5.5.3. Modo OPM   235
5.5.4. Modo PWM   236
5.5.5. Interrupções dos Timers   237
5.5.6. Conexões dos Timers   238
5.5.7. Registradores dos Timers   239
5.5.8. Exemplos   243
5.6. UARTs   247
5.6.1. Transmissão   248
5.6.2. Recepção   250
5.6.2.1. Timeouts   251
5.6.3. Gerador de Baud Rate (BRG)   252
5.6.4. Modo de Endereçamento   255
5.6.5. Interrupções   256
5.6.6. Conexões das UARTs   258
5.6.7. Registradores das UARTs   258
5.6.8. Exemplos de Utilização   262
5.7. Interfaces SPI   266
5.7.1. Interrupções das SPI   270
5.7.2. Conexões das SPI   271
5.7.3. Registradores das SPI   271
5.7.4. Exemplo de Utilização   274
5.8. Interfaces I2C   276
5.8.1. Chamada Geral   279
5.8.2. Byte de partida   279
5.8.3. Funcionamento   280
5.8.3.1. Modo Mestre   281
5.8.3.2. Modo Escravo   285
5.8.4. Interrupções I2C   287
5.8.5. Conexões das Interfaces I2C   287
5.8.6. Registradores das Interfaces I2C   288
5.8.7. Exemplos de Utilização   292
5.9. Conversor A/D de 12 Bits   294
5.9.1. Aumentando a Velocidade do Conversor   296
5.9.2. Interrupções do ADC   296
5.9.3. Conexões do ADC   297
5.9.4. Registradores do ADC   297
5.9.5. Exemplos de Configuração   299
5.10. Controlador de Memória FLASH (FPEC)   302
5.10.1. Programação da FLASH   303
5.10.1.1. Apagamento de um Setor   303
5.10.1.2. Programação de uma Word   305
5.10.1.3. Programação de duas Words   306
5.10.1.4. Suspendendo uma Operação   307
5.10.2. Proteção da Memória FLASH   307
5.10.2.1. Proteção Contra Escrita   307
5.10.2.2. Proteção Contra Leitura/Acesso   309
5.10.3. Registradores do FPEC   310
5.11. Interface USB   316
5.11.1. Conceitos Básicos de USB   317
5.11.1.1. Nível Elétrico e Físico   318
5.11.1.2. Estados de um Dispositivo   320
5.11.1.3. Pipes e Endpoints   321
5.11.1.4. Quadros e Microquadros USB   323
5.11.1.5. Pacotes USB   323
5.11.2. Anatomia das Transações USB   328
5.11.2.1. Transações de Controle   329
5.11.2.2. Transações de Interrupção   334
5.11.2.3. Transações Bulk   335
5.11.2.4. Transações Isócronas   337
5.11.3. Requisições USB   338
5.11.3.1. SET_ADDRESS   338
5.11.3.2. GET_STATUS   338
5.11.3.3. CLEAR_FEATURE   339
5.11.3.4. SET_FEATURE   340
5.11.3.5. GET_DESCRIPTOR   340
5.11.3.6. SET_DESCRIPTOR   341
5.11.3.7. GET_CONFIGURATION   342
5.11.3.8. SET_CONFIGURATION   342
5.11.3.9. GET_INTERFACE   342
5.11.3.10. SET_INTERFACE   342
5.11.4. Descritores   343
5.11.4.1. Device Descriptor   343
5.11.4.2. Device Qualifier Descriptor   345
5.11.4.3. Configuration Descriptor   346
5.11.4.4. Other Speed Configuration Descriptor   347
5.11.4.5. Interface Descriptor   347
5.11.4.6. Endpoint Descriptor   348
5.11.4.7. String Descriptor   349
5.11.5. Classes de Dispositivos   350
5.11.6. Dispositivos da Classe HID   352
5.11.6.1. Requisições HID   352
5.11.6.2. Descritores de um Dispositivo HID   355
5.11.7. A Interface USB dos STR711   364
5.11.7.1. Visão Geral   365
5.11.7.2. Princípios de Operação   369
5.11.7.3. Transações USB   377
5.11.7.4. Eventos de Suspensão e Resumo de Operação   385
5.11.7.5. Interrupções USB   386
5.11.7.6. Inicialização da Interface   387
5.11.7.7. Registradores   388
5.11.7.8. Exemplo de Utilização   394
5.12. Watchdog   411
5.12.1. Modo Timer   412
5.12.2. Modo Reset   412
5.12.3. Registradores do Watchdog   413
6. Exemplos de Projetos com ARM7   415
6.1. Interface com Módulo LCD Alfanumérico   415
6.2. Conexão de Memória FLASH Serial   422
6.3. Utilizando os Exemplos da ST   432
7. Apêndice A – Funções da Biblioteca C   439
8. Apêndice B – Tabela ASCII   443
9. Tabelas de Utilização HID   444
10. Índice Remissivo   446
Referências Bibliográficas   453
Marcas Registradas   457



Quero agradecer antecipadamente a todos aqueles que me ajudaram e incentivaram durante mais esta jornada. Espero que gostem do livro (o sexto !).

Obrigado,

MensagemEnviado: 17 Mai 2007 21:57
por Maurício
Belo trabalho, hein, Fábio ?

Meus parabéns!

Abraços,

Maurício.

MensagemEnviado: 18 Mai 2007 09:12
por andre_luis
Fábio Pereira escreveu:...estou escrevendo os mesmos de forma a serem compatíveis com GCC...


Isso é muito importante, tendo em vista que cada vez mais, as empresas onde a jente trabalha, estão procurando cada vez mais as opções de softwares Free.

MensagemEnviado: 18 Mai 2007 10:56
por renatokodaira
Oi Fabio !

Tem ideia de quanto vai ser o preço do livro ? Ou isso é fixado pela Editora em função do número de páginas, tiragem, etc ?

Tem alguma previsão pra sua plaquinha de desenvolvimento com o ARM ?

MensagemEnviado: 18 Mai 2007 11:01
por Fábio Pereira
Olá Renato,

Tenho uma vaga idéia do preço, mas não sou eu quem o estipula ou calcula, mas acredito que deva custar algo em torno de R$ 120,00 (considerando o número de páginas).

Sobre o kit, estamos tendo de priorizar outros projetos na nossa empresa e infelizmente o kit está sem previsão. Infelizmente este mercado de kits no Brasil é muito ingrato e temos de nos dedicar a produtos que garantam a nossa operação.

Assim que eu tiver novidades sobre o kit eu informo aqui.

T+