- •Инсталляция 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Г. Инженер-электроник: Станислав г. Приходько
Дополнительная spi DataFlash
U‑boot‑1.1.1/cpu/at91rm9200/at45.C – драйвер DataFlash памяти at45dBxxx
Подключение второй DataFlashпроизводится следующим методом:
Нужно произвести изменения в исходном тексте.
Описание CS1 сигнала:
//#define AT91C_SPI_PCS3_DATAFLASH_CARD 0x7 /* Chip Select 3 : NPCS3 %0111 */
#define AT91C_SPI_PCS1_DATAFLASH_CARD 0xD /* Chip Select 3 : NPCS3 %1101 */ // veter
Инициализация для CS1:
// *(AT91C_SPI_CSR + 3) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & 0x100000) | ((AT91C_MASTER_CLOCK / (2*SPI_CLK)) << 8);
*(AT91C_SPI_CSR + 1) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & 0x100000) | ((AT91C_MASTER_CLOCK / (2*SPI_CLK)) << 8); // veter
Выбор CS1 сигнала:
// case 3: /* Configure SPI CS3 for Serial DataFlash Card */
case 1: /* Configure SPI CS3 for Serial DataFlash Card */ // veter
Разрешение аппаратного вывода для CS1:
// AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS3_DATAFLASH_CARD<<16) & AT91C_SPI_PCS);
AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS1_DATAFLASH_CARD<<16) & AT91C_SPI_PCS); // veter
Драйвер Ethernet - lxt972
Версия U‑boot‑1.1.1не имеет встроенного драйвераLXT972, следовательно его необходимо интегрировать в текущую версиюu‑boot‑1.1.1.
Для включения контроллера, нужно patch-файлами обновить исходные текстыU-bootпод нашу версию реализации схемы (AT91RM9200‑SK) и ее особенности, отличные от традиционного включения процессораAT91RM9200‑DK(EK).
Традиционная версия программы U-boot-1.1.1не предусматривает многих моментов, которые реализованы в нашей плате. Поэтому изменения нужно вносить с учетом специфики включения устройств или отдельных блоков.
Драйвер lxt972, как идеально подходящий, взят с более старшей версииu-boot-1.1.6( предварительно нужно старшую версию распаковать и скопировать во временную директорию).
Среди исходных текстов u-boot-1.1.6нужно найти следующие 2 файла:
lxt971a.h (header) и lxt971a.c (source)
U‑boot‑1.1.1/include/lxt971a.H
Файл lxt971a.hкопируется в директориюu‑boot‑1.1.1/include/.
U‑boot‑1.1.1/include/at91rm9200_net.H – подключение header-драйвера
Обязательно сделать эти изменения, так как наложенный patch-файл, как описывалось выше, вносит изменения в процедуры, которые нужны для других драйверов, но не для нашего.
Листинг программы, отображающий изменения в исходном тексте:
…
#include <common.h>
#include <asm/io.h>
#include <asm/arch/hardware.h>
#ifdef CONFIG_PHY_IS_RTL8201
#include "rtl8201.h"
#elif defined (CONFIG_PHY_IS_LXT972)
#include "lxt971a.h"
#else
#include "dm9161.h"
#endif
….
/* MII functions */
static void at91rm9200_EmacEnableMDIO(AT91PS_EMAC p_mac);
static void at91rm9200_EmacDisableMDIO(AT91PS_EMAC p_mac);
//static UCHAR at91rm9200_EmacReadPhy(AT91PS_EMAC p_mac, unsigned char PhyAddress, unsigned char RegisterAddress, unsigned sho
rt *pInput);
//static UCHAR at91rm9200_EmacWritePhy(AT91PS_EMAC p_mac, unsigned char PhyAddres, unsigned char RegisterAddress, unsigned sho
rt *pOutput);
static UCHAR at91rm9200_EmacReadPhy(AT91PS_EMAC p_mac, unsigned char RegisterAddress, unsigned short *pInput);
static UCHAR at91rm9200_EmacWritePhy(AT91PS_EMAC p_mac, unsigned char RegisterAddress, unsigned short *pOutput);
void at91rm92000_GetPhyInterface(void );
…