Mikroprocesory AT91SAM9 w przykładach
- Dodaj recenzję:
- Kod: 5846
- Producent: BTC
- Autor: Robert Brzoza-Woch
- Rok wydania: 2010
- ISBN: 978-83-60233-62-7
- Liczba stron: 280
- Oprawa: twarda
- Format: B5
-
Dostępność:
Jest
-
- Cena netto: 113,33 zł 119,00 zł
- szt.
Opis
Książka jest przeznaczona dla konstruktorów chcących stosować w swoich projektach mikroprocesory z rodziny AT91SAM9 firmy Atmel oraz amatorów chcących poznać tajniki programowania współczesnych, zaawansowanych mikroprocesorów. Przedstawiono w niej zarówno zagadnienia podstawowe (konfiguracja mikroprocesora, obsługa standardowych peryferiów, obsługa kart pamięciowych SD/MMC i SDHC) jak i zaawansowane (jak obsługa MMU, aplikacje DSP audio, obsługa kamer CCD), w obydwu przypadkach na przykładzie czytelnie napisanych i dobrze skomentowanych programów. Dużo miejsca poświęcono także przybliżeniu praktycznych zagadnień projektowych, dzięki czemu konstruktorzy projektujący płytki drukowane będą mogli unikać dokuczliwych i trudnych do wykrycia błędów podczas trasowania szybkich magistral 16/32-bitowych umożliwiających dołączenie do mikroprocesora pamięci SDRAM.
Spis treści
Wstęp / 9
1. Podstawowe informacje o mikroprocesorach AT91SAM9 / 11
1.1. Krótka charakterystyka wybranych mikroprocesorów serii AT91SAM9 / 12
1.1.1. Cechy wspólne / 12
1.1.2. Rodzina SAM9 w porównaniu z SAM7 / 13
1.1.3. Przenośność kodu pomiędzy SAM7 i SAM9 / 15
1.2. Rdzeń ARM926EJ-S / 15
1.2.1. Szybkość działania / 15
1.2.2. Pamięci cache / 16
1.2.3. Architektura Harvard, ale / 16
1.2.4. Jednostka zarządzania pamięcią MMU / 18
1.3. Pamięci / 18
1.3.1. Pamięci w AT91SAM9260 – co z nimi zrobić? / 19
1.3.2. Pamięci zewnętrzne / 19
1.3.3. Problem szybkości pamięci zewnętrznej / 21
1.3.4. Pamięci TCM / 22
2. Jak to podłączyć? / 23
2.1. Zasilanie / 24
2.2. Taktowanie. 26
2.3. Interfejsy USB / 27
2.3.1. Podłączenie modułu UDP / 28
2.3.2. Podłączenie modułu UHP / 28
2.4. Interfejs JTAG / 29
2.5. Wyprowadzenia do sterowania pracą mikroprocesora / 30
2.5.1. JTAGSEL / 30
2.5.2. TST / 31
2.5.3. OSCSEL / 31
2.5.4. BMS / 31
2.5.5. SHDN / 32
2.5.6. WKUP / 32
2.6. Podłączanie pamięci do zewnętrznej magistrali równoległej / 33
2.6.1. Pojedyncza pamięć SDRAM z interfejsem 16-bitowym / 33
2.6.2. Projekt płytki drukowanej / 34
2.6.3. Dwie pamięci SDRAM i interfejs 32-bitowy / 36
2.6.4. Pamięci Flash / 38
2.7. Tanie płytki testowe dla mikroprocesorów z rodziny AT91SAM926x / 40
3. Zaczynamy / 43
3.1. Co się dzieje po zresetowaniu mikroprocesora? / 44
3.1.1. Program w zewnętrznej pamięci równoległej / 45
3.1.2. Program bootloadera w pamięci ROM / 45
3.1.3. Rozpoznawanie programu wykonywalnego / 47
3.1.4. Wykonanie skopiowanego programu / 48
3.2. Instalacja programu SAM-BA / 48
3.2.1. Wyłączenie inicjalizacji pamięci SDRAM / 49
3.3. Uruchamianie własnych programów na AT91SAM9260 / 50
3.3.1. Działanie i uruchamianie bootloadera DataFlash_Programmer / 50
3.3.2. Działanie bootloadera SDRAM_Bootloader_cache / 55
3.3.3. Konfiguracja bootloadera SDRAM_Bootloader_cache / 56
3.3.4. Programowanie pamięci SDRAM za pomocą terminalu / 57
4. Pierwsze programy / 59
4.1. Dostępne obszary pamięci i ich właściwości / 60
4.1.1. Wewnętrzne pamięci mikrokontrolera / 60
4.1.2. Pamięć SDRAM / 62
4.1.3. Moduły peryferyjne / 62
4.1.4. TT i pozostałe obszary pamięci / 62
4.2. Projekt „zerowy” / 63
4.2.1. main.c / 63
4.2.2. board.h / 63
4.2.3. common.h / 65
4.2.4. Makefile / 66
4.2.5. delay.c / 66
4.2.6. syscalls.c / 67
4.2.7. Pozostałe pliki / 68
4.3. Plik startowy Ccstartup.S / 69
4.3.1. Realizowane zadania / 69
4.3.2. Obsługa wyjątków / 69
4.3.3. Rozpoczęcie programu / 70
4.3.4. Obsługa wyjątku IRQ / 74
4.3.5. Obsługa wyjątku FIQ / 76
4.3.6. Obsługa wyjątków Abort / 77
4.4. Plik cstartup_SAM9.c / 78
4.4.1. Inicjalizacja sygnałów zegarowych / 78
4.4.2. Inicjalizacja kontrolera przerwań AIC / 81
5. Jednostka MMU,zarządzanie pamięcią i inne nieprzyjemne rzeczy / 83
5.1. Coś nowego, coś innego / 84
5.1.1. Przestrzeń adresowa / 84
5.1.2. Zabezpieczenia / 85
5.1.3. Tabela translacji / 86
5.1.4. Pamięci cache / 87
5.1.5. Bufor TLB / 89
5.1.6. Bufor zapisu / 89
5.2. Rozmowa z MMU / 90
5.2.1. Rejestry koprocesora i dostęp do nich / 90
5.2.2. Tworzymy wstawkę / 91
5.2.3. Gotowe funkcje obsługi koprocesora / 92
5.2.4. Uaktywnianie samej pamięci ICache / 93
5.3. Jak uaktywnić pamięć DCache? / 94
5.3.1. Domeny / 94
5.3.2. Tworzenie tabeli translacji / 95
5.3.3. Włączenie MMU i uaktywnienie pamięci cache / 100
5.4. Zabezpieczenie pamięci / 101
5.4.1. Uruchomić program dostarczony z zewnątrz / 101
5.4.2. Zarys sytuacji / 102
5.4.3. Program testowy Supervisor_Simple / 103
5.4.4. Programy „użytkownika” / 103
5.4.5. Poprawny program / 104
5.4.6. Program nieprawidłowy / 105
5.4.7. Uruchamianie programu użytkownika / 107
5.4.8. Obsługa wyjątku SWI / 109
5.4.9. Obsługa wyjątków Abort / 112
5.5. Translacja adresów w praktyce / 115
5.5.1. Program przykładowy Supervisor_Virtual / 115
5.5.2. Analiza kodu programu Supervisor_Virtual / 117
5.5.3. Eksperyment z pamięciami cache / 117
5.6. Tablice stron / 118
5.6.1. Translacja adresów pod lupą / 118
5.6.2. Pierwszy program przykładowy / 121
5.6.3. Drugi program przykładowy / 126
5.6.4. Dalsze pomysły / 129
5.7. Wprowadzenie do wielozadaniowego systemu operacyjnego / 130
5.7.1. Podejście najprostsze / 130
5.7.2. Zastosowanie pamięci wirtualnej / 131
5.7.3. Zastosowanie sprzętowego wspomagania w przełączaniu zadań / 133
6. Obsługa kart pamięci za pomocą kontrolera MCI / 137
6.1. MMC, SD, SDHC najważniejsze, by się nie pogubić / 138
6.2. Interfejs elektryczny / 140
6.3. Transmisja danych kontrolnych / 141
6.3.1. Wysyłanie komend / 142
6.3.2. Rejestr MCI_CMDR / 144
6.3.3. Komendy ACMD / 145
6.4. Inicjalizacja kontrolera MCI i karty SD/SDHC / 146
6.4.1. Inicjalizacja kontrolera MCI w funkcji mciInit / 146
6.4.2. Rozpoznawanie i inicjalizacja kart SD/SDHC w funkcji cardInit / 149
6.4.3. Odczyt rozmiarów karty przez program nadrzędny / 155
6.5. Transfery danych bez użycia kanału DMA / 156
6.5.1. Odczyt pojedynczego bloku / 156
6.5.2. Zapis pojedynczego bloku do pamięci Flash karty / 158
6.6. Transfery danych z wykorzystaniem kanału DMA / 159
6.6.1. Odczyt danych z karty / 160
6.6.2. Zapis danych na kartę / 162
6.7. Funkcje interfejsowe sterownika sd.c / 164
6.8. Program przykładowy i integracja z biblioteką FatFS / 165
6.8.1. Inicjalizacja biblioteki FatFS i karty SD / 166
6.8.2. Wyświetlenie listy plików i katalogów – obsługa długich nazw / 166
6.8.3. Odczyt pojemności karty pamięci / 171
6.8.4. Zapis i odczyt pliku / 171
6.8.5. Test szybkości zapisu i odczytu / 172
7. Przetwarzanie dźwięku,czyli jedno z najciekawszych zastosowań modułu SSC / 175
7.1. Czym się zajmiemy? / 176
7.2. Magistrala szeregowa I²S / 176
7.2.1. Hierarchia układów na magistrali I²S / 177
7.2.2. Realizacja transmisji danych przez I²S / 179
7.3. Współpraca mikroprocesora z kodekiem na przykładzie AT91SAM9260 i UDA1380 / 180
7.3.1. Połączenie elektryczne kodeka i mikroprocesora / 180
7.4. Oprogramowanie kodeka / 183
7.4.1. Inicjalizacja kodeka / 183
7.4.2. Inicjalizacja kontrolera SSC – funkcja codecSscConfig / 183
7.4.3. Przesyłanie danych do i z kodeka / 190
7.4.3. Włączenie i wyłączenie sygnału zegarowego / 192
7.4.5. Pozostałe funkcje obsługi kodeka / 196
7.5. Magnetofon cyfrowy / 197
7.5.1. Obsługa magnetofonu / 197
7.5.2. Działanie programu / 199
7.6. Realizacja prostych algorytmów przetwarzania dźwięku / 204
7.6.1. Obsługa programu / 204
7.6.2. Działanie programu / 205
7.6.3. Realizacja filtru FIR / 208
7.6.4. Skąd wziąć współczynniki filtru, czyli przyspieszony kurs Octave / 210
7.6.5. Efekt cyfrowego echa / 213
8. Interfejs sensora obrazu ISI / 215
8.1. Krótkie wprowadzenie, czyli „o co chodzi?” / 216
8.2. Sensory obrazu / 217
8.2.1. Typowe sygnały modułu kamery / 217
8.2.2. Przesyłanie danych graficznych / 219
8.3. Moduł ISI / 222
8.3.1. Podstawowe funkcje realizowane przez ISI / 222
8.3.2. Zapis danych do pamięci RAM / 223
8.3.3. Interfejs elektryczny modułu ISI oraz podłączenie kamery do mikroprocesora / 225
8.4. Program przykładowy / 227
8.4.1. Podłączamy sprzęt / 227
8.4.2. Uruchamiamy program / 228
8.4.3. Inicjalizacja modułu ISI / 229
8.4.3. Komunikacja z sensorami obrazu PO2030 i PO6030 / 231
8.4.4. Konfiguracja modułu ISI / 233
8.4.5. Wyświetlanie obrazu ze ścieżki podglądu / 237
8.4.7. Pobieranie obrazu ze ścieżki kodeka / 238
8.5. Co dalej? / 240
Dodatek A. Przyspieszony kurs asemblera / 241
A.1. Jak zacząć? / 242
A.2. Kod asemblera we własnym programie / 243
A3. Rodzaje instrukcji asemblera / 243
A.3.1. Instrukcje skoków / 244
A.3.2. Instrukcje służące do przetwarzania danych / 246
A.3.3. Operacje mnożenia / 249
A.3.4. Rozkazy dostępu do słowa statusowego / 250
A.3.5. Rozkazy przesłań (instrukcje Load i Store) / 251
A.3.6. Rozkazy przesłań wielu rejestrów i działania na stosie / 253
A.4. Wstawki asemblera w języku C / 255
A.4.1. Podejście najprostsze / 255
A.4.2. Pełna składnia polecenia asm / 256
A.5. Przypisanie rejestru do zmiennej / 258
Dodatek B. Jak napisać skrypt linkera? / 259
B.1. Zadanie do wykonania / 260
B.2. Podstawowe zasady tworzenia skryptów linkera / 263
B.3. Bardzo prosty skrypt linkera / 264
B.4. Rozbudowa skryptu / 266
B.5. Definicja regionów pamięci / 268
B.6. Usunięcie sekcji / bss z pliku wynikowego / 270
B.7. Ostateczna postać skryptu linkera: sdram.lds / 272
B.8. Wybór sekcji dla zmiennych / 276
Literatura / 277
Informacje o bezpieczeństwie produktu Informacje o producencie
Zadaj pytanie dotyczące produktu. Nasz zespół z przyjemnością udzieli szczegółowej odpowiedzi na zapytanie.