Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
120901-Linux-On-AT91RM9200-SK-new.doc
Скачиваний:
33
Добавлен:
05.03.2016
Размер:
798.21 Кб
Скачать
    1. Дополнительная spi DataFlash

      1. 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

    1. Драйвер 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)

      1. U‑boot‑1.1.1/include/lxt971a.H

Файл lxt971a.hкопируется в директориюuboot‑1.1.1/include/.

      1. 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 );

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]