SAM-BA |
Предыдущая Содержание Следующая |
|
УстановкаИспользуется 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 минуту; |
Предыдущая Содержание Следующая |