SAM-BA

Предыдущая  Содержание  Следующая  V*D*V

Установка

Используется SAM-BA v2.7. (AT91-ISP v1.11), или SAM-BA v2.9 (AT91-ISP v1.13) или SAM-BA v2.10.

 

http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3883

 

SAM-BA 2.7 и SAM-BA 2.9 зависают при стирании Nandflash, но стирают. Остальные скрипты работают нормально.

У SAM-BA 2.10 все скрипты работают нормально.

Сборка скриптов для SAM-BA v2.7

Установить arm-elf-gcc с http://yagarto.de.

В папке <путь к SAM-BA>\applets\isp-applets\ создать файл build_apps.bat следующего содержания:

 

build.cmd ../lib

pause 0

 

В той же папке создать файл build.cmd:

 

chdir extram

make CHIP=at91sam9260 BOARD=at91sam9260-ek MEMORY=sram_samba DYN_TRACES=0 INST_PREFIX=%1 clean all

make clean

 

chdir ..\nandflash

make CHIP=at91sam9260 BOARD=at91sam9260-ek MEMORY=sdram DYN_TRACES=1 INST_PREFIX=%1 clean all

make clean

 

chdir ..\norflash

make CHIP=at91sam9260 BOARD=at91sam9260-ek MEMORY=sdram DYN_TRACES=1 INST_PREFIX=%1 clean all

make clean

 

chdir ..\dataflash

make CHIP=at91sam9260 BOARD=at91sam9260-ek MEMORY=sdram DYN_TRACES=1 INST_PREFIX=%1 clean all

make clean

 

chdir ..\serialflash

make CHIP=at91sam9260 BOARD=at91sam9260-ek MEMORY=sdram DYN_TRACES=1 INST_PREFIX=%1 clean all

make clean

 

pause 0

 

Установить частоту кварца в <путь к SAM-BA>\applets\at91lib\boards\at91sam9260-ek\board.h:

 

/// Frequency of the board main oscillator.

//#define BOARD_MAINOSC           18432000

#define BOARD_MAINOSC           12000000

 

/// Master clock frequency (when using board_lowlevel.c).

//#define BOARD_MCK               ((18432000 * 97 / 9) / 2)

#define BOARD_MCK               ((12000000 * 50 / 3) / 2)

 

Проверить объём памяти и инициализацию шины данных памяти:

 

/// Board SDRAM size

#define BOARD_SDRAM_SIZE   0x04000000// 64M

//#define BOARD_SDRAM_SIZE   0x02000000// 32M

 

/// List of all SDRAM pins definitions.

#define PINS_SDRAM  {0xFFFF0000, AT91C_BASE_PIOC, AT91C_ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT}// 64M

//#define PINS_SDRAM  {0x00000000, AT91C_BASE_PIOC, AT91C_ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT}// 32M

 

В board_lowlevel.c установить параметры PLLA и PLLB:

 

#define BOARD_OSCOUNT           (AT91C_CKGR_OSCOUNT & (64 << 8))

#define BOARD_CKGR_PLLA         (AT91C_CKGR_SRCA | AT91C_CKGR_OUTA_2)

#define BOARD_PLLACOUNT         (63 << 8)

#define BOARD_MULA              (AT91C_CKGR_MULA & (49 << 16))

#define BOARD_DIVA              (AT91C_CKGR_DIVA & 3)

#define BOARD_PRESCALER         AT91C_PMC_MDIV_2

 

#define BOARD_USBDIV            AT91C_CKGR_USBDIV_1

#define BOARD_CKGR_PLLB         AT91C_CKGR_OUTB_0

#define BOARD_PLLBCOUNT         BOARD_PLLACOUNT

#define BOARD_MULB              (7 << 16)

#define BOARD_DIVB              1

 

В board_memories.c проверить ширину шины данных RAM в void BOARD_ConfigureSdram() и void BOARD_ConfigureSdram48MHz():

 

// CFG Control Register

 WRITE(AT91C_BASE_SDRAMC, SDRAMC_CR, AT91C_SDRAMC_NC_9

                                                        | AT91C_SDRAMC_NR_13 

                                                        | AT91C_SDRAMC_CAS_2 

                                                        | AT91C_SDRAMC_NB_4_BANKS

                                                        | AT91C_SDRAMC_DBW_32_BITS

                                                        | AT91C_SDRAMC_TWR_2

                                                        | AT91C_SDRAMC_TRC_7

                                                        | AT91C_SDRAMC_TRP_2

                                                        | AT91C_SDRAMC_TRCD_2

                                                        | AT91C_SDRAMC_TRAS_5

                                                        | AT91C_SDRAMC_TXSR_8);

 

Проверить размер шины данных Nandflash в <путь к SAM-BA>\applets\isp-applets\nandflash\main.c:

 

// Nandflash bus width

static unsigned char nfBusWidth = 8;

 

Собрать, запустив build_apps.bat.

Бинарники будут лежать в папке <путь к SAM-BA>\applets\isp-applets\lib\at91sam9260ek.

