Updated setup script, added file that can be sourced that sets up the path properly and improved upload
This commit is contained in:
parent
26d9836d4e
commit
fabdc4e8ce
9
.gitignore
vendored
9
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
|||
arm-none-eabi-gcc
|
||||
arm-none-eabi/*
|
||||
microblazeel-xilinx-elf/*
|
||||
env/*
|
||||
sdcc-code/*
|
||||
|
||||
disk.img
|
||||
env
|
||||
sdcc-code
|
||||
zasm
|
||||
|
|
|
@ -4,6 +4,7 @@ import os
|
|||
import sys
|
||||
import time
|
||||
import argparse
|
||||
import math
|
||||
|
||||
def progressbar(it, prefix="", size=60, file=sys.stdout):
|
||||
count = len(it)
|
||||
|
@ -51,12 +52,16 @@ def rom_upload(filename):
|
|||
else:
|
||||
print("Failed to open serial port")
|
||||
|
||||
def serial_upload(filename):
|
||||
def bload_upload(filename):
|
||||
# ser = serial.Serial("COM3", timeout=1, write_timeout=1)
|
||||
ser = serial.Serial("/dev/ttyUSB0", timeout=1, write_timeout=1, baudrate=115200)
|
||||
if ser.is_open:
|
||||
size = os.path.getsize(filename)
|
||||
|
||||
print("Size: {} ({} pages)".format(size, math.ceil(size/256)))
|
||||
|
||||
input("Press enter to start upload")
|
||||
|
||||
with open(filename, "rb") as f:
|
||||
for i in progressbar(range(size), "Upload: ", 40):
|
||||
byte = f.read(1)
|
||||
|
@ -79,18 +84,17 @@ def main():
|
|||
parser = argparse.ArgumentParser(description="Upload binaries to the z80 computer.")
|
||||
parser.add_argument("filename", help="file to upload")
|
||||
parser.add_argument("--rom", dest="rom", action="store_const", const=True, default=False, help="Upload binary to rom")
|
||||
parser.add_argument("--serial", dest="serial", action="store_const", const=True, default=False, help="Upload binary over serial")
|
||||
parser.add_argument("--bload", dest="bload", action="store_const", const=True, default=False, help="Upload binary to bload")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if (args.rom):
|
||||
rom_upload(args.filename)
|
||||
elif (args.serial):
|
||||
serial_upload(args.filename)
|
||||
elif (args.bload):
|
||||
bload_upload(args.filename)
|
||||
else:
|
||||
print("You needs to specify a target")
|
||||
|
||||
|
||||
|
||||
if "__main__":
|
||||
main()
|
157
build-mb.sh
Executable file
157
build-mb.sh
Executable file
|
@ -0,0 +1,157 @@
|
|||
#!/bin/bash
|
||||
##
|
||||
# Script to build GCC for microblaze.
|
||||
# Written by Martijn Koedam (m.l.p.j.koedam@tue.nl)
|
||||
# Modified by Foivos S. Zakkak (foivos@zakkak.net)
|
||||
#
|
||||
# Current version is tested on Archlinux
|
||||
##
|
||||
|
||||
TARGET=microblazeel-xilinx-elf
|
||||
PROGRAM_PREFIX=mb-
|
||||
|
||||
BUILD_DIR=build-mb
|
||||
CUR=$(pwd)
|
||||
INSTALL_DIR=$CUR/$TARGET
|
||||
|
||||
CORES=12
|
||||
|
||||
GCC_URL=ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.xz
|
||||
NEWLIB_URL=ftp://sources.redhat.com/pub/newlib/newlib-3.1.0.tar.gz
|
||||
BINUTILS_URL=http://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.xz
|
||||
|
||||
GCC_FILE=$(basename $GCC_URL)
|
||||
NEWLIB_FILE=$(basename $NEWLIB_URL)
|
||||
BINUTILS_FILE=$(basename $BINUTILS_URL)
|
||||
|
||||
GCC=${GCC_FILE%.tar.*}
|
||||
BINUTILS=${BINUTILS_FILE%.tar.*}
|
||||
NEWLIB=${NEWLIB_FILE%.tar.*}
|
||||
|
||||
# Explicitly define the PATH to avoid ambiguities. Especially '.'
|
||||
# should not be present in PATH.
|
||||
export PATH=/usr/local/bin:/usr/bin:/bin
|
||||
|
||||
# target
|
||||
# needed for newlib, because of non-standard PROGRAM_PREFIX.
|
||||
export CC_FOR_TARGET="$PROGRAM_PREFIX"gcc
|
||||
export CXX_FOR_TARGET="$PROGRAM_PREFIX"g++
|
||||
export GCC_FOR_TARGET="$PROGRAM_PREFIX"gcc
|
||||
export AR_FOR_TARGET="$PROGRAM_PREFIX"ar
|
||||
export AS_FOR_TARGET="$PROGRAM_PREFIX"as
|
||||
export LD_FOR_TARGET="$PROGRAM_PREFIX"ld
|
||||
export NM_FOR_TARGET="$PROGRAM_PREFIX"nm
|
||||
export RANLIB_FOR_TARGET="$PROGRAM_PREFIX"ranlib
|
||||
export STRIP_FOR_TARGET="$PROGRAM_PREFIX"strip
|
||||
|
||||
|
||||
function download()
|
||||
{
|
||||
if [ ! -f $1 ]
|
||||
then
|
||||
wget -O $1 $2
|
||||
else
|
||||
echo "$1 exists"
|
||||
fi
|
||||
}
|
||||
|
||||
function extract()
|
||||
{
|
||||
if [ ! -d "$BUILD_DIR/$2" ]
|
||||
then
|
||||
tar xf $1 -C $BUILD_DIR
|
||||
fi
|
||||
|
||||
if [ ! -d "$BUILD_DIR/$2" ]
|
||||
then
|
||||
echo "Failed to extract $2 to $1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function build()
|
||||
{
|
||||
pushd $BUILD_DIR
|
||||
pushd $1
|
||||
|
||||
if [ ! -d "build" ]
|
||||
then
|
||||
mkdir "build"
|
||||
pushd "build"
|
||||
else
|
||||
pushd "build"
|
||||
make distclean
|
||||
fi
|
||||
|
||||
../configure --target=$TARGET --program-prefix=$PROGRAM_PREFIX --prefix=$INSTALL_DIR $2
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo "Failed to configure"
|
||||
exit 1;
|
||||
fi
|
||||
env
|
||||
make -j"$CORES" all$3
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo "Failed to build"
|
||||
exit 1;
|
||||
fi
|
||||
env "PATH=$PATH" make install$3
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo "Failed to install"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
popd
|
||||
popd
|
||||
popd
|
||||
}
|
||||
|
||||
function gcc_dependencies()
|
||||
{
|
||||
|
||||
pushd $BUILD_DIR
|
||||
pushd $1
|
||||
./contrib/download_prerequisites
|
||||
popd
|
||||
popd
|
||||
}
|
||||
|
||||
if [ ! -d $BUILD_DIR ]
|
||||
then
|
||||
mkdir $BUILD_DIR
|
||||
fi
|
||||
|
||||
#download files.
|
||||
echo "Downloading"
|
||||
download "$GCC_FILE" "$GCC_URL"
|
||||
download "$NEWLIB_FILE" "$NEWLIB_URL"
|
||||
download "$BINUTILS_FILE" "$BINUTILS_URL"
|
||||
|
||||
echo "Building binutils"
|
||||
extract "$BINUTILS_FILE" "$BINUTILS"
|
||||
build $BINUTILS "" ""
|
||||
|
||||
# put results into PATH.
|
||||
export PATH=$INSTALL_DIR/bin/:$PATH
|
||||
|
||||
echo "Building gcc-stage1"
|
||||
extract "$GCC_FILE" "$GCC"
|
||||
gcc_dependencies "$GCC"
|
||||
build $GCC "--enable-languages=c --disable-nls --without-headers --disable-multilib --disable-libssp --with-newlib" "-host"
|
||||
|
||||
echo "Building newlib"
|
||||
extract "$NEWLIB_FILE" "$NEWLIB"
|
||||
build $NEWLIB "" ""
|
||||
|
||||
|
||||
echo "Building gcc,g++ stage2"
|
||||
extract "$GCC_FILE" "$GCC"
|
||||
build $GCC "--enable-languages=c,c++ --disable-nls --without-headers --disable-multilib --disable-libssp --with-newlib" ""
|
||||
|
||||
# Remove leftover files
|
||||
rm gcc-10.2.0.tar.xz
|
||||
rm binutils-2.35.tar.xz
|
||||
rm newlib-3.1.0.tar.gz
|
||||
rm -rf build-mb
|
15
setup.sh
15
setup.sh
|
@ -1,10 +1,17 @@
|
|||
#!/bin/bash
|
||||
# @todo Check if all the required programs are installed
|
||||
|
||||
wget https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v9.2.1-1.1/xpack-arm-none-eabi-gcc-9.2.1-1.1-linux-x64.tar.gz -O arm-none-eabi-gcc.tar.gz
|
||||
tar xvf arm-none-eabi-gcc.tar.gz
|
||||
mv xpack-arm-none-eabi-gcc-9.2.1-1.1 arm-none-eabi-gcc
|
||||
rm arm-none-eabi-gcc.tar.gz
|
||||
# Cleanup old files
|
||||
rm -rf arm-none-eabi
|
||||
rm -rf env
|
||||
rm -rf sdcc-code
|
||||
|
||||
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 -O arm-none-eabi-gcc.tar.bz2
|
||||
tar xvf arm-none-eabi-gcc.tar.bz2
|
||||
mv gcc-arm-none-eabi-9-2020-q2-update arm-none-eabi
|
||||
rm arm-none-eabi-gcc.tar.bz2
|
||||
|
||||
./build-mb.sh
|
||||
|
||||
svn checkout svn://svn.code.sf.net/p/sdcc/code/trunk sdcc-code
|
||||
|
||||
|
|
3
source.sh
Normal file
3
source.sh
Normal file
|
@ -0,0 +1,3 @@
|
|||
# This order makes it so we can use deactive to also deactive the other additions to the path
|
||||
source $(dirname $(readlink -f $0))/env/bin/activate
|
||||
PATH=$(dirname $(readlink -f $0))/arm-none-eabi/bin:$(dirname $(readlink -f $0))/microblazeel-xilinx-elf/bin:$(dirname $(readlink -f $0))/bin:/opt/Xilinx/14.7/ISE_DS/EDK/bin/lin64:$PATH
|
Loading…
Reference in New Issue
Block a user