make i/o work ?
Tue Feb 5 15:50:00 GMT 2002
> how can i get the i/o stuff working in newlib 1.9 ?
> I read many docs (B.Gatlif for ex.) but not realy sure what i need to do.
That's bit of an open question. What particular platform are you targetting
what particular board or do you just want to use the simulator?
> That´s what i suppose:
> I need a inbyte() and outbyte() function. Must they be build with the
> complete newlib sources, or can i include them in my programms which will be
> linked against newlib ?
Newlib is built to sit on a relatively small syscall layer. Typically, this
layer is kept separate in libgloss to allow multiple implementations (e.g. an
evaluation board vs a simulator). Newlib itself does not know about inbyte()
or outbyte(); it calls the read/write syscalls. See
for details on what the syscall interface routines need to be named.
You also need a crt0 and a crt1 (if you want C++ ctor/dtor support).
If you are building to run on a simulator, the task is quite straightforward.
Assuming you are targetting the v850, looking at the v850 simulator, a syscall
is a trap 0
/* Registers passed to trap 0 */
#define FUNC State.regs /* function number, return value */
#define PARM1 State.regs /* optional parm 1 */
#define PARM2 State.regs /* optional parm 2 */
#define PARM3 State.regs /* optional parm 3 */
Thus, you need to add a set of syscall routines that newlib will call that use
trap 0. See the libgloss/mn10300 code which also uses trap 0.
If you want to run off a board, there is the RedBoot monitor you can use for
certain v850 boards. See http://sources.redhat.com/redboot for details. You
will have to write a libgloss library that calls the RedBoot syscall interface.
Offhand I don't know, but it might just be trap 0 as well. Alternatively,
you could just use eCos instead of newlib which contains a configurable C
RedBoot that already support v850. See http://sources.redhat.com/ecos for more
-- Jeff J.
More information about the Newlib