Создать папку <путь к SAM-BA>\lib\AT91SAM9260-EK-MY\.

Скопировать туда новые бинарники и скрипт <путь к SAM-BA>\lib\AT91SAM9260-EK\AT91SAM9260-EK.tcl, переименовать его в AT91SAM9260-EK-MY.tcl.

Добавить плату в основной список в <путь к SAM-BA>\lib\boards.tcl:

 

"AT91SAM9260-EK-MY"    "AT91SAM9260-EK-MY/AT91SAM9260-EK-MY.tcl"

Сборка скриптов для SAM-BA v2.9 и SAM-BA v2.10

Установить arm-elf-gcc с http://yagarto.de.

В документации указан EABI компилятор версии 2007q1-10 от Codesourcery, но сборка им даёт ошибки.

 

В папке <путь к SAM-BA>\applets\isp-projects\ создать файл build.bat следующего содержания:

 

chdir extram

make CROSS_COMPILE=arm-elf- clean BOARD=at91sam9260-ek CHIP=at91sam9260 sdram

 

chdir ..\nandflash

make CROSS_COMPILE=arm-elf- clean CHIP=at91sam9260 BOARD=at91sam9260-ek sdram

 

chdir ..\norflash

make CROSS_COMPILE=arm-elf- clean CHIP=at91sam9260 BOARD=at91sam9260-ek sdram

 

chdir ..\dataflash

make CROSS_COMPILE=arm-elf- clean CHIP=at91sam9260 BOARD=at91sam9260-ek sdram

 

chdir ..\serialflash

make CROSS_COMPILE=arm-elf- clean CHIP=at91sam9260 BOARD=at91sam9260-ek sdram

 

pause 0

 

Проверить строчки в Makefile-ах, они должны быть такие:

 

dataflash/Makefile

 

LDFLAGS = -g $(OPTIMIZATION) -nostartfiles -Wl,-Map=$(OUTPUT).map,--gc-sections

 

eeprom/Makefile

 

LDFLAGS = -g $(OPTIMIZATION) -nostartfiles -Wl,-Map=$(OUTPUT).map,--gc-sections

 

extram/Makefile

 

LDFLAGS = -g $(OPTIMIZATION) $(TARGET_OPTS) -Wl,-Map=$(OUTPUT).map,--gc-sections -nostartfiles

 

nandflash/Makefile

 

LDFLAGS = -g $(OPTIMIZATION) $(TARGET_OPTS) -Wl,-Map=$(OUTPUT).map,--gc-sections -nostartfiles

 

norflash/Makefile

 

LDFLAGS = -g $(OPTIMIZATION) -nostartfiles -Wl,-Map=$(OUTPUT).map,--gc-sections

 

serialflash/Makefile

 

LDFLAGS = -g $(OPTIMIZATION) -nostartfiles -Wl,-Map=$(OUTPUT).map,--gc-sections

 

Установить частоту кварца в <путь к SAM-BA>\applets\at91lib\boards\at91sam9260-ek\board.h:

 

/// Frequency of the board main oscillator.

//#define BOARD_MAINOSC           18432000

#define BOARD_MAINOSC           12000000

 

/// Master clock frequency (when using board_lowlevel.c).

//#define BOARD_MCK               ((18432000 * 97 / 9) / 2)

#define BOARD_MCK               ((12000000 * 50 / 3) / 2)

 

Проверить объём памяти и инициализацию шины данных памяти:

 

/// Board SDRAM size

#define BOARD_SDRAM_SIZE   (64*1024*1024)  // 64 MB

//#define BOARD_SDRAM_SIZE   (32*1024*1024)  // 32 MB

/// List of all SDRAM pins definitions.

#define PINS_SDRAM  {0xFFFF0000, AT91C_BASE_PIOC, AT91C_ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT}

//#define PINS_SDRAM  {0x00000000, AT91C_BASE_PIOC, AT91C_ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT}// 16 bit

/// SDRAM bus width.

#define BOARD_SDRAM_BUSWIDTH    32

//#define BOARD_SDRAM_BUSWIDTH    16

 

В board_lowlevel.c установить параметры PLLA и PLLB:

 

#define BOARD_OSCOUNT           (AT91C_CKGR_OSCOUNT & (64 << 8))

#define BOARD_CKGR_PLLA         (AT91C_CKGR_SRCA | AT91C_CKGR_OUTA_2)

#define BOARD_PLLACOUNT         (63 << 8)

//#define BOARD_MULA              (AT91C_CKGR_MULA & (96 << 16))// 18.432

#define BOARD_MULA              (AT91C_CKGR_MULA & (49 << 16))// 12

//#define BOARD_DIVA              (AT91C_CKGR_DIVA & 9)// 18.432

#define BOARD_DIVA              (AT91C_CKGR_DIVA & 3)// 12

#define BOARD_PRESCALER         AT91C_PMC_MDIV_2

 

#define BOARD_USBDIV            AT91C_CKGR_USBDIV_1

