Сброка toolchain для ARM и запуск Linux на AT91RM9200.

Итак, начнем

Для начала установим переменные окружения для сборки toolchain-а:

export TARGET=arm-linux
export PREFIX=/usr/local/arm
export SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=$PATH:${PREFIX}/bin

Создаем каталоги для сборки:

mkdir /usr/local/arm
cd /usr/local/arm
mkdir src

 В каталог /usr/local/arm/src будем класть все пакеты для сборки.

Создадим каталог для сборки

mkdir /usr/local/arm/src/BUILD

 в нем будем производить сборку всего toolchain-а, чтобы не трогать родные каталоги пакетов

binutils

Распакуем binutils:

bunzip2 -c binutils-2.16.1.tar.bz2 | tar xv

 Создадим каталог для сборки binutils:

mkdir /usr/local/arm/src/BUILD/binutils-2.16.1

 В созданном каталоге делаем:

../../binutils-2.16.1/configure --prefix=${PREFIX} --target=${TARGET} \
--with-sysroot=${SYSROOT} 2>&1 | tee configure.out

 Собираем и инсталируем binutils:

make 2>&1 | tee make.out
make install 2>&1 | tee -a make.out

 Заголовочники (include) ядра

Распаковываем ядро и накатываем требуемые патчи:

bunzip2 -c linux-2.6.16.tar.bz2 | tar xv
ln -s linux-2.6.16 linux

Далее я накатывал патч 2.6.16-at91.patch от maxim (http://maxim.org.za/at91_26.html) Также накладываем остальные патчи, которые необходимо (я приложил в комплект свой патч для работы с RTL8102B(L) MII и для поддержки I2C-шных часов DS1307. последний пока сам не пробовал)

Делаем конфиг для требуемой платформы. У меня это так:

make at91rm9200dk_defconfig
make include/linux/version.h

На ошибки внимания не обращаем.

Теперь копируем include-файлы:

mkdir -p ${SYSROOT}/usr/include
cp -a ${PREFIX}/src/linux/include/linux ${SYSROOT}/usr/include/linux
cp -a ${PREFIX}/src/linux/include/asm-arm ${SYSROOT}/usr/include/asm
cp -a ${PREFIX}/src/linux/include/asm-generic ${SYSROOT}/usr/include/asm-generic

 GCC для сборки glibc

Сборка GCC будет осуществляться в два этапа - вначале промежуточная версия для сборки glibc, потом уже финальная версия.

Распакуем исходники GCC:

bunzip2 -c gcc-3.4.6.tar.bz2 | tar xv

Накатываем все патчи из patches/gcc.

Создаем каталог для сборки:

mkdir /usr/local/arm/src/BUILD/gcc-3.4.6-stage1

В созданном каталоге выполняем:

../../gcc-3.4.6/configure \
--prefix=${PREFIX} --target=${TARGET} --enable-languages=c \
--with-sysroot=${SYSROOT} --without-fp --with-softfloat-support=internal \
--with-newlib --disable-threads --disable-shared --enable-static \
--with-inhibit-libc --with-float=soft 2>&1 | tee configure.out

Собираем и инсталируем GCC:

make 2>&1 | tee make.out
make install 2>&1 | tee -a make.out

glibc

распаковываем glibc:

bunzip2 -c glibc-2.3.6.tar.bz2 | tar xv

заходим в каталог glibc-2.3.6 и распаковываем linux-threads:

bunzip2 -c ../glibc-linuxthreads-2.3.6.tar.bz2 | tar xv

накатываем патчи из patches/glibc.

Создаем каталог для сборки:

mkdir /usr/local/arm/src/BUILD/glibc-2.3.6

В созданном каталоге выполняем:

BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar \
RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld \
../../glibc-2.3.6/configure --prefix=/usr --build=i386-unknown-linux \
--host=arm-linux --target=arm-linux --without-fp \
--without-__thread --enable-add-ons=linuxthreads \
--with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out

Ставим на сборку glibc и идем пить пиво (собирается оооочень долго):

make 2>&1 | tee make.out
make install_root=${SYSROOT} install

GCC

Создаем каталог для сборки:

mkdir /usr/local/arm/src/BUILD/gcc-3.4.6

В созданном каталоге выполняем:

../../gcc-3.4.6/configure \
--prefix=${PREFIX} --target=${TARGET} --enable-languages=c,c++ \
--with-sysroot=${SYSROOT} --without-fp --with-softfloat-support=internal \
--enable-threads=posix --with-float=soft 2>&1 | tee configure.out

Собираем и инсталируем GCC:

make 2>&1 | tee make.out
make install 2>&1 | tee -a make.out

Ядро

Тут все тривиально - как при сборке ядра под компьютер:

cd ${PREFIX}/src/linux
make Image
make modules
make INSTALL_MOD_PATH=${SYSROOT} modules_install

Не забываем поковырять arch/arm/mach-at91rm9200/ на предмет своей переферии. Там все очень просто (я даже сам удивился!!!). Разобраться во всем можно за час.

Расскажу тока пару своих исслодований:

1. Кол-во используемых uart-ов описывается в arch/arm/mach-at91rm9200/board-dk.c:

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

how to get cialis withouprescription

Available evidence indicates that patients whose tumors are estrogen receptor positive are more likely to benefit from Tamoxifen Apotex tamoxifen citrate therapy where can i buy cialis on line Mechanical stress induces auto paracrine ATP release from various cell types, but the mechanisms underlying this release are not well understood

how to get cialis withouprescription

Available evidence indicates that patients whose tumors are estrogen receptor positive are more likely to benefit from Tamoxifen Apotex tamoxifen citrate therapy where can i buy cialis on line Mechanical stress induces auto paracrine ATP release from various cell types, but the mechanisms underlying this release are not well understood

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании