| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- #! /bin/sh
- if [ "x`uname`" != "xLinux" ]; then
- if [ "x`uname`" != "xFreeBSD" ]; then
- if [ "x`uname`" != "xDarwin" ]; then
- if [ "x`uname -o`" != "xCygwin" ]; then
- echo "This is not a Cygwin, FreeBSD, Linux or Mac OS X system."
- echo "I'm so confused!"
- exit 1
- fi
- fi
- fi
- fi
- # Ask user which device to target
- unset HWDEF
- unset DEV
- while [ "x$DEV" = "x" ]
- do
- echo "Select a target device:"
- echo ""
- echo " 1) Atmel ATmega128"
- echo " 2) Atmel ATmega103"
- echo " 3) Atmel AT90CAN128"
- echo " 4) Renesas H8/3068F"
- echo " 5) UNIX Emulation"
- # echo " 6) Renesas H8/3069F" # just an example
- # echo " 7) Renesas H8S/2676F" # just an example
- # echo " 8) OKI ML67Q5003" # just an example
- echo " a) Atmel AT91R40008"
- echo " b) Atmel AT91SAM7X(C)256"
- echo " c) Atmel AT91SAM9260"
- echo ""
- echo -n "Selection -> "
- read answ
- case "$answ" in
- 1) DEV=atmega128; ARCH=avr; CPU=m128 ;;
- 2) DEV=atmega103; ARCH=avr; CPU=m103 ;;
- 3) DEV=at90can128; ARCH=avr; CPU=c128; HWDEF="-DMCU_AT90CAN128 -DNUTMEM_STACKHEAP=4096" ;;
- 4) DEV=H8/3068F; ARCH=h8300h ;;
- 5) DEV=mac; ARCH=unix ;;
- # 6) DEV=H8/3069F; ARCH=h8300h ;; # just an example
- # 7) DEV=H8S/2676F; ARCH=h8300s ;; # just an example
- # 8) DEV=ML67Q5003; ARCH=arm ;; # just an example
- a) DEV=AT91R40008; ARCH=arm; CPU=arm7tdmi ;;
- b) DEV=AT91SAM7X256; ARCH=arm; CPU=arm7tdmi ;;
- c) DEV=AT91SAM9260; ARCH=arm; CPU=arm9 ;;
- *)
- echo "invalid choice" ;;
- esac
- done
- # Set up environment for AVR microcontrollers
- if [ "$ARCH" = "avr" ]; then
- # Verify that avr-gcc is in the users PATH
- if ! avr-gcc --version >/dev/null 2>&1
- then
- echo "Can't find avr-gcc. :-("
- echo ""
- echo "This could mean either of the following:"
- echo " 1: You don't have avr-gcc installed."
- echo " 2: You don't have your PATH environment variable set right."
- echo "Here is your PATH variable:"
- echo ""
- echo $PATH
- echo ""
- exit 1
- fi
- # Make links to included make fragments
- ln -s -f Makedefs.avr-gcc Makedefs
- ln -s -f Makerules.avr-gcc Makerules
- ln -s -f Makedefs.avr-gcc app/Makedefs
- ln -s -f Makerules.avr-gcc app/Makerules
- # Ask which target board is being used
- unset PLATFORM
- while [ "x$PLATFORM" = "x" ]
- do
- echo "Do you use a standard Ethernut board?"
- echo ""
- echo " 0) No standard"
- echo " 1) Ethernut 1 (10 Mbit Realtek RTL8019AS)"
- echo " 2) Ethernut 2 (10/100 Mbit SMSC LAN91C111)"
- echo ""
- echo -n "Selection -> "
- read answ
-
- case "$answ" in
- 0) ;;
- 1) PLATFORM=ETHERNUT1 ;;
- 2) PLATFORM=ETHERNUT2 ;;
- *)
- echo "invalid choice" ;;
- esac
- done
- # Ask which crystal is being used
- unset CRYSTAL
- while [ "x$CLOCKSEL" = "x" ]
- do
- echo "Do you want to set a fixed cpu clock?"
- echo ""
- echo " 1) don't set clock"
- echo " 2) 7.3728 Mhz"
- echo " 3) 8.0000 Mhz"
- echo " 4) 12.0000 Mhz"
- echo " 5) 14.7456 Mhz"
- echo " 6) 16.0000 Mhz"
- echo ""
- echo -n "Selection -> "
- read answ
-
- case "$answ" in
- 1) CLOCKSEL=1 ;;
- 2) CLOCKSEL=2 ; CLOCK=-DNUT_CPU_FREQ=7372800 ;;
- 3) CLOCKSEL=3 ; CLOCK=-DNUT_CPU_FREQ=8000000 ;;
- 4) CLOCKSEL=4 ; CLOCK=-DNUT_CPU_FREQ=12000000 ;;
- 5) CLOCKSEL=5 ; CLOCK=-DNUT_CPU_FREQ=14745600 ;;
- 6) CLOCKSEL=6 ; CLOCK=-DNUT_CPU_FREQ=16000000 ;;
- *)
- echo "invalid choice" ;;
- esac
- done
- # Ask which isp programmer is being used
- unset UISP_PROG
- while [ "x$UISP_PROG" = "x" ]
- do
- echo "Which isp programmer are you using?"
- echo ""
- echo " 1) stk200, stk300 or compatible"
- echo " 2) skt500"
- echo " 3) usbasp"
- echo ""
- echo -n "Selection -> "
- read answ
- case "$answ" in
- 1) UISP_PROG=stk200 ;;
- 2) UISP_PROG=stk500 ;;
- 3) UISP_PROG=usbasp ;;
- *)
- echo "invalid choice" ;;
- esac
- done
- unset PROGRAMMER
- while [ "x$PROGRAMMER" = "x" ]
- do
- echo "Which programming software are you using?"
- echo ""
- echo " 1) uisp"
- echo " 2) avrdude"
- echo " 9) mine is not listed here"
- echo ""
- echo -n "Selection -> "
- read answ
-
- case "$answ" in
- 1) PROGRAMMER=usip ; BURNFLAGS="-dprog=$UISP_PROG --erase --upload --verify if=\$(TARG)" ;;
- 2) PROGRAMMER=avrdude
- if [ "$UISP_PROG" = "usbasp" ]; then
- BURNFLAGS="-p $CPU -c $UISP_PROG -U flash:w:\$(TARG)"
- else
- BURNFLAGS="-p $CPU -c $UISP_PROG -U flash:w:\$(TARG) -E noreset"
- fi
- ;;
- 9) PROGRAMMER="echo" ; BURNFLAGS="See UserConf.mk" ;;
- *)
- echo "invalid choice" ;;
- esac
- done
- # Generate the config file
- cat <<EOF > UserConf.mk
- PLATFORM=$PLATFORM
- MCU=$DEV
- ARCH=$ARCH
- HWDEF=-D__HARVARD_ARCH__ $CLOCK -D\$(PLATFORM) $HWDEF
- BURN=$PROGRAMMER
- BURNFLAGS=$BURNFLAGS
- CRUROM=crurom
- EOF
- echo "Your system is now configured to build for $DEV."
- echo "Change to subdirectory lib and type \`make clean\` "
- echo "and \`make install\` to build the system."
- exit 0
- fi
- # Set up environment for H8/300H and H8S microcontrollers
- if [ "$ARCH" = "h8300h" -o "$ARCH" = "h8300s" ]; then
- # Verify if h8300-elf-gcc is in the users PATH
- if ! h8300-elf-gcc --version >/dev/null 2>&1
- then
- echo "Can't find H8 gcc. :-("
- echo ""
- echo "This could mean either of the following:"
- echo " 1: You don't have H8 gcc installed. Go to http://www.kpitgnutools.com"
- echo " 2: You don't have your PATH environment variable set right."
- echo "Here is your PATH variable:"
- echo ""
- echo $PATH
- echo ""
- exit 1
- fi
- # Set up device dependant compiler flags
- if [ "$ARCH" = "h8300h" ]; then
- # flags for H8/300H micros
- MCUOPTS="-mh -mint32"
- else
- # flags for H8S micros
- MCUOPTS="-ms -mint32"
- fi
- # Setup paths to libc and libgcc for linker
- GCCVER=`h8300-elf-gcc --version|grep h8300-elf-gcc|cut -d ' ' -f 3`
- GCCDIR=`dirname \`which h8300-elf-gcc\``
- LIBGCCDIR="lib/gcc-lib/h8300-elf/$GCCVER/$ARCH/int32"
- LIBCDIR="h8300-elf/lib/$ARCH/int32"
- LDDIRS="-L $GCCDIR/../$LIBGCCDIR -L $GCCDIR/../$LIBCDIR"
- # Select whether code is to be executed from ROM or RAM
- CODEMEM="rom"
- unset RUNFLAG
- echo "Ethernut code can be run from RAM. This is useful when you are"
- echo "debugging your application. Remember that your hardware must"
- echo "have enough RAM to store data and program code."
- echo ""
- echo -n "Should Ethernut be executed from RAM (default=No)? Y(es)/N(o) "
- read answ
- if [ "$answ" = "y" -o "$answ" = "Y" ]; then
- RUNFLAG="-DTEXT_IN_RAM"
- CODEMEM="ram"
- fi
- echo ""
- # Choose appropriate linker script
- case "$DEV" in
- # H8/300H micros
- H8/3068F) LDSCRIPT=nut-h8-3068f-$CODEMEM.ld ;;
- H8/3069F) LDSCRIPT=nut-h8-3069f-$CODEMEM.ld ;; # just an example
- # H8S micros
- H8S/2676F) LDSCRIPT=nut-h8s-2676f-$CODEMEM.ld ;; # just an example
- esac
- # Make links to included make fragments
- ln -s -f Makedefs.h8-gcc Makedefs
- ln -s -f Makerules.h8-gcc Makerules
- ln -s -f Makedefs.h8-gcc app/Makedefs
- ln -s -f Makerules.h8-gcc app/Makerules
- # Generate config file
- cat <<EOF > UserConf.mk
- DEVICE=$DEV # for future use
- MCU=$ARCH
- ARCH=$ARCH
- MCUOPTS=$MCUOPTS
- RUNFLAG=$RUNFLAG
- LDSCRIPT=\$(top_srcdir)/arch/$ARCH/ldscripts/$LDSCRIPT
- LDDIRS=$LDDIRS
- BURN=h8write
- BURNFLAGS=-3068 \$(TARG)
- CRUROM = \$(top_srcdir)/tools/crurom/crurom
- EOF
- echo "Your system is now configured to build for $DEV."
- echo "Type \`make\` to build the system."
- exit 0
- fi
- # Set up environment for ARM microcontrollers ======================================================
- if [ "$ARCH" = "arm" ]; then
- # Verify if arm-elf-gcc is in the users PATH
- if ! arm-elf-gcc --version >/dev/null 2>&1
- then
- echo "Can't find ARM gcc. :-("
- echo ""
- echo "This could mean either of the following:"
- echo " 1: You don't have ARM GCC installed."
- echo " 2: You don't have your PATH environment variable set right."
- echo "Here is your PATH variable:"
- echo ""
- echo $PATH
- echo ""
- exit 1
- fi
- # Set up device dependant compiler flags
- # if [ "$ARCH" = "h8300h" ]; then
- # # flags for H8/300H micros
- # MCUOPTS="-mh -mint32"
- # else
- # # flags for H8S micros
- # MCUOPTS="-ms -mint32"
- # fi
- MCUOPTS="-mcpu=$CPU"
- # Setup paths to libc and libgcc for linker
- # GCCVER=`arm-elf-gcc --version|grep arm-elf-gcc|cut -d ' ' -f 3`
- # GCCDIR=`dirname \`which arm-elf-gcc\``
- # LIBGCCDIR="lib/gcc-lib/arm-elf/$GCCVER/$ARCH"
- # LIBCDIR="arm-elf/lib/$ARCH"
- # LDDIRS="-L $GCCDIR/../$LIBGCCDIR -L $GCCDIR/../$LIBCDIR"
- # Ask which target board is being used
- unset PLATFORM
- while [ "x$PLATFORM" = "x" ]
- do
- echo "Do you use a standard board?"
- echo ""
- echo " 0) No standard"
- if [ "$DEV" = "AT91R40008" ]; then
- echo " 1) Ethernut 3"
- fi
- if [ "$DEV" = "AT91SAM7X256" ]; then
- echo " 2) Atmel AT91SAM7X Evaluation Kit"
- fi
- if [ "$DEV" = "AT91SAM9260" ]; then
- echo " 3) Atmel AT91SAM9260 Evaluation Kit"
- fi
- echo ""
- echo -n "Selection -> "
- read answ
- case "$answ" in
- 0) ;;
- 1) PLATFORM=ETHERNUT3 ;;
- 2) PLATFORM=AT91SAM7X_EK ;;
- 3) PLATFORM=AT91SAM9260_EK ;;
- *)
- echo "invalid choice" ;;
- esac
- done
- # Select linker script
- if [ "$DEV" = "AT91SAM7X256" ]; then
- LDNAME="at91sam7x256_rom"
- else
- echo "Nut/OS can be run from RAM. This is useful when you are"
- echo "using a TFTP bootloader or debugging your application."
- echo "Remember that your hardware must have enough RAM"
- echo "to store data and program code."
- echo ""
- echo -n "Should Nut/OS be executed from RAM (default=Yes)? Y(es)/N(o) "
- read answ
- if [ "$answ" = "n" -o "$answ" = "N" ]; then
- if [ "$DEV" = "AT91SAM9260" ]; then
- LDNAME="at91sam9260_ram"
- else
- LDNAME="at91_boot"
- fi
- else
- if [ "$DEV" = "AT91SAM9260" ]; then
- LDNAME="at91sam9260_ram"
- else
- LDNAME="at91_ram"
- fi
- fi
- fi
- echo ""
- # Make links to included make fragments
- ln -s -f Makedefs.arm-gcc Makedefs
- ln -s -f Makerules.arm-gcc Makerules
- ln -s -f Makedefs.arm-gcc app/Makedefs
- ln -s -f Makerules.arm-gcc app/Makerules
- # Generate config file
- cat <<EOF > UserConf.mk
- PLATFORM=$PLATFORM
- HWDEF+=-D\$(PLATFORM)
- DEVICE=$DEV
- MCU=$CPU
- ARCH=$ARCH
- MCUOPTS=$MCUOPTS
- RUNFLAG=$RUNFLAG
- LDNAME=$LDNAME
- LDSCRIPT=\$(top_srcdir)/arch/arm/ldscripts/\$(LDNAME).ld
- #LDDIRS=$LDDIRS
- #BURN=jtagomat
- #BURNFLAGS=\$(TARG)
- CRUROM=crurom
- EOF
- echo "Your system is now configured to build for $DEV."
- echo "Change to subdirectory lib and type \`make clean\` "
- echo "and \`make install\` to build the system."
- exit 0
- fi
- if [ "$ARCH" = "unix" ]; then
- # Verify that gcc is in the users PATH
- if ! gcc --version >/dev/null 2>&1
- then
- echo "Can't find gcc. :-("
- echo ""
- echo "This could mean either of the following:"
- echo " 1: You don't have gcc installed."
- echo " 2: You don't have your PATH environment variable set right."
- echo "Here is your PATH variable:"
- echo ""
- echo $PATH
- echo ""
- exit 1
- fi
- # Make links to included make fragments
- ln -s -f Makedefs.unix-gcc Makedefs
- ln -s -f Makerules.unix-gcc Makerules
- ln -s -f Makedefs.unix-gcc app/Makedefs
- ln -s -f Makerules.unix-gcc app/Makerules
- # Generate the config file
- cat <<EOF > UserConf.mk
- CRUROM = \$(top_srcdir)/tools/crurom/crurom
- ARCH=$ARCH
- MCU=$ARCH
- EOF
- # Get system include paths for stdio.h, errno.h, sys/types.h, fcntl.h
- echo "#include <stdio.h>" > include_test.c
- echo "#include <fcntl.h>" >> include_test.c
- echo "#include <errno.h>" >> include_test.c
- echo "#include <unistd.h>" >> include_test.c
- echo "#include <netdb.h>" >> include_test.c
- echo "#include <netinet/in.h>" >> include_test.c
- echo "#include <sys/types.h>" >> include_test.c
- echo "#include <sys/socket.h>" >> include_test.c
- gcc -E include_test.c | grep stdio | head -1 | \
- sed 's/#....\(\/.*\/stdio.h\).*/#include "\1"/' > include/stdio_orig.h
- gcc -E include_test.c | grep unistd | head -1 | \
- sed 's/#....\(\/.*\/unistd.h\).*/#include "\1"/' > include/unistd_orig.h
- gcc -E include_test.c | grep fcntl | head -1 | \
- sed 's/#....\(\/.*\/fcntl.h\).*/#include "\1"/' > include/fcntl_orig.h
- gcc -E include_test.c | grep errno | head -1 | \
- sed 's/#....\(\/.*\/errno.h\).*/#include "\1"/' > include/errno_orig.h
- gcc -E include_test.c | grep "sys/types.h" | head -1 | \
- sed 's/#....\(\/.*\/sys\/types.h\).*/#include "\1"/' > include/sys/types_orig.h
- gcc -E include_test.c | grep "sys/socket" | head -1 | \
- sed 's/#....\(\/.*\/sys\/socket.h\).*/#include "\1"/' > include/sys/socket_orig.h
- gcc -E include_test.c | grep netdb | head -1 | \
- sed 's/#....\(\/.*\/netdb.h\).*/#include "\1"/' > include/netdb_orig.h
- gcc -E include_test.c | grep "netinet/in" | head -1 | \
- sed 's/#....\(\/.*\/netinet\/in.h\).*/#include "\1"/' > include/netinet/in_orig.h
- rm include_test.c
- # assert lib dirs
- mkdir -p lib/gcc/$ARCH
- # ready
- echo "Your system is now configured to build for your native system."
- echo "Change to lib and type \`make\` to build the system."
- exit 0
- fi
|