Skip to content

nanoMIPS-2019.03-07-1

Latest
Compare
Choose a tag to compare
@farazs-github farazs-github released this 06 Feb 01:23
a9c4061

MTK Logo nanoMIPS GNU Toolchain v2019.03-07

       Published on February 07, 2021

Introduction

The nanoMIPS Toolchain includes example code, source code, and documentation to facilitate development of bare metal applications on nanoMIPS simulators and development boards. These toolchains provide compilers, linkers, libraries and utilities for building applications to run on nanoMIPS cores.

Component Description

  • GCC Bare Metal Toolchain
    This is a software engineer's cross-development system for nanoMIPS processors, intended for statically linked embedded applications running on bare metal CPUs or light-weight operating systems.
  • GCC Linux (MUSL) Toolchain
    For compiling Linux applications for Linux running on nanoMIPS cores.

Release Notes

This is a re-branding of Wave Computing's previous nanoMIPS GNU toolchain release, v2019.03-06

New Features

  • Add support for overlays in GOLD linker.

Bug Fixes

  • Fix decoding rule for the SAVE[32] instruction in GDB simulator.
  • Enable GDB to correctly single-step over certain nanoMIPS control transfer (BBEQZC, BBNEZC, BEQC[16], BEQC[16], JALRC[16], JRC[16], BRSC) and frame handling (RESTORE.JRC[16], RESTORE.JRC[32], SAVE[32]) instructions.
  • Fix misaligned output from assembler when handling jumptable relaxation with table alignment directives. This only affects very large jumptables where 16-bit signed/unsigned offsets are insufficient to cover all the jump vectors.

Other Changes

  • Improve link speed for section pattern matching by reducing the number of string operations.
  • Treat calls to library functions as absolute regardless if PIC option for bare-metal toolchain. This is trivially predicated on bare-metal links being static.
  • Improve scheduling of multi-word loads and stores (LWM/SWM instructions) in the compiler for better performance.

Known issues

  • movep optimization produces incorrect code in some cases (FIXME - more details from DraganM). It can still be disabled by using the compiler option -mno-opt-movep or restricted by -mno-movep-follow-copy-chains.

Documentation

FIXME Links to docs by MIPS Tech, needs to be replaced with re-generated MediaTek docs.

Component Versions

Component Based on upstream version
binutils 2.28
GCC 6.3.0
musl 1.1.16
newlib 2.5.0
GDB 8.0
QEMU 2.5.0
gold 2.30
smallClib Internal
Python 2.7.16

Downloads

Prebuilt Binaries

Variant Size Checksum
Bare Metal Toolchain
Linux x86 (.tar.gz) [121M] 79eadef300d3fc0b98050e684743ee37
d1c0570581afac3d25d767ac3756df86545eef1677446190a5bc8e15c6de613f
Windows x86 (.tar.gz) [91M] 06295369564c14471081d27ec50d8f43
71b219a34b2a770f54bea05fb71c3310a09f7e9938ad90166fa1c7d5e3c93a00
Linux x64 (.tar.gz) [118M] 952481837a9bb5a8dfb002c7c0c64a56
a5a5313bb63b418549e807d38cce068b817f115bf9455ccab6d9975710e3075f
Windows 64 (.tar.gz) [94M] aa59f5170f1873c3d8002a4eb9c43fb4
6ee4a79dc54c4ee0511edd2d8a0e8ff2c92f08a3302dbcb7a57b941359a26512
MUSL/Linux Toolchain
Linux x86 (.tar.gz) [130M] ba501ac62abf454dc976f3db1e055586
88d7f3534c895a31df547699cdf53c67a593bf0f947750ffb34cdc52360e187c
Windows x86 (.tar.gz) [106M] 2d4a0f3ed72fb4405cd4f190e89141b5
b771c420edbd506d89a00f78b413a58eced5281f1fc30dff2d0a3b50f5173102
Linux x64 (.tar.gz) [129M] 70c835b634478b1dc82e0efa09de9e60
057037ac8a320a0d8b5743d9154846614c3bd669107053597d67f886cc17301a
Windows 64 (.tar.gz) [109M] 3ebde00dc5ac09a7486a01094c284bfb
2a61b20b8e892668a9c08de319eacf8e9936409d2f32d61f2f0877b0009f59a9

Source Components

Source Package Size Checksum
binutils-2019.03-06-trial-1.src.tar.gz [51M] md5: bfe2dba67215a48ae79f7ab13c9f8bde
sha256: ec791160c84eaa8a25fedbda83d4221678dc74e8d60c4abd84d87f2773dc8a6f
gdb-2019.03-06-trial-1.src.tar.gz [51M] md5: deb1c06177f3911ab7b76d5ff4006679
sha256: 715573adfe61a7d2b3bb6ee688c02ec6eff708f6050a111695d82d7c64f97056
gold-2019.03-06-trial-1.src.tar.gz [52M] md5: 4936ec3ad183fd1c45c16f177558a0a7
sha256: 09d9738ebaa41f1d4fce8ce597d84cfc2391a4a299e71974cc079db82c4639fb
newlib-2019.03-06-trial-1.src.tar.gz [19M] md5: aeeea2ef744e792ef0aa308ae2e0ab1f
sha256: 9a6af4581be8d3fdaeb40a432f59ed99485ff40a0bcf7bdfe58c6fef0021eadc
gcc-2019.03-06-trial-1.src.tar.gz [112M] md5: ea69e8fed0bcdaf9598c0fdc676950bb
sha256: 12442b4abce26f2d385f54061a71fc56786de97958ed67423c18ebbd231cd813
smallclib-2019.03-06-trial-1.src.tar.gz [1M] md5: 7d6705b17da76d6a56e012a272a34ad2
sha256: 9bbb9309c5b428308b3d6fad4cdc35134463b0e7b084b8121a31f5335d94883a
qemu-2019.03-06-trial-1.src.tar.gz [11M] md5: c42f056ef388530f17e8c5fc933c3601
sha256: 2cfd22441813b163168a8baaaa414a743502bac51d61dbad8a7077eb03dc1255
musl-2019.03-06-trial-1.src.tar.gz [1M] md5: 5e5d8d2b574a13bac921c0df7d7b6d96
sha256: abe15d1e27fc306d246b29c6c398859e52c9d333b308b43c07a13e5a75e479ec
packages-2019.03-06-trial-1.src.tar.gz [189M] md5: 787547bba2667ab42b028aa512d72a42
sha256: ebab8ac045258aa9d2443a44a0ff3b6c510fa6c5f3170cad0ae75047cbebcef9
python-2019.03-06-trial-1.src.tar.gz [16M] md5: 9406af6bc6bcd61cbbcd6a8962b605af
sha256: 806b40988fb359e837bf020a8996df97b427720b5bdd3620f4fa441721584222

License Agreements

License Categories

The components included in this toolchain fall under multiple license agreements:

  • GPL v2 - QEMU, Linux
  • GPL v3.1 - GNU toolchain, gdb, gmp, mpfr, libiconv
  • LGPL v3 - mpc
  • MIT / BSD style Licenses - Newlib, smallclib, tinyclib, libgloss/MIPS HAL, musl-libc, libffi, expat, ncurses
  • zlib - zlib-libpng license
  • PSFL v2 - python

The software included in this product contains copyrighted software that is licensed under the GPLv3. A copy of that license is included in the source. You may obtain the complete Corresponding Source code above.

Licenses for each component are installed as part of the package, are listed in the getting started guide and can be referred to again after the install.

Disclaimer of Warranties and Limitation of Liability

FIXME

License Agreements

GPL v3.1

The source code is distributed under the GNU General Public License version 3,
with the addition under section 7 of an exception described in the "GCC
Runtime Library Exception, version 3.1" as follows (or see the file
COPYING.RUNTIME):

GCC RUNTIME LIBRARY EXCEPTION

Version 3.1, 31 March 2009

Copyright (C) 2009 Free Software Foundation, Inc.

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

This GCC Runtime Library Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.

When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.

  1. Definitions.

A file is an "Independent Module" if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Library, but is not otherwise based
on the Runtime Library.

"GCC" means a version of the GNU Compiler Collection, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.

"GPL-compatible Software" is software whose conditions of propagation,
modification and use would permit combination with GCC in accord with
the license of GCC.

"Target Code" refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not include data in any
format that is used as a compiler intermediate representation, or used
for producing a compiler intermediate representation.

The "Compilation Process" transforms code entirely represented in
non-intermediate languages designed for human-written code, and/or in
Java Virtual Machine byte code, into Target Code. Thus, for example,
use of source code generators and preprocessors need not be considered
part of the Compilation Process, since the Compilation Process can be
understood as starting with the output of the generators or
preprocessors.

A Compilation Process is "Eligible" if it is done using GCC, alone or
with other GPL-compatible software, or if it is done without using any
work based on GCC. For example, using non-GPL-compatible Software to
optimize any GCC intermediate representations would not qualify as an
Eligible Compilation Process.

  1. Grant of Additional Permission.

You have permission to propagate a work of Target Code formed by
combining the Runtime Library with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.

  1. No Weakening of GCC Copyleft.

The availability of this Exception does not imply any general
presumption that third-party software is unaffected by the copyleft
requirements of the license of GCC.

NewLib, SmallClib,TinyClib and Musl

These libraries are licensed under a collection of code, copyright held by multiple
contributors and distributed under an umbrella of permissive MIT and BSD-like free
licenses. The complete license text is provided in the binary distribution
under [Toolchain_Root]/share/copying
COPYING.NEWLIB
COPYING.MUSL
COPYING.CLIB