A C standard library for sh3eb-elf.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Memallox b27b8de827 Add _console_read() implementation which is called by the read syscall (does not work yet!) 1 yıl önce
config Sync with upstream gcc. 3 yıl önce
etc Remove spurious empty line in changelog entry. 3 yıl önce
include Sync with upstream gcc. 3 yıl önce
libgloss [Aarch64] Syscalls: fix prototypes 1 yıl önce
newlib Add _console_read() implementation which is called by the read syscall (does not work yet!) 1 yıl önce
texinfo * texinfo/texinfo.tex: Update to version 2009-03-28.05. 10 yıl önce
winsup Move common <sys/dirent.h> content to <dirent.h> 1 yıl önce
.drone.yml Continuous Integration: Add Tea CI build configuration. 3 yıl önce
.gitattributes Add .gitattributes 4 yıl önce
.gitignore Add IDE-specific paths to .gitignore 1 yıl önce
COPYING 2005-07-14 Kelley Cook <kcook@gcc.gnu.org> 14 yıl önce
COPYING.LIB Sync toplevel with upstream GCC. 3 yıl önce
COPYING.LIBGLOSS Add Synopsys license for newlib and libgloss 3 yıl önce
COPYING.NEWLIB Update Arm entry in COPYING.NEWLIB. 1 yıl önce
COPYING3 * COPYING3: New file. Contains version 3 of the GNU General Public License. 12 yıl önce
COPYING3.LIB * COPYING3: New file. Contains version 3 of the GNU General Public License. 12 yıl önce
ChangeLog Sync with upstream gcc. 3 yıl önce
MAINTAINERS MAINTAINERS: clarify policy with config/ (and other top level files) 7 yıl önce
Makefile.def Sync with upstream gcc. 3 yıl önce
Makefile.in Introduce @unless/@endunless and postbootstrap Makefile targets 1 yıl önce
Makefile.tpl Introduce @unless/@endunless and postbootstrap Makefile targets 1 yıl önce
README 19990502 sourceware import 20 yıl önce
README-maintainer-mode Cleanups after the update to Autoconf 2.64, Automake 1.11. 10 yıl önce
README.md Add README.md 1 yıl önce
compile Sync toplevel with upstream GCC. 3 yıl önce
config-ml.in Sync toplevel with upstream GCC. 3 yıl önce
config.guess Update config.guess and config.sub 1 yıl önce
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 8 yıl önce
config.sub Update config.guess and config.sub 1 yıl önce
configure Introduce @unless/@endunless and postbootstrap Makefile targets 1 yıl önce
configure.ac Introduce @unless/@endunless and postbootstrap Makefile targets 1 yıl önce
depcomp Sync toplevel with upstream GCC. 3 yıl önce
djunpack.bat * djunpack.bat: Use ".." quoting in Sed command, for the sake of 10 yıl önce
install-sh Sync toplevel with upstream GCC. 3 yıl önce
libtool.m4 Sync toplevel with upstream GCC. 3 yıl önce
ltgcc.m4 * libtool.m4: Update to libtool 2.2.6. 11 yıl önce
ltmain.sh PR target/59788 5 yıl önce
ltoptions.m4 Sync Libtool from GCC. 9 yıl önce
ltsugar.m4 * libtool.m4: Update to libtool 2.2.6. 11 yıl önce
ltversion.m4 Sync Libtool from GCC. 9 yıl önce
lt~obsolete.m4 Sync Libtool from GCC. 9 yıl önce
makefile.vms 19990502 sourceware import 20 yıl önce
missing Sync toplevel with upstream GCC. 3 yıl önce
mkdep * mkdep: New file. 20 yıl önce
mkinstalldirs Sync toplevel with upstream GCC. 3 yıl önce
move-if-change Sync toplevel with upstream GCC. 3 yıl önce
setup.com 2009-09-01 Tristan Gingold <gingold@adacore.com> 10 yıl önce
src-release * src-release (do-proto-toplevel): Support subdir-path-prefixed 6 yıl önce
symlink-tree 2005-07-14 Kelley Cook <kcook@gcc.gnu.org> 14 yıl önce
ylwrap Sync toplevel with upstream GCC. 3 yıl önce

README.md

Newlib - a C Standard Library for Casio Calulators

Motivation

Until now there was no complete C standard library (aka libc) available for the Casio calculators. Although some parts of this library have been provided by fxlib and gint, there was no libc implementation complying with the standard and compatible with the sh3eb architecture ready to use.

To change that, I decided to port newlib to the Casio CPU. Newlib is an alternative libc implementation intended for use on embedded systems.

Alpha

Follow this link and click the download button in the top right corner:

v1.1

Installation

For a complete tutorial on how to setup a toolchain for Casio calculators, see Compiler sous Linux avec GCC.

To build newlib, you first need binutils and gcc for the target sh3eb-elf. Make sure to configure gcc with the arguments --with-newlib --without-headers.

Now you can install newlib. Simply call configure and make:

../newlib-cygwin/configure --target=sh3eb-elf --prefix=...
make
make install

Afterwards, you have to build gcc again with the argument --with-newlib.

For a more detailes tutorial about how to setup newlib in general, see this more detailed turorial.

Features for Casio fx9860g calculators:

  • C standard library libc
    • printf implementation to print text to the display
    • Dynamic allocation of memory using malloc and free
    • Memory manipulation using memcpy, memcmp, memset etc.
    • String manipulation using strcpy, strcmp, strstr, strtok
  • Math library libm
    • Floating point arithmetics
  • Automatic library and include path recognition after installation
  • Basic Casio features:
    • implementation of GetKey, Bdisp_AllClr_DDVRAM, Bdisp_PutDisp_DD, Print and locate without fxlib (but you can use it if you want)

Further information

Upstream Repository

Newlib provides releases in their ftp directory and their code on their git repository. I try to rebase my fork regulary to their master branch to keep it up-to-date.

The target sh3eb-elf

There is a great explanation on the naming convention of targets. To really understand what sh3eb-elf means, I’ll boil it down for you:

To compile code for our Casio calulator, we need to tell newlib where we want to run the code. In our case, the target’s name is sh3eb-elf.

sh is here short for the SuperH processor architecture. (Fortunately, newlib supports SuperH the by default.)

To be more specific, sh3 is a 32-bit CPU architecture of the SuperH family. Furthermore, eb stands for the big endian format (that indicates the byte order used for multi-byte variables). Usually a target also indicates a vendor which in this case is unknown. Lastly, the end of the target’s name is elf (which is usually the kernel). Here, we have no kernel (and hence no operating system) at all.

For newlib, the target sh3eb had to be specifically added.