- •Инсталляция os Linux на аппаратную платформу at91rm9200_sk
- •Список используемой литературы.
- •Описание процессораAt91rm9200
- •Микроконтроллер на основе процессора arm920t ™
- •Структурная схема микроконтроллера at91rm9200:
- •Общее описание:
- •Структурная схема разрабатываемой аппаратной платформы
- •Установка и настройка tftpd
- •Сборка tftp:
- •Настройка периферии
- •Тактовая частота процессора и памяти.
- •Romboot
- •Main.Cpp: правка времени ожидания
- •Тактовая частота, sdram-память
- •Main.H: правка тактовой частоты процессора
- •Init.Cpp: правка типа и тактовой частоты и частоты памяти
- •Spi DataFlash-память
- •Dataflash.Cpp: конфигурация количества микросхем Flash-памяти
- •Dataflash.H: конфигурация количества микросхем Flash-памяти
- •Dataflash.Cpp: инициализация
- •At45.Cpp - конфигурация количества микросхем Flash-памяти
- •Компиляция программы Romboot
- •Программирование spi Dataflash.
- •Назначение
- •Возможности
- •U‑boot‑1.1.1/board/rm9200/rm9200.C – номер архитектуры
- •U‑boot‑1.1.1/include/configs/rm9200.H – файл конфигурации платы
- •Дополнительная spi DataFlash
- •U‑boot‑1.1.1/cpu/at91rm9200/at45.C – драйвер DataFlash памяти at45dBxxx
- •Драйвер Ethernet - lxt972
- •U‑boot‑1.1.1/include/lxt971a.H
- •U‑boot‑1.1.1/include/at91rm9200_net.H – подключение header-драйвера
- •U‑boot‑1.1.1/board/rm9200/at91rm9200_ether.C (et_enable)
- •U‑boot‑1.1.1/board/rm9200/at91rm9200_ether.C – добавление драйвера lxt972
- •U‑boot‑1.1.1/include/configs/rm9200.H - набор сетевых команд
- •Компиляция u-boot-1.1.1
- •Перечень программ и утилит для сборки u-boot-1.1.1
- •Содержимое файла readme.U‑boot.Patches
- •Вычисление смещения карты памяти.
- •Правка Makefile
- •Сборка u‑boot‑1.1.1
- •Запись u boot 1.1.1 в DataFlash из Romboot
- •Работа с u‑boot‑1.1.1 из DataFlash или ram
- •Linux kernel – Ядро os Linux
- •Переменные окружения для сборки ядра
- •Конфигурации ядра
- •Подготовка к компиляции
- •Конфигурация
- •Редактирование исходного текста
- •Подключение конструктивного исполнения контроллера
- •Подключение светодиода
- •Подключение Ethernet контроллера
- •Подключение Dataflash
- •Компиляция ядра
- •Конечная сборка ядра и инсталляция
- •Скрипт для сборки сжатых образов
- •Результат сборки образов из скрипта
- •Linux usb File System – usb Файловая система
- •Linux Configuration – Конфигурация Дистрибутива
- •Установка и настройка платы at91rm9200_sk
- •Linux Tune – Настройка под конечную цель
- •2007Г. Инженер-электроник: Станислав г. Приходько
Main.Cpp: правка времени ожидания
Листинг программы отображающий изменения в исходном тексте для указания задержки - 5 sec:
// start tempo to start Uboot in a delay of 1 sec if no key pressed
// svcUbootTempo.Start(&svcUbootTempo, 1000, 0, AT91F_StartUboot, (void *)0);
// для указания задержки - 5 sec
svcUbootTempo.Start(&svcUbootTempo, 5000, 0, AT91F_StartUboot, (void *)0);
printf("press any key to enter bootloader\n\r");
getc();
Тактовая частота, sdram-память
Описание выбора тактовой частоты процессора в разделе – Тактовая частота процессора и памяти.
Main.H: правка тактовой частоты процессора
Листинг программы, отображающий изменения в исходном тексте для указания тактовой частоты процессора и памяти:
#ifndef main_h
#define main_h
#include "embedded_services.h"
…
#define AT91C_MASTER_CLOCK 48000000
//#define AT91C_MASTER_CLOCK 46080000 // veter
//#define AT91C_MASTER_CLOCK 44928000
#define AT91C_BAUD_RATE 115200
#define AT91C_DOWNLOAD_BASE_ADDRESS 0x20000000
#define AT91C_DOWNLOAD_MAX_SIZE 0x00020000
#define AT91C_OFFSET_VECT6 0x14 //* Offset for ARM vector 6
#define AT91C_VERSION "VER 1.0-070219-veter"
Init.Cpp: правка типа и тактовой частоты и частоты памяти
Изменение тактовой частоты процессора и периферии можно конфигурировать под данную плату.
Описание установки тактовой частоты процессора в разделе – Тактовая частота процессора и памяти.
В файле main.cpp, нужно исправить строку с переменнойAT91C_PLLA_VALUE:
Было:
//#define AT91C_PLLA_VALUE 0x2026BE04 // -> 179.712MHz
Должна стать:
#define AT91C_PLLA_VALUE 0x2024be04 // -> 170,496MHz // veter
Листинг программы, отображающий изменения в исходном тексте для указания тактовой частоты процессора и памяти:
void AT91F_InitSdram()
{
…
//*Init SDRAM
pRegister = (int *)0xFFFFFF98;
// *pRegister = 0x2188c155;
*pRegister = 0x2a99C259; // veter
…
}
Значение 0x2a99C259описывает конфигурацию используемого типа памяти. Используемая в плате микросхема –K4S561632E-TC75
Описание K4S561632E-TC75, из Datasheet на нее :
16M x 16 166MHz (CL=3) Organization Row Address Column Address 16Mx16 A0~A12 A0-A8 пересчитываем: 256Mbit рядов 13 колонок 9
Обращяясь к Datasheet, становится известно что регистр с адресом0xffffff90– это разделSDRAMC Configuration Register.
Вот его описание:
Spi DataFlash-память
Используется последовательная память с шиной SPI, называется в программеDataflash, простоFlash– это параллельная, она не используется в этой конструкции, по этому по программе места сFlashобходятся разными путями.
Dataflash.Cpp: конфигурация количества микросхем Flash-памяти
Листинг программы, отображающий изменения в исходном тексте:
…
#define CFG_MAX_DATAFLASH_BANKS 2
#define CFG_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000
//#define CFG_DATAFLASH_LOGIC_ADDR_CS3 0xD0000000
#define CFG_DATAFLASH_LOGIC_ADDR_CS1 0xD0000000
…