Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: компилляция Linux Montavista 2.4.20 под IXP425. Нужен Montavista DevKit под IXP425 /opt/montavista/pro/devkit/arm/xscale_be
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
islavv
Привет всем
на столе лежит несколько роутеров с IXP425 -а именно Netgear WG302 WAG302 WGR826v
16Mb Flash 32Mb Ram
Хотелось бы закомпилировать ядро и GPL сорсы чтобы воспроизвести firmware и возможно добавить
туда свои два цента- например драйвер 802.11n и карточку в mini PCI слот
или драйвер WiMax и тд
На Netgear лежат GPL исходники ядра и приложений
например здесь
http://ftp.gpl-devices.org/pub/vendors/Netgear/WG302/

Внизу последовательности компилляции описанная каким то корейцем
Нужен DevKit Montavista для ARM/Xscale "xscale_be-gcc"
-------------------------------------------------
который был общедоступным несколько лет назад
но потом пропал со всех сайтов
Вдруг у кого есть и может поделиться - а может кто собирал ядро
другим тулчейном и может уверенно сказать что заработает
---------------------
Может кому будет интересно проучаствовать :-)
Cпасибо



MontaVista v3.1 Configuration and Compiling

Assume MVL was in folder /opt/montavista/, your board is intel ixdp425.
Your cross compiler should set to $PATH first. We use xscale_be-gcc.

Add following lines to /etc/profile.

pathmunge /opt/montavista/common/eclipse
pathmunge /opt/montavista/pro/host/bin
pathmunge /opt/montavista/pro/devkit/arm/xscale_be/bin

1. Prepare your working folder
#cd /opt
#mkdir MVL
#cd MVL
#mkdir linux-2.4.20_mvl31 app target mkramdisk ramdisk

2. Copy montavista files
#cd /opt/MVL/linux-2.4.20_mvl31
#cp -a /opt/montavista/pro/devkit/lsp/intel-ixdp4xx-arm_xscale_be/linux-2.4.20_mvl31/ .
#cd /opt/MVL/target
#cp -a /opt/montavista/pro/devkit/arm/xscale_be/target .

You can export this directory using NFS. Kernel files are 169M, target files are 921M.
3. Apply patch
(1)For frame buffer support
#cd /opt/MVL/linux-2.4.20_mvl31
#cp /mvl31-ixp425-fb-support.patch .
#patch –p0 < mvl31-ixp425-fb-support.patch

(2)For socket reuse
#cd /opt/MVL/linux-2.4.20_mvl31
#cp /SO_REUSEPORT.patch .
#patch –p1 < SO_REUSEPORT.patch

4. Configure Kernel
#cd /opt/MVL/linux-2.4.20_mvl31
#make oldconfig
#make menuconfig

Configuration:
(1)Support Frame Buffer
"Character devices"---Enable the "Virtual terminal"
"Console drivers" --- "Frame-buffer support"--- Enable "Support for frame buffer devices"
Enable the "Advanced low level driver options", and then enable all sub-options (i.e. Monochrome, 2, 4, 8,…bpp packed pixels) as yes instead of module.
Enable the "Select compiled-in fonts", and then enable all font types.

NOTE: You should also change vfb.c in SigmaDesings Driver as below. vfb.c is located in folder
mrua_EM8620L_v2_3_49_0_dcc_dev.ixdp425/MRUA_src/mambolfb.

Static int mambolfb_mmap(……….)
{
#ifndef __arm__
BLOCK A …
#if (RMPLATFORM==RMPLATFORMID_AOE6_SH4)
BLOCK B …
#else
BLOCK C …
#endif
BLOCK D …
/* Code added start */
#ifdef CONFIG_ARCH_IXP425
/* In the IXP425 architecture, the 'videomemory' is located on PCI MEM
and not mapped to virtual address, so treate 'videomemory'
as physical memory. */
if (kc_remap_page_range((struct kc_vm_area_struct *) vma,
vma->vm_start, videomemory,
vma->vm_end-vma->vm_start,
(struct kc_pgprot_t *) &vma->vm_page_prot))
return -EAGAIN;
printk("remapped %ld bytes in userland of process %d at address "
"0x%08lx to 0x%08lx\n",
vma->vm_end-vma->vm_start,current->pid,vma->vm_start, videomemory);
#endif
/* Code added end */
#endif
return 0;
}

After the save the modified source file, the read have to compile the driver module again. Type the command “make” under the directory of which the vfb.c locates in will start the compiling for "mambolfb.o" module.
NOTE: The driver module MUST be compiled after the kernel configuration is changed.

(2)Kernel Command Line
"General Setup"---"Default Kernel Command String" input:
console=ttyS1,115200 root=/dev/ram initrd=0x00800000,2000K mem=128M@0x00000000
(3)
"File Systems"---"Network File Systems"--- Disable "Root file system on NFS"

5. Compile kernel
#make dep
#make zImage
#make modules

Compiled kernel is in /opt/MVL/kernel/arch/arm/boot/. Copy kernel file zImage to /tftpboot/gdzImage.
NOTE: If Loadable Module Support is not set, disregard the make modules command and all installation directions for modules.

6. Install Modules

#make modules_install INSTALL_MOD_PATH=<mod_install_dir>

This will place the modules into <mod_install_dir>/lib/modules/x.y.z on the host, which can then be transferred to the target machine. The target directory for the modules on the MVL should be /lib/modules/x.y.z.

7. Rebuild ramdisk
#cd /opt/MVL/mkramdisk
#cp -a /opt/montavista/pro/devkit/arm/xscale_be/images/mkramdisk .
#./mkramdisk -r /opt/montavista/pro/ gdramdisk
#gzip -v9 gdramdisk

It will create 6M ramdisk with 4.1M contents. You can use command 'mount -o loop gdramdisk /mnt' to see contents.
amw
Цитата(islavv @ Nov 13 2008, 21:04) *
Привет всем
на столе лежит несколько роутеров с IXP425 -а именно Netgear WG302 WAG302 WGR826v
16Mb Flash 32Mb Ram
Хотелось бы закомпилировать ядро и GPL сорсы чтобы воспроизвести firmware и возможно добавить
туда свои два цента- например драйвер 802.11n и карточку в mini PCI слот
или драйвер WiMax и тд
На Netgear лежат GPL исходники ядра и приложений
например здесь
http://ftp.gpl-devices.org/pub/vendors/Netgear/WG302/

Внизу последовательности компилляции описанная каким то корейцем
Нужен DevKit Montavista для ARM/Xscale "xscale_be-gcc"
-------------------------------------------------
который был общедоступным несколько лет назад
но потом пропал со всех сайтов
Вдруг у кого есть и может поделиться - а может кто собирал ядро
другим тулчейном и может уверенно сказать что заработает
---------------------
Может кому будет интересно проучаствовать :-)

Несколько лет назад скачивал этот DevKit Montavista для ARM/Xscale. Мучался с ним недели две. Он все время чего-то не находил, то в путях к себе, то в путях интеловского софта (AccLib). Потом собрал дня за три свой тулчейн. Netgear не пробовал, собирал с нуля ядро и busybox. Продукт на базе IXP425 вроде как производится до сих пор, но я сменил работу, и материалов у меня не осталось.

Есть собранный gcc могу поделится.
Код
$ armeb-unknown-linux-gnu-gcc -v
Using built-in specs.
Target: armeb-unknown-linux-gnu
Configured with: /home/amw/devel/ARM/arm-linux/tools/armeb-linux/targets/src/gcc-4.2.1/configure --build=x86_64-unknown-linux-gnu --target=armeb-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --prefix=/usr/local/arm/armeb-linux --with-sysroot=/usr/local/arm/armeb-linux/armeb-unknown-linux-gnu/sys-root --enable-languages=c,c++ --with-cpu=xscale --with-tune=xscale --with-float=soft --enable-__cxa_atexit --disable-multilib --with-local-prefix=/usr/local/arm/armeb-linux/armeb-unknown-linux-gnu/sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --disable-nls --enable-cxx-flags=-msoft-float
Thread model: posix
gcc version 4.2.1

$ armeb-unknown-linux-gnu-as -v
GNU assembler version 2.18 (armeb-unknown-linux-gnu) using BFD version (GNU Binutils) 2.18

glibc-2.5

Собирал сам через crosstools-ng http://linux.softpedia.com/get/System/Shel...-NG-28833.shtml
Конфиги во вложении.
islavv
[/code]
Собирал сам через crosstools-ng http://linux.softpedia.com/get/System/Shel...-NG-28833.shtml
Конфиги во вложении.
[/quote]

Спасибо
Прочитал в инете много букв - глаза устали

Взял отсюда http://www.gnuarm.com/
GCC-3.4 toolchain
binutils-2.15.tar.bz2 [11.1MB]
gcc-3.4.3.tar.bz2 [25.9MB]
newlib-1.12.0.tar.gz [6.37MB]
insight-6.1.tar.bz2 [18.7MB]

Попробовал скомпилировать так как написано у
http://ftp.snapgear.org/pub/snapgear/tools...arm-linux-3.4.4
---------------------------------------------------------------------------------------
И заткнулся на этом пункте в скрипте $(ATTACHED t-linux file)

----------------------------------------------
3. gcc-3.4.4

tar xvzf gcc-3.4.4.tar.gz
cd gcc-3.4.4

cp $(ATTACHED t-linux file) gcc/config/arm/ //---------------------------<<<<<<
vi gcc/config/arm/linux-elf.h
-- remove line that defines LIBGCC_SPEC

mkdir arm-linux
cd arm-linux
../configure --target=arm-linux --disable-shared --disable-threads =\
--prefix=/usr/local --with-headers=linux-2.4.x/include \
--with-gnu-as --with-gnu-ld --enable-multilib --enable-languages=c
make
make install
-----------------------------------------------

На сайте www.gnuarm.com написана следующая последовательность компилляции

The following steps and configuration switches were used in the compilation process:
cd [binutils-build]
[binutils-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable-interwork --enable-multilib
make all install
export PATH="$PATH:[toolchain-prefix]/bin"
cd [gcc-build]
[gcc-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --with-headers=[newlib-source]/newlib/libc/include
make all-gcc install-gcc
...
подскажите что у меня должно быть в [toolchain-prefix] и [newlib-source]?
---------------------------------------------------------------------------
??
куда развернуть архивы - где стандартный корень кросс-компилляторов?

Спасибо

разобрался с одним пунктом - смотри ниже
хотя вопрос с местоположением каталогов и флагами для IPX425 открыт


---------------------------------------------------------------------------------------
И заткнулся на этом пункте в скрипте $(ATTACHED t-linux file)

----------------------------------------------
3. gcc-3.4.4

tar xvzf gcc-3.4.4.tar.gz
cd gcc-3.4.4

cp $(ATTACHED t-linux file) gcc/config/arm/ //---------------------------<<<<<<
vi gcc/config/arm/linux-elf.h
-- remove line that defines LIBGCC_SPEC
---------------------------------------------------

Нашел ответ автора скрипта :-)

Arun J wrote:
> while trying to make the toolchain, in the gcc part this command was
> encountered...
> ------------------------------------------------------------------
> cp $(ATTACHED t-linux file) gcc/config/arm/
> -----------------------------------------------------------------
> i am not understanding this command....
> what is this linux file???

This is not a file as such. That is my short hand way of writing
that you should go to the end of this README file and you will
see a set of lines delimited by a row of "----" characters.
Between these lines is the "ATTACHED t-linux file".

So yank those lines into a file named t-linux, and copy if over
the file currently at gcc/config/arm/t-linux.
......
Greg Ungerer -- Chief Software Dude
amw
Цитата(islavv @ Nov 14 2008, 06:27) *
[/code]
Собирал сам через crosstools-ng http://linux.softpedia.com/get/System/Shel...-NG-28833.shtml
Конфиги во вложении.
Спасибо
Прочитал в инете много букв - глаза устали

Собственно установите crosstools-ng и эти скрипты все собирут сами.
Исходники я брал с ftp.gnu.ort
Цитата
На сайте www.gnuarm.com написана следующая последовательность компилляции

The following steps and configuration switches were used in the compilation process:
cd [binutils-build]
[binutils-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable-interwork --enable-multilib
make all install
export PATH="$PATH:[toolchain-prefix]/bin"
cd [gcc-build]
[gcc-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --with-headers=[newlib-source]/newlib/libc/include
make all-gcc install-gcc
...
подскажите что у меня должно быть в [toolchain-prefix] и [newlib-source]?
---------------------------------------------------------------------------
??
куда развернуть архивы - где стандартный корень кросс-компилляторов?

Спасибо

разобрался с одним пунктом - смотри ниже
хотя вопрос с местоположением каталогов и флагами для IPX425 открыт

--prefix - каталог куда инсталлировать кроскомпилер. Например --prefix=/usr/local/arm. Тогда после инсталляции вы получите примерно такой набор каталогов
/usr/local/arm/bin - тут будут arm-linux-gcc и пр.
/usr/local/arm/lib - тут будут библиотеки компилера. и т.п.
/usr/local/arm/arm-linux/ - тут будут libc, ее недеры и т.п.
Ну всякие там /usr/local/arm/man и пр.

--with-headers=[newlib-source]/newlib/libc/include
Путь, где находятся распакованые исходники newlib.
S_agent
Воспользуйтесь билдрутом он Вам поможет достаточно быстро и легко собрать тулчейн и рутфс.
islavv
"Собирал сам через crosstools-ng http://linux.softpedia.com/get/System/Shel...833.shtml"
Потаращился и не воткнул что сделать надо
экранный интерфейс вижу - какие буквы туда втыкать не вьеду )))
заранее спасибо за компактный и грамотный howto
amw
Цитата(islavv @ Nov 19 2008, 04:34) *
"Собирал сам через crosstools-ng http://linux.softpedia.com/get/System/Shel...833.shtml"
Потаращился и не воткнул что сделать надо
экранный интерфейс вижу - какие буквы туда втыкать не вьеду )))
заранее спасибо за компактный и грамотный howto

