The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

U-Boot

U-Boot

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

Загрузчик второго уровня. Копирует кусок данных из указанного ему места из энергонезависимой памяти в ОЗУ. Так как он считает, что это запакованный образ Linux, он его распаковывает и запускает. Образ ядра должен быть предварительно запакован в понятный формат для U-Boot с помощью утилиты mkimage. U-Boot позволяет производить загрузку образов через ftp, а также менять параметры запуска из командной строки, что удобно в момент отладки системы, когда требуется часто пересобирать ядро, файловую систему.

 

Используем U-Boot 1.3.4 + патч от linux4sam.

http://www.denx.de/wiki/U-Boot/SourceCode

http://www.at91.com/linux4sam/bin/view/Linux4SAM/U-Boot

 

wget ftp://ftp.denx.de/pub/u-boot/u-boot-x.x.x.tar.bz2

tar xvjf u-boot-x.x.x.tar.bz2

cd u-boot-x.x.x

wget http://www.linux4sam.org/twiki/pub/Linux4SAM/U-Boot/u-boot-x.x.x-exp.diff

# или, в зависимости от версии u-boot, проверить директорию FTP:

wget ftp://www.linux4sam.org/pub/uboot/u-boot-x.x.x-exp/u-boot-x.x.x-exp.diff

# наложить заплатку на оригинальный u-boot:

cat u-boot-x.x.x-exp.diff | patch -p1

 

 

Список переменных: http://www.denx.de/wiki/view/DULG/UBootEnvVariables

Адаптация кода

Проверить стартовый адрес в /u-boot/board/at91sam9260ek/config.mk. Он должен совпадать с адресом, указанным в Bootstrap (JUMP_ADDRESS).

 

TEXT_BASE = 0x23F00000

 

Установить размер памяти, рабочие частоты в /include/configs/at91sam9260.h:

 

#define AT91C_MAIN_CLOCK                200000000

#define AT91C_MASTER_CLOCK        10000000

#define PHYS_SDRAM_SIZE                0x04000000  /* 64 megs */

 

Понизить при необходимости частоту SPI (согласовать с Bootstrap):

 

#define AT91C_SPI_CLK        4800000

 

Задать параметры запуска в соответствующей секции (или во всех).

Для JFFS2:

 

 #define CONFIG_BOOTARGS                "mem=64M console=ttyS0,115200 "        \

                         "root=/dev/mtdblock1 "        \

                                 "rw rootfstype=jffs2"

 

Для UBIFS:

 

 #define CONFIG_BOOTARGS                "mem=64M console=ttyS0,115200 "        \

                         "root=ubi:rootfs ubi.mtd=rootfs "        \

                                 "rootfstype=ubifs rootflags=bulk_read,chk_data_crc rw"

 

Для ramfs:

 

 #define CONFIG_BOOTARGS                "mem=64M console=ttyS0,115200"

 

Для ramfs и монтировании UBIFS файловой системы:

 

 #define CONFIG_BOOTARGS                "mem=64M console=ttyS0,115200 ubi.mtd=rootfs"

 

 

Обратить внимание на параметр:

 

#define CONFIG_BOOTCOMMAND        "cp.b 0xD0042000 0x22000000 0x210000; bootm"

 

0xD0042000 = адрес, где находится образ ядра. См. Логическая карта памяти.

0x210000 = 2162688 = максимальный размер образа ядра Linux.

0x22000000 = 32 M = адрес загрузки образ ядра, зависит от объёма установленной памяти.

 

Установить адрес микросхемы физического интерфейса Ethernet в cpu/arm926ejs/at91sam9/ether.c:

 

macb_eth_initialize(0, (void *)AT91SAM9260_BASE_EMAC, 0x01);

Компилятор

Используется EABI компилятор. http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite.

Используется не новее 2007q1-21. Причина: непонятное увеличение размера скомпилированного файла.

Компиляция

В Makefile определить путь к компилятору (около 130 строки):

 

CROSS_COMPILE=arm-none-eabi-

 

Для запуска Linux из Dataflash сделать файл следующего содержания и запустить:

 

#!/bin/sh

export PATH=/<path to toolchain>/arm-2007q1/bin:${PATH}

 

make ARCH=arm distclean

make at91sam9260ek_dataflash_cs1_config

make ARCH=arm CROSS_COMPILE=arm-none-eabi-

 

Для запуска Linux из Nandflash сделать файл следующего содержания и запустить:

 

#!/bin/sh

export PATH=/<path to toolchain>/arm-2007q1/bin:${PATH}

 

make ARCH=arm distclean

make at91sam9260ek_nandflash_config

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

 

Результат сборки: /<path to u-boot>/board/at91sam9260ek/dataflash/u-boot.bin ~150 Кб.

Утилита mkimage для упаковки ядра Linux: /<path to u-boot>/tools/mkimage ~40 кБ. mkimage.zip.

 

Внимание!

размер файла не должен превышать параметр IMG_SIZE, указанный в Bootstrap.

 

Смотри также

How can I access U-Boot environment variables in Linux?

http://www.denx.de/wiki/view/DULG/HowCanIAccessUBootEnvironmentVariablesInLinux

Using Watchdog on Stamp9G20 or PortuxG20

http://www.armbedded.eu/node/169

 

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