#---------------------------------------------------------- # zuerst toolchain zum Bauen des Redboot bauen # http://ecos.sourceware.org/build-toolchain.html mkdir -p ~/tmp/ecos cd ~/tmp/ecos wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2 wget ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.6/gcc-core-3.3.6.tar.bz2 wget ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.6/gcc-g++-3.3.6.tar.bz2 wget ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2 wget ftp://ftp.planetmirror.com/pub/sourceware/newlib/newlib-1.15.0.tar.gz # wget http://ecos.sourceware.org/binutils-2.13.1-v850-hashtable.patch # wget http://ecos.sourceware.org/gcc-3.2.1-arm-multilib.patch # wget http://ecos.sourceware.org/insight-5.3-tcl_win_encoding.patch mkdir src cd src tar -xjf ../binutils-2.18.tar.bz2 tar -xjf ../gcc-core-3.3.6.tar.bz2 tar -xjf ../gcc-g++-3.3.6.tar.bz2 tar -xzf ../newlib-1.15.0.tar.gz cd newlib-1.15.0 mv newlib libgloss ../gcc-3.3.6/ cd .. tar -xjf ../gdb-6.6.tar.bz2 # patch -p0 < ../binutils-2.13.1-v850-hashtable.patch # patch -p0 < ../gcc-3.2.1-arm-multilib.patch # patch -p0 < ../insight-5.3-tcl_win_encoding.patch cd .. mkdir -p ~/tmp/gnutools mkdir build cd build mkdir binutils cd binutils ../../src/binutils-2.18/configure --target=i386-elf \ --prefix=$HOME/tmp/gnutools -v 2>&1 | tee configure.out make -w all install 2>&1 | tee make.out cd .. mkdir gcc cd gcc PATH=~/tmp/gnutools/bin:$PATH ; export PATH ../../src/gcc-3.3.6/configure --target=i386-elf \ --prefix=$HOME/tmp/gnutools --enable-languages=c,c++ \ --with-gnu-as --with-gnu-ld --with-newlib \ --with-gxx-include-dir=$HOME/tmp/gnutools/i386-elf/include \ -v 2>&1 | tee configure.out make -w all install 2>&1 | tee make.out cd .. mkdir gdb cd gdb ../../src/gdb-6.6/configure --target=i386-elf \ --prefix=$HOME/tmp/gnutools -v 2>&1 | tee configure.out make -w all install 2>&1 | tee make.out cd .. cd .. #---------------------------------------------------------- # jetzt Redboot bauen # download ecos-2.0 as written here: # http://ecos.sourceware.org/getstart.html # oder: tar -xjf ecos-2.0.tar.bz2 # get packages needed for MGB100 wget http://www.tintuc.de/linux/tipps/mgb100/src/redboot/r6040.epk # also download all the patches from this directory #---------------------------------------------------------- # jetzt die tools bauen (oder die vorhandenen binaries nehmen, falls # man auf einem x86 System arbeitet) # we are here: ~/tmp/ecos cd ecos-2.0/tools/ mkdir build cd build ../src/configure --prefix=~/tmp/ecos/ecos-2.0/tools make make install cd ../../.. #---------------------------------------------------------- # environment setzen ECOS_REPOSITORY=~/tmp/ecos/ecos-2.0/packages ; export ECOS_REPOSITORY PATH=~/tmp/ecos/ecos-2.0/tools/bin:$PATH ; export PATH PATH=~/tmp/gnutools/bin:$PATH ; export PATH cd ecos-2.0/packages # tclsh ecosadmin.tcl list tclsh ecosadmin.tcl add ../../r6040.epk cd .. # jetzt patchen (in dieser Reihenfolge!) patch -p1 < ../ecos-rdc-r6040.patch patch -p1 < ../ecos-linux-exec-ian-campbell.patch patch -p1 < ../ecos-linux-exec-rdc.patch patch -p1 < ../ecos-linux-exec-rdc2.patch patch -p1 < ../ecos-rdc.patch patch -p1 < ../ecos-flash.patch patch -p1 < ../ecos-main-mgb100.patch patch -p1 < ../ecos-set-mac-mgb100.patch patch -p1 < ../ecos-flash-hdr.patch cd .. mkdir redboot cd redboot ecosconfig new pc redboot # ecosconfig import \ # ~/tmp/ecos/ecos-2.0/packages/hal/i386/pc/v2_0/misc/redboot_ROM.ecm ecosconfig remove pc_etherpro ecosconfig remove i82559_eth_driver ecosconfig add CYGPKG_DEVS_ETH_I386_PC_R6040 ecosconfig add CYGPKG_DEVS_ETH_RDC_R6040 ecosconfig add CYGPKG_IO_ETH_DRIVERS ecosconfig add CYGPKG_MEMALLOC ecosconfig add CYGPKG_LIBC vi ecos.ecc -> cdl_component CYG_HAL_STARTUP: user_value ROM -> cdl_option CYGSEM_HAL_ROM_MONITOR: user_value 1 -> cdl_component CYGPKG_HAL_I386_PCMB_MEMSIZE: user_value HARDCODE -> cdl_option CYGNUM_HAL_I386_PCMB_MEMSIZE_EXTENDED: user_value 0x01F00000 -> cdl_component CYGHWR_HAL_I386_FPU: user_value 0 -> cdl_option CYGSEM_REDBOOT_DEFAULT_NO_BOOTP: user_value 1 -> cdl_option CYGPKG_REDBOOT_ANY_CONSOLE: user_value 0 -> cdl_component CYGPKG_REDBOOT_DISK: user_value 0 -> cdl_component CYGSEM_REDBOOT_DISK_IDE: user_value 0 -> cdl_component CYGSEM_REDBOOT_DISK_EXT2FS: user_value 0 -> cdl_component CYGDAT_REDBOOT_DEFAULT_IP_ADDR: user_value 1 "192, 168, 123, 254" -> cdl_component CYGDAT_REDBOOT_DEFAULT_GATEWAY_IP_ADDR: user_value 1 "192, 168, 123, 1" -> cdl_component CYGDAT_REDBOOT_DEFAULT_IP_ADDR_MASK: user_value 1 "255, 255, 255, 0" # oder einfach diese config nehmen: wget http://www.tintuc.de/linux/tipps/mgb100/src/redboot/ecos.ecc ecosconfig check ecosconfig resolve ecosconfig tree # jetzt noch die fehlenden Files im redboot (tree) z.B. r8610.h cp ../r8610.h install/include/pkgconf/ cp ../spi.h install/include/pkgconf/ make # make 2 images to flash redboot (if you have a kernel loaded # which already has appropriate maps, -> cat /proc/mtd ) # ----------------------------------------------------------- dd if=install/bin/redboot.bin of=../redboot1.img \ bs=16 skip=0 count=6144 dd if=install/bin/redboot.bin of=../redboot2.img \ bs=16 skip=6656 count=1536 # transfer both files to MGB100 and flash # Redboot (low part) fcp -v redboot1.img /dev/mtd4 # Redboot (high part) fcp -v redboot2.img /dev/mtd6 # OR # == # make upgrade.bin to flash with orig. FW # --------------------------------------- dd if=install/bin/redboot.bin of=../redboot1.img \ bs=16 skip=1 count=6143 dd if=install/bin/redboot.bin of=../redboot2.img \ bs=16 skip=6657 count=1535 cd .. makeamitbin -o redboot.bin redbootlow redboot1.img redboothigh redboot2.img # flash redboot.bin using orig. firmware's web interface # too lazy to build redboot yourself? # use precompiled Redboot # ----------------------------------- wget http://www.tintuc.de/linux/tipps/mgb100/binaries/redboot1.img wget http://www.tintuc.de/linux/tipps/mgb100/binaries/redboot2.img # to make an upgrade file for Redboot on LevelOne makeamitbin -o redboot.bin redbootlow redboot1.img redboothigh redboot2.img # to build Redboot for other vendors, use '-1' option to call makeamitbin