1. Идем по ссылке. http://linux.softpedia.com/get/System/Shel...-NG-28833.shtml
2. Жмем на большую зеленую кнопку DOWNLOAD
3. Скачиваем http://ymorin.is-a-geek.org/download/cross...g-1.2.4.tar.bz2
4. Распаковываем.
Код
tar jxvf crosstool-ng-1.2.4.tar.bz2

5. Читаем crosstool-ng-1.2.4/README
6. Если хотим - инсталлируем, не хоти - не надо. Работает и так. Я предпочел инсталировать.
7.
Код
cd crosstool-ng-1.2.4
su
Password:
./configure --help
# Выбираем префикс по умолчанию. /usr/local/bin обычно уже в PATH.
./configure
omputing version string... 1.2.4
Checking '/bin/bash' is at least bash-3.0... 3.2.39(1)-release
Checking for 'make'... /usr/bin/make
Checking for 'gcc'... /usr/bin/gcc
Checking for 'awk'... /usr/bin/awk
Checking for 'sed'... /bin/sed
Checking for 'bison'... not found! bailing out...
# Хм... Не хватает bison для полного счастья. Инсталлируем его удобным Вам способом.
# В общем инсталлируем чего не хватает.
# Обращаем внимание, какой AWK в системе. В Debian по умолчанию идет mawk.
# Если у Вас так-же, заменяем его на gawk. Потому как mawk сильно урезан, и непригоден для сборки gcc
./configure
Computing version string... 1.2.4
Checking '/bin/bash' is at least bash-3.0... 3.2.39(1)-release
Checking for 'make'... /usr/bin/make
Checking for 'gcc'... /usr/bin/gcc
Checking for 'awk'... /usr/bin/awk
Checking for 'sed'... /bin/sed
Checking for 'bison'... /usr/bin/bison
Checking for 'flex'... /usr/bin/flex
Checking for 'makeinfo'... /usr/bin/makeinfo
Checking for 'automake'... /usr/bin/automake
Checking for 'libtool'... /usr/bin/libtool
Checking for 'patch'... /usr/bin/patch
Checking for 'tar'... /bin/tar
Checking for 'gzip'... /bin/gzip
Checking for 'bzip2'... /bin/bzip2
Building up Makefile... done

crosstool-NG configured as follows:
  PREFIX='/usr/local'
  BINDIR='/usr/local/bin'
  LIBDIR='/usr/local/lib/ct-ng-1.2.4'
  DOCDIR='/usr/local/share/doc/ct-ng-1.2.4'
  MANDIR='/usr/local/share/man/man1'
  CONTRIB=''
make install
  SED    'ct-ng'
  CHMOD  'ct-ng'
  SED    'docs/ct-ng.1'
  GZIP   'docs/ct-ng.1.gz'
  INST   'ct-ng'
  RMDIR  '/usr/local/lib/ct-ng-1.2.4/'
  MKDIR  '/usr/local/lib/ct-ng-1.2.4'
  INST   'arch/'
  INST   'config/'
  INST   'kconfig/'
  INST   'patches/'
  INST   'scripts/'
  INST   'tools/'
  INST   'steps.mk'
  INST   'samples/'
  MKDIR  '/usr/local/share/doc/ct-ng-1.2.4'
  INST   'docs/CREDITS'
  INST   'docs/overview.txt'
  MKDIR  '/usr/local/share/man/man1'
  INST   'ct-ng.1.gz'

8. Папку crosstool-ng-1.2.4 можно удалить. Мы его уже инсталлировали. Но документацию лучше оставить, или найти, куда она проинсталировалась.
9. Создаем папку, например tools
10.
Код
cd tools
ct-ng menuconfig

11. Настраиваем, скачиваем, ложим архивы куда надо, настриваем, конфигурим ....... (пользуемся приложенным выше архивом)
12. Компилим
Код
ct-ng
This is crosstool-NG version 1.2.4

Copyright (C) 2008  Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
See below for a list of available actions, listed by category:

Configuration actions:
  config             - Update current config using a line-oriented program
  menuconfig         - Update current config using a menu based program
  oldconfig          - Update current config using a provided .config as base
  extractconfig      - Create a new config using options extracted from a
                       build log piped into stdin
  saveconfig         - Save current config as a preconfigured target

Preconfigured toolchains:
  list-samples       - prints the list of all samples (for scripting)
  show-<sample>      - show a brief overview of <sample> (list below)
  <sample>           - preconfigure crosstool-NG with <sample> (list below)
  alphaev56-unknown-linux-gnu        (g,X)
  arm-unknown-linux-gnueabi          (g,X)
  arm-unknown-linux-uclibc           (g,X)
  arm-unknown-linux-uclibcgnueabi    (g,X)
  armeb-unknown-linux-gnu            (g,X)
  armeb-unknown-linux-uclibc         (g,X)
  armeb-unknown-linux-uclibcgnueabi  (g,X)
  i586-geode-linux-uclibc            (g,X)
  i686-nptl-linux-gnu                (g,X)
  ia64-unknown-linux-gnu             (g,X)
  mips-unknown-linux-uclibc          (g,X)
  mipsel-unknown-linux-gnu           (g,X)
  powerpc-unknown-linux-uclibc       (g,X)
  x86_64-unknown-linux-uclibc        (g,X)
      l (local)       : sample was found in current directory
      g (global)      : sample was installed with crosstool-NG
      X (EXPERIMENTAL): sample may use EXPERIMENTAL features
      B (BORKEN)      : sample is currently broken

Build actions (#: force number of // jobs):
  build[.#]          - Build the toolchain
  list-steps         - List all build steps
  regtest[.#]        - Regtest-build all samples
  regtest-local[.#]  - Regtest-build all local samples
  regtest-global[.#] - Regtest-build all global samples

Clean actions:
  clean              - Remove generated files
  distclean          - Remove generated files, configuration and build directories

Distribution actions:
  wiki-samples       - Print a DokuWiki table of samples
  updatetools        - Update the config tools
  tarball            - Build a tarball of the configured toolchain

Environement variables (see /usr/local/share/doc/ct-ng-1.2.4/overview.txt):
  STOP               - Stop the build just after this step
  RESTART            - Restart the build just before this step

Execute "/usr/local/bin/ct-ng config" or "/usr/local/bin/ct-ng menuconfig" to configure crosstool-NG
Execute "/usr/local/bin/ct-ng build" to build your toolchain
Execute "/usr/local/bin/ct-ng version" to see the version
See "man 1 ct-ng" for some help as well

Выбираем нужное.......

ct-ng - это Makefile.
islavv
Цитата(amw @ Nov 19 2008, 10:50) *
ct-ng - это Makefile.

Спасибо - се-ng установился
вот теперь самое интересное
как и где указать что надо сделать toolchain для IXP425 в Big endian mode и куда положит исходники gcc glib и тд
в сt-ng куча страниц и опций
amw
Цитата(islavv @ Nov 20 2008, 06:43) *
Спасибо - се-ng установился
вот теперь самое интересное
как и где указать что надо сделать toolchain для IXP425 в Big endian mode и куда положит исходники gcc glib и тд
в сt-ng куча страниц и опций

Документацию никто не отменял. Ее пишут чтобы читали потом те, кому не понятно.
В посте #2 я прикладывал архив с конфигами.
Там даже README есть.
В соответствии с ним Ваш вариант:
Код
cd armeb-linux
ct-ng
Andy Sm.
Вот ядро linux 2.4 какой то от mv, fs и toolchain для NAS FNS-1000 от level one.
Эта штука сделана на ixp425 32 ram 8 rom.
Компилируется и работает на данном девайсе.
Инструкция и там прилагается.
Единственный затык при сборке - не хватает размера initrd...
надо творчески почикать лишнее. (либо файлы либо debug info местами в библиотеках и модулях)

http://download.level1.com/level1/gpl/FNS-..._2006-01-18.zip
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.