#define BOARD_CKGR_PLLB         AT91C_CKGR_OUTB_0

#define BOARD_PLLBCOUNT         BOARD_PLLACOUNT

//#define BOARD_MULB              (124 << 16)// 18.432

#define BOARD_MULB              (7 << 16)// 12

//#define BOARD_DIVB              24// 18.432

#define BOARD_DIVB              1// 12

 

Для SAM-BA 2.10 перед компиляцией создать каталог <путь к SAM-BA>\applets\isp-project\tcl_lib\at91sam9260-ek\.

 

Бинарники будут лежать в папке <путь к SAM-BA>\applets\isp-applets\tsl_lib\at91sam9260ek.

 

Для SAM-BA 2.9:

Создать папку <путь к SAM-BA>\isp-project\tcl_lib\AT91SAM9260-EK-MY\.

Скопировать туда новые бинарники и скрипт <путь к SAM-BA>\isp-project\tcl_lib\AT91SAM9260-EK\AT91SAM9260-EK.tcl, переименовать его в AT91SAM9260-EK-MY.tcl.

 

Для SAM-BA 2.10:

Создать папку <путь к SAM-BA>\tcl_lib\AT91SAM9260-EK-MY\.

Скопировать туда новые бинарники и скрипт <путь к SAM-BA>\tcl_lib\AT91SAM9260-EK\AT91SAM9260-EK.tcl, переименовать его в AT91SAM9260-EK-MY.tcl.

 

Проверить параметры SDRAM в AT91SAM9260-EK-MY.tcl.

 

# Set bus width (16 or 32)

variable extRamDataBusWidth 32

#variable extRamDataBusWidth 16

 

Добавить плату в основной список в \...\tcl_lib\boards.tcl:

 

"AT91SAM9260-EK-MY"    "AT91SAM9260-EK-MY/AT91SAM9260-EK-MY.tcl"

Прошивка при использовании Dataflash

Загрузка исполняемых модулей происходит из Dataflash.

Файловая система располагается в Nandflash.

Смотри карту памяти.

 

В Dataflash:

Bootstrap:        0x00000

U-Boot:        0x08400 (задаётся в Bootstrap через IMG_ADDRESS)

Kernel:        0x42000 (задаётся в U-Boot, первый параметр команды cp.b)

 

В Nandflash:

Rootfs:        0x400000 (задаётся в ядре Linux /linux/arch/arm/mach-at91/board-sam9260ek.c в ek_nand_partition)

Прошивка Bootstrap

Выключить прибор;

На плате снять перемычку выбора кристалла DataFlash;

Включить прибор;

Запустить SAM-BA. Выбрать AT91SAM9260-EK-MY и способ соединения;

Поставить перемычку выбора кристалла;

На странице Data Flash AT45DB/DCB в секции Scripts выбрать пункт Enable Dataflash (SPI0 CS1), нажать Execute;

На странице Data Flash AT45DB/DCB в секции Scripts выбрать пункт Send Boot file, нажать Execute. В диалоге выбор файла указать файл Bootstrap.bin;

Прошивка U-Boot

Выключить прибор;

На плате снять перемычку выбора кристалла DataFlash;

Включить прибор;

Запустить SAM-BA. Выбрать AT91SAM9260-EK-MY и способ соединения;

Поставить перемычку выбора кристалла;

На странице Data Flash AT45DB/DCB в секции Scripts выбрать пункт Enable Dataflash (SPI0 CS1), нажать Execute;

В группе Download/Upload File в строке Send File Name указать путь к файлу u-boot.bin, указать адрес (Address) 0x8400, нажать кнопку Send file. Прошивка занимает примерно 1 минуту;

Прошивка ядра

Выключить прибор;

На плате снять перемычку выбора кристалла DataFlash;

Включить прибор;

Запустить SAM-BA. Выбрать AT91SAM9260-EK-MY и способ соединения;

Поставить перемычку выбора кристалла;

На странице Data Flash AT45DB/DCB в секции Scripts выбрать пункт Enable Dataflash (SPI0 CS1), нажать Execute;

В группе Download/Upload File в строке Send File Name указать путь к файлу zLinux_x.xx.xx.bin (или zImage), указать адрес (Address) 0x42000, нажать кнопку Send file. Прошивка занимает примерно 5 минут;

Прошивка файловой системы

Выключить прибор;

На плате снять перемычку выбора кристалла DataFlash;

Включить прибор;

Запустить SAM-BA. Выбрать AT91SAM9260-EK-MY и способ соединения;

Поставить перемычку выбора кристалла;

На странице NandFlash в меню выбрать пункт Enable NandFlash, нажать Execute. Должны высветиться параметры микросхемы;

На странице NandFlash в меню выбрать пункт Erase all, нажать Execute. Процесс занимает примерно 2 минуты.

Выбрать файл rootfs_jffs2.bin или rootfs_ubifs.bin, указать адрес 0x400000, нажать кнопку Send file. Прошивка занимает примерно 1 минуту;

Предыдущая  Содержание  Следующая