Skip to content

Instantly share code, notes, and snippets.

@LeviticusMB
Created April 19, 2017 20:28
Show Gist options
  • Save LeviticusMB/a5994493af3b6ebd3e924a2d5e82d1d6 to your computer and use it in GitHub Desktop.
Save LeviticusMB/a5994493af3b6ebd3e924a2d5e82d1d6 to your computer and use it in GitHub Desktop.
Rebuilding the 1541 Ultimate 2 binaries

Rebuilding the 1541 Ultimate 2 binaries

  1. Use VirtualBox to create a fresh CentOS 6 x86_64 VM.

    • 4 GB RAM
    • 64 GB HDD (I'm not kidding!)
    • Boot from CentOS-6.9-x86_64-netinstall.iso.
    • Chose a mirror from https://www.centos.org/download/mirrors/ and select install from URL in the installer. (Add 6/os/x86_64/ to one of the location URLs from that page to get the installation URL). For example: http://ftp.lysator.liu.se/pub/CentOS/6/os/x86_64/.
    • Use the Software Development Workstation package preset.
  2. Add 32-bit binary support (the Xilinx tools need this):

    $ yum install glibc.i686 zlib.i686
  3. Download and install ISE Design Suite - 14.7 Full Product Installation using the Full Installer for Linux link from https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html.

    Then make it available globally (without messing up you LD_LIBRARY_PATH):

    $ cat << 'EOF' >> /etc/profile.d/vhdl.sh
    # Xilinx
    tmp="$LD_LIBRARY_PATH"
    source /opt/Xilinx/14.7/ISE_DS/settings64.sh > /dev/null
    export LD_LIBRARY_PATH="$tmp"
    unset tmp
    EOF

    Note: After I completed the installation and this guide, I learned that ISE 14.x is buggy and should be avoided. Consider downloading ISE 13.x instead, if you plan to build firmware for the Ultimate 2 cartridge. Hopefully, the steps below applies to ISE 13.x as well. The Ultimate 2 Plus uses an Altera FPGA and should thus not be affected by any ISE bugs.

  4. While waiting for the Xilinx download to finish, download and install the Altera software Quartus Prime Lite Edition 16.1 from http://dl.altera.com/16.1/?edition=lite&platform=linux&download_manager=direct.

    I placed mine next to the Xilinx software, in /opt/intelFPGA_lite/16.1/.

    The installation adds an environment variable named QSYS_ROOTDIR to the .bashrc, .cshrc and .tcshrc files. You may remove the variable from these files. We'll add the Quartus environment globally instead:

    $ cat << 'EOF' >> /etc/profile.d/vhdl.sh
    # Altera
    export ALTERAPATH="/opt/intelFPGA_lite/16.1/"
    export ALTERAOCLSDKROOT="${ALTERAPATH}/hld"
    export QUARTUS_ROOTDIR="${ALTERAPATH}/quartus"
    export QUARTUS_ROOTDIR_OVERRIDE="$QUARTUS_ROOTDIR"
    export QSYS_ROOTDIR="${ALTERAPATH}/quartus/sopc_builder/bin"
    export PATH="$PATH:${ALTERAPATH}/nios2eds/bin"
    export PATH="$PATH:${ALTERAPATH}/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin"
    export PATH="$PATH:${ALTERAPATH}/nios2eds/sdk2/bin"
    export PATH="$PATH:${ALTERAPATH}/quartus/bin"
    export PATH="$PATH:${ALTERAPATH}/quartus/sopc_builder/bin"
    EOF
  5. Start Xilinx ISE and obtain a WebPack license:

    $ xlcm

    Select Get Free Vivado/ISE WebPack licence and click Next. Then, click on Save Information and save the HTML file to the Desktop. Now launch the file and generate a WebPack license. (This workaround is required because xlcm fails to launch Firefox automatically otherwise.)

    Download the license or check your email, and install it via xlcm by clicking Load License from the Manage Licenses tab.

  6. The 1541 Ultimate source code can be checked out with Subversion from https://svn2.xp-dev.com/svn/1541UltimateII/trunk, but it's been such a long time since I last worked with Subversion that I don't even remember how to use it anymore. Let's clone markusC64's Git repository instead:

    $ git clone https://github.com/markusC64/1541ultimate2.git

    If you're planning to actually modify the source code, fork the repo and clone your fork instead.

  7. Copy global_makefiles/ise_locations.inc and point the environment variable ISE_LOCATIONS_FILE_PATH to the ise_locations.inc copy.

    Then use a text editor (gedit in the example below) to set both the CYGXILINX and XILINX variables to /opt/Xilinx/14.7/ISE_DS/ISE/. Also set PLATFROM to lin64.

    $ cd 1541ultimate2
    $ cp global_makefiles/ise_locations.inc /opt/
    $ gedit /opt/ise_locations.inc
    $ cat << 'EOF' >> /etc/profile.d/vhdl.sh
    export ISE_LOCATIONS_FILE_PATH=/opt/ise_locations.inc
    EOF

    The top of the file should look something like this when you're done:

    export ISE_LOCATIONS_FILE_INCLUDED=yes
    
    export CYGXILINX=/opt/Xilinx/14.7/ISE_DS/ISE/
    export XILINX=/opt/Xilinx/14.7/ISE_DS/ISE/
    PLATFORM=lin64
  8. All done!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment