Steps for porting Newlib to a new Target processor without any OS

Jeff Johnston jjohnstn@redhat.com
Wed Jan 4 22:02:00 GMT 2006


Sriharsha wrote:
> Hello Everyone,
>    we have a new 16-bit processor for which GCC 3.2 is ported as a
> cross compiler. Now, I want to port Newlib also, as the default C
> library for gcc. I tried following the steps described in the newlib
> site (http://sources.redhat.com/newlib) for porting newlib to a new
> processor, but I feel that those steps are insufficient. The following
> are the questions I have. I'd be glad if anyone can take time to answer
> them. I tried searching the archieves, but couldnt get all the answers.
> 
> 1. Our processor does'nt yet have an OS, so no system calls are available.

As previously pointed out by Jon Beniston, you only have to supply a 
modest set of syscalls via libgloss to support newlib.  These can be 
anything you want and they can even be stubs that fail.  A library of 
stubs (libnosys.a) is created just for such an occasion.  You will still 
need to supply an _exit and crt0 in that case, but that is relatively 
easy to do.

> 2. Our processor does not support IEEE floating point numbers (and their
> arithmetic ofcourse), but supports real numbers in Q.15 format. So, can
> I modify the floating point functions to deal with Q.15 numbers?

No, you should not modify the libm routines.

gcc supports IEEE floating-point via integer math for platforms that 
don't have hardware float support (i.e. libgcc).  This would apply to 
your chip.  Newlib libm in conjunction with the basic floating-point 
operators supplied by gcc does not require hardware floating-point 
support on the platform.

You can optionally supply a library of Q.15 routines for the end-user 
that map directly to the functionality of the processor.

> 3. I want to port only the non-OS dependent part of the library (and
> preferably math library using Q.15 format for real numbers). Is this
> possible?

As specified in the answers above, there is no point to this.  A stub 
syscall library is already created for you and the math routines are a 
non-issue.

> 4. I also want some standard functions like printf use specific hardware
> (like serial port) for I/O. Where and how do I change this?

See Jon's note about this.

> 5. Last but not the least, I tried adding my processor name to
> configure.host in newlib1.13.0/newlib/ directory, but it is not
> recognizing my processor.

You have to modify the top-level files (in the parent directory of 
newlib and libgloss) to recognize your processor.

-- Jeff J.



More information about the Newlib mailing list