148 lines
5.2 KiB
HTML
148 lines
5.2 KiB
HTML
<!-- $NetBSD: vxworks.html,v 1.1 1998/12/30 20:20:37 mcr Exp $ -->
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>vxWorks Port of NTP</TITLE>
|
|
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (X11; I; Linux 2.0.30 i586) [Netscape]">
|
|
</HEAD>
|
|
<BODY LINK="#00008B" VLINK="#8B0000">
|
|
|
|
<H1>VxWorks port of NTP </H1>
|
|
|
|
<P>Creating a port for vxWorks posed some problems. This port may help
|
|
as a starting point for similar ports to real-time OS's and other embeddable
|
|
kernels, particularly where main() is not allowed, and where the configure
|
|
scripts need to be altered. </P>
|
|
|
|
<H1><B>Configuration issues</B></H1>
|
|
|
|
<P>I decided to do as little invasive surgery as possible on the NTP code,
|
|
so I brought the vxWorks header tree in line with the standard unix tree.
|
|
The following changes were needed, as a side effect these changes will
|
|
allow for easy porting of other autoconfigure enabled code. </P>
|
|
|
|
<P>Where I have 386 you will need to put in your target type. The vxWorks
|
|
tree entry point is /usr/wind. </P>
|
|
|
|
<P><BLINK>WARNING: Check you are not overwriting files, before entering
|
|
the following: there should be no conflict, but check first... </BLINK></P>
|
|
|
|
<P>export CC="cc386 -nostdlib -m486 -DCPU=I80486 -I/usr/wind/target/h"
|
|
<BR>
|
|
export RANLIB=ranlib386 <BR>
|
|
export AR=ar386 <BR>
|
|
export VX_KERNEL=/usr/wind/target/config/ims_std_bsp/vxWorks <BR>
|
|
cd /usr/wind/target/sys <BR>
|
|
ln -s ../signal.h <BR>
|
|
ln -s ../time.h <BR>
|
|
ln -s socket.h sockio.h <BR>
|
|
ln -s ../selectLib.h select.h <BR>
|
|
ln -s ../timers.h <BR>
|
|
touch file.h param.h resource.h utsname.h var.h ../netdb.h ../a.out.h ../termios.h
|
|
<BR>
|
|
echo " ******ADD #include \"sys/times.h\" to sys/time.h
|
|
" </P>
|
|
|
|
<P>The configure script must be changed in the following way to get the
|
|
linking tests to work, once in the correct directory issue the following
|
|
commands: <BR>
|
|
sed -e 's%main.*()%vxmain()%' configure > configure.vxnew <BR>
|
|
mv configure.vxnew configure <BR>
|
|
chmod 755 configure </P>
|
|
|
|
<P><BR>
|
|
The <A HREF="../../configure.in">configure.in </A>file needed to be altered
|
|
to allow for a host-target configuration to take place. </P>
|
|
|
|
<UL>
|
|
<LI>The define SYS_VXWORKS was added to the compilation flags. </LI>
|
|
|
|
<LI>Little endianess is set if the target is of type iX86. </LI>
|
|
|
|
<LI>The size of char, integer, long values are all set. If Wind River ever
|
|
changes these values they will need to be updated. </LI>
|
|
|
|
<LI>clock_settime() is defined to be used for setting the clock. </LI>
|
|
|
|
<LI>The Linking flags have -r added to allow for relinking into the vxWorks
|
|
kernel </LI>
|
|
</UL>
|
|
|
|
<P>Unfortunately I have had to make use of the <A HREF="../../include/ntp_machine.h">ntp_machine.h
|
|
</A>file to add in the checks that would have been checked at linking stage
|
|
by autoconf, a better method should be devised. </P>
|
|
|
|
<UL>
|
|
<LI>There is now a NO_MAIN_ALLOWED define that simulates command line args,
|
|
this allows the use of the normal startup sysntax. </LI>
|
|
|
|
<LI>POSIX timers have been added. </LI>
|
|
|
|
<LI>Structures normally found in netdb.h have been added with, the corresponding
|
|
code is in <A HREF="../../libntp/machines.c">machines.c </A>. Where possible
|
|
the defines for these have been kept non-vxWorks specific.</LI>
|
|
</UL>
|
|
|
|
<P>Unfortunately there are still quite a few SYS_VXWORKS type defines in
|
|
the source, but I have eliminated as many as possible. You have the choice
|
|
of using the usrtime.a library avaliable from the vxworks archives or forgoing
|
|
adjtime() and using the clock_[get|set]time().The <A HREF="../../include/ntp_machine.h">ntp_machine.h
|
|
</A>file clearly marks how to do this. </P>
|
|
|
|
<H1><B>Compilation issues</B> </H1>
|
|
|
|
<P>You will need autoconf and automake ... available free from the gnu
|
|
archives worldwide. </P>
|
|
|
|
<P>The variable arch is the target architecture (e.g. i486) </P>
|
|
|
|
<P>mkdir A.vxworks (or whatever....) <BR>
|
|
cd A.vxworks <BR>
|
|
../configure --target=arch-wrs-vxworks [any other options] <BR>
|
|
make </P>
|
|
|
|
<P>The program should proceed to compile without problem. The daemon xntpd,
|
|
ntpdate, ntptrace, xntpdc, ntpq programs and of course the libraries are
|
|
all fully ported. The other utilities are not, but they should be easy
|
|
to port. </P>
|
|
|
|
<H1>Running the software </H1>
|
|
|
|
<P>Load in the various files, call them in the normal vxWorks function
|
|
type manner. Here are some examples. Refer to the man pages for further
|
|
information. </P>
|
|
|
|
<P>ld < ntpdate/ntpdate <BR>
|
|
ld < xntpd/xntpd <BR>
|
|
ld < ntptrace/ntptrace <BR>
|
|
ld < ntpq/ntpq <BR>
|
|
ld < xntpdc/xntpdc <BR>
|
|
ntpdate ("-b", "192.168.0.245") <BR>
|
|
sp(xntpd, "-c", "/export/home/casey/xntp/ntp.conf")
|
|
<BR>
|
|
xntpdc("-c", "monlist", "192.168.0.244")
|
|
<BR>
|
|
ntpq("-c", "peers", "192.168.0.244") <BR>
|
|
ntptrace("192.168.0.244") <BR>
|
|
</P>
|
|
|
|
<H1>Bugs and such </H1>
|
|
|
|
<P>Should you happen across any bugs, please let me know, or better yet
|
|
fix them and submit a patch. <A HREF="http://www.ccii.co.za">CCII Systems
|
|
(Pty) Ltd</A>, my ex-employers, sponsored the time to this port.
|
|
Please let me know how it goes, I would be most interested in offsets
|
|
and configurations. </P>
|
|
|
|
<P><BR>
|
|
</P>
|
|
|
|
<P><A HREF="http://www.ee.uct.ac.za/~casey">Casey Crellin</A> <BR>
|
|
<A HREF="mailto:casey@csc.co.za">casey@csc.co.za</A> </P>
|
|
|
|
<P><BR>
|
|
</P>
|
|
|
|
</BODY>
|
|
</HTML>
|