Commit 7b40a568 authored by Rémy Léone's avatar Rémy Léone
Browse files

Update to markdown

- Spellchecking
- Update plain text to github markdown
parent f8edbbb8
The Contiki build system
The Contiki build system is designed to make it easy to compile
Contiki applications for different hardware platforms or into a
simulation platform by simply supplying different parameters to the
make command, without having to edit makefiles or modify the
application code.
The file example project in examples/hello-world/ shows how the
Contiki build system works. The hello-world.c application can be built
into a complete Contiki system by running make in the
examples/hello-world/ directory. Running make without parameters will
build a Contiki system using the native target. The native target is a
special Contiki platform that builds an entire Contiki system as a
program that runs on the development system. After compiling the
application for the native target it is possible to run the Contiki
system with the application by running the file hello-world.native. To
compile the application and a Contiki system for the ESB platform the
command make TARGET=esb is used. This produces a hello-world.esb file
that can be loaded into an ESB board.
To compile the hello-world application into a stand-alone executable
that can be loaded into a running Contiki system, the command make
hello-world.ce is used. To build an executable file for the ESB
platform, make TARGET=esb hello-world.ce is run.
To avoid having to type TARGET= every time make is run, it is possible
to run make TARGET=esb savetarget to save the selected target as the
default target platform for subsequent invocations of make. A file
called Makefile.target containing the currently saved target is saved
in the project's directory.
Beside TARGET= there's DEFINES= which allows to set arbitrary variables
for the C preprocessor in form of a comma-separated list. Again it is
possible to avoid having to re-type i.e. DEFINES=MYTRACE,MYVALUE=4711
by running make TARGET=esb DEFINES=MYTRACE,MYVALUE=4711 savedefines. A
file called Makefile.esb.defines is saved in the project's directory
containing the currently saved defines for the ESB platform.
Makefiles used in the Contiki build system The Contiki build system is
composed of a number of Makefiles. These are:
* Makefile: the project's makefile, located in the project directory.
* Makefile.include: the system-wide Contiki makefile, located in
the root of the Contiki source tree.
* Makefile.$(TARGET) (where $(TARGET) is the name of the platform
that is currently being built): rules for the specific platform,
located in the platform's subdirectory in the platform/
directory.
* Makefile.$(CPU) (where $(CPU) is the name of the CPU or
microcontroller architecture used on the platform for which
Contiki is built): rules for the CPU architecture, located in
the CPU architecture's subdirectory in the cpu/ directory.
* Makefile.$(APP) (where $(APP) is the name of an application in
the apps/ directory): rules for applications in the apps/
directories. Each application has its own makefile.
The Makefile in the project's directory is intentionally simple. It
specifies where the Contiki source code resides in the system and
includes the system-wide Makefile, Makefile.include. The project's
makefile can also define in the APPS variable a list of applications
from the apps/ directory that should be included in the Contiki
system. The Makefile used in the hello-world example project looks
like this:
CONTIKI_PROJECT = hello-world
all: $(CONTIKI_PROJECT)
CONTIKI = ../..
include $(CONTIKI)/Makefile.include
First, the location of the Contiki source code tree is given by
defining the CONTIKI variable. Next, the name of the application is
defined. Finally, the system-wide Makefile.include is included.
The Makefile.include contains definitions of the C files of the core
Contiki system. Makefile.include always reside in the root of the
Contiki source tree. When make is run, Makefile.include includes the
Makefile.$(TARGET) as well as all makefiles for the applications in
the APPS list (which is specified by the project's Makefile).
Makefile.$(TARGET), which is located in the platform/$(TARGET)/
directory, contains the list of C files that the platform adds to the
Contiki system. This list is defined by the CONTIKI_TARGET_SOURCEFILES
variable. The Makefile.$(TARGET) also includes the Makefile.$(CPU)
from the cpu/$(CPU)/ directory.
The Makefile.$(CPU) typically contains definitions for the C compiler
used for the particular CPU. If multiple C compilers are used, the
Makefile.$(CPU) can either contain a conditional expression that
allows different C compilers to be defined, or it can be completely
overridden by the platform specific makefile Makefile.$(TARGET).
The Contiki build system
========================
The Contiki build system is designed to make it easy to compile Contiki
applications for different hardware platforms or into a simulation platform by
simply supplying different parameters to the make command, without having to
edit makefiles or modify the application code.
The file example project in examples/hello-world/ shows how the Contiki build
system works. The hello-world.c application can be built into a complete
Contiki system by running make in the examples/hello-world/ directory. Running
make without parameters will build a Contiki system using the native target.
The native target is a special Contiki platform that builds an entire Contiki
system as a program that runs on the development system. After compiling the
application for the native target it is possible to run the Contiki system with
the application by running the file hello-world.native. To compile the
application and a Contiki system for the ESB platform the command make
TARGET=esb is used. This produces a hello-world.esb file that can be loaded
into an ESB board.
To compile the hello-world application into a stand-alone executable that can
be loaded into a running Contiki system, the command make hello-world.ce is
used. To build an executable file for the ESB platform, make TARGET=esb
hello-world.ce is run.
To avoid having to type TARGET= every time make is run, it is possible to run
make TARGET=esb savetarget to save the selected target as the default target
platform for subsequent invocations of make. A file called Makefile.target
containing the currently saved target is saved in the project's directory.
Beside TARGET= there's DEFINES= which allows to set arbitrary variables for the
C preprocessor in form of a comma-separated list. Again it is possible to avoid
having to re-type i.e. DEFINES=MYTRACE,MYVALUE=4711 by running make TARGET=esb
DEFINES=MYTRACE,MYVALUE=4711 savedefines. A file called Makefile.esb.defines is
saved in the project's directory containing the currently saved defines for the
ESB platform.
Makefiles used in the Contiki build system The Contiki build system is composed
of a number of Makefiles. These are:
* Makefile: the project's makefile, located in the project directory.
* Makefile.include: the system-wide Contiki makefile, located in the root of
the Contiki source tree.
* Makefile.$(TARGET) (where $(TARGET) is the name of the platform that is
currently being built): rules for the specific platform, located in the
platform's subdirectory in the platform/ directory.
* Makefile.$(CPU) (where $(CPU) is the name of the CPU or microcontroller
architecture used on the platform for which Contiki is built): rules for the
CPU architecture, located in the CPU architecture's subdirectory in the cpu/
directory.
* Makefile.$(APP) (where $(APP) is the name of an application in the apps/
directory): rules for applications in the apps/ directories. Each application
has its own makefile.
The Makefile in the project's directory is intentionally simple. It specifies
where the Contiki source code resides in the system and includes the
system-wide Makefile, Makefile.include. The project's makefile can also define
in the APPS variable a list of applications from the apps/ directory that
should be included in the Contiki system. The Makefile used in the hello-world
example project looks like this:
CONTIKI_PROJECT = hello-world
all: $(CONTIKI_PROJECT)
CONTIKI = ../..
include $(CONTIKI)/Makefile.include
First, the location of the Contiki source code tree is given by defining the
CONTIKI variable. Next, the name of the application is defined. Finally, the
system-wide Makefile.include is included.
The Makefile.include contains definitions of the C files of the core Contiki
system. Makefile.include always reside in the root of the Contiki source tree.
When make is run, Makefile.include includes the Makefile.$(TARGET) as well as
all makefiles for the applications in the APPS list (which is specified by the
project's Makefile).
Makefile.$(TARGET), which is located in the platform/$(TARGET)/ directory,
contains the list of C files that the platform adds to the Contiki system. This
list is defined by the CONTIKI_TARGET_SOURCEFILES variable. The
Makefile.$(TARGET) also includes the Makefile.$(CPU) from the cpu/$(CPU)/
directory.
The Makefile.$(CPU) typically contains definitions for the C compiler used for
the particular CPU. If multiple C compilers are used, the Makefile.$(CPU) can
either contain a conditional expression that allows different C compilers to be
defined, or it can be completely overridden by the platform specific makefile
Makefile.$(TARGET).
The examples/ directory contains a few examples that will help you get
started with Contiki.
To run the example programs, you need either to be running Linux or
FreeBSD (or any other *nix-type system), or install Cygwin if you are
running Microsoft Windows (http://www.cygwin.com/). As a minimum you
will need to have the gcc C compiler installed. To run the examples in
the 'netsim' target, you need to have GTK 1.x development libraries
installed. These are usually called 'gtk-devel', 'libgtk1-devel' or
similar in your Linux software installation programs.
compile-platforms/
A test script that compiles Contiki for a number of platforms and
reports any errors found during the build.
email/
An email program supporting SMTP. It can be compiled and run in the
'win32' target by typing the following commands:
cd examples/email
make
./email-client.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
esb/
A set of demo applications for the ESB board.
ftp/
An FTP client supporting download. It can be compiled and run in the
'win32' target by typing the following commands:
cd examples/ftp
make
./ftp-client.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
hello-world/
A really simple Contiki program that shows how to write Contiki
programs. To compile and test the program, go into the hello-world
directory:
cd examples/hello-world
Run the 'make' command.
make
This will compile the hello-world program in the 'native' target.
This causes the entire Contiki operating system and the hello-world
application to be compiled into a single program that can be run by
typing the following command:
./hello-world.native
This will print out the following text:
Contiki initiated, now starting process scheduling
Hello, world
The program will then appear to hang, and must be stopped by
pressing the C key while holding down the Control key.
irc/
An IRC client. It can be compiled and run in the 'win32' target by
typing the following commands:
cd examples/irc
make
./irc-client.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
multi-threading/
A quite simple demonstration of the Contiki multi-threading library
employing two worker threads each running a recursive function. It
can be compiled and run in the 'native' target by typing the
following commands:
cd examples/multi-threading
make
./multi-threading.native
rime/
Contains a set of examples on how to use the Rime communications
stack. To run those examples in the 'netsim' target (a very simple
Contiki network simulator), compile the programs with:
make TARGET=netsim
You will need to have GTK 1.x development libraries installed.
Run the different programs:
./test-abc.netsim
./test-meshroute.netsim
./test-rudolph0.netsim
./test-rudolph1.netsim
./test-treeroute.netsim
./test-trickle.netsim
Most of the examples requires you to click with the middle mouse
button on one of the simulated nodes for something to happen.
sky/
Examples inteded for running on the Tmote Sky board. To compile
those, you need to have msp430-gcc (the gcc C compiler for the
MSP430 microcontroller) installed.
The follwing programs are included:
blink.c A simple program that blinks the on-board LEDs
sky-collect.c Collects sensor data and energy profile values
to a sink. Press the "user" button on the Tmote
Sky that is connected to the PC to make the node a
sink.
test-button.c Toggles the LEDs when the button is pressed.
test-cfs.c Tests the 1 mb flash memory of the Tmote Sky
telnet-server/
A simple TCP telnet server with a simple command shell. It can be
compiled and run in the 'minimal-net' target by typing the following
commands:
cd examples/telnet-server
make
./telnet-server.minimal-net
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/minimal-net/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well if you are running
Microsoft Windows.
webbrowser/
A text mode web browser supporting links and forms. It can be compiled
and run in the 'win32' target by typing the following commands:
cd examples/webbrowser
make
./webbrowser.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
webserver/
A web server supporting dynamic content creation using "scripts" which
are actually compiled-in C-functions. It can be compiled and run in the
'minimal-net' target by typing the following commands:
cd examples/webserver
make
./webserver-example.minimal-net
As an alternative to the static and dynamic compiled-in content the web
server can instead support "external" static-only content loaded from
any storage supported by the 'Contiki File System' (CFS) interface. To
compile it in the 'minimal-net' target and have it load files from disk
use the following command:
make HTTPD-CFS=1
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/minimal-net/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well if you are running
Microsoft Windows.
wget/
A command line program that retrieves files from web servers and saves
them using the 'Contiki File System' (CFS). It can be compiled and run
in the 'minimal-net' target by typing the following commands:
cd examples/wget
make
./wget.minimal-net
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/minimal-net/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well if you are running
Microsoft Windows.
Contiki Examples
================
The examples/ directory contains a few examples that will help you get
started with Contiki.
To run the example programs, you need either to be running Linux or FreeBSD (or
any other UNIX-type system), or install Cygwin if you are running Microsoft
Windows [http://cygwin.com](http://cygwin.com). As a minimum you will need to
have the gcc C compiler installed. To run the examples in the 'netsim' target,
you need to have GTK 1.x development libraries installed. These are usually
called 'gtk-devel', 'libgtk1-devel' or similar in your Linux software
installation programs.
compile-platforms/
------------------
A test script that compiles Contiki for a number of platforms and reports any
errors found during the build.
email/
------
An email program supporting SMTP. It can be compiled and run in the 'win32'
target by typing the following commands:
cd examples/email
make
./email-client.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
esb/
----
A set of demo applications for the ESB board.
ftp/
----
An FTP client supporting download. It can be compiled and run in the 'win32'
target by typing the following commands:
cd examples/ftp
make
./ftp-client.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
hello-world/
------------
A really simple Contiki program that shows how to write Contiki programs. To
compile and test the program, go into the hello-world directory:
cd examples/hello-world
Run the 'make' command.
make
This will compile the hello-world program in the 'native' target. This causes
the entire Contiki operating system and the hello-world application to be
compiled into a single program that can be run by typing the following command:
./hello-world.native
This will print out the following text:
Contiki initiated, now starting process scheduling
Hello, world
The program will then appear to hang, and must be stopped by pressing the C key
while holding down the Control key.
irc/
----
An IRC client. It can be compiled and run in the 'win32' target by
typing the following commands:
cd examples/irc
make
./irc-client.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
multi-threading/
----------------
A quite simple demonstration of the Contiki multi-threading library
employing two worker threads each running a recursive function. It
can be compiled and run in the 'native' target by typing the
following commands:
cd examples/multi-threading
make
./multi-threading.native
rime/
-----
Contains a set of examples on how to use the Rime communications
stack. To run those examples in the 'netsim' target (a very simple
Contiki network simulator), compile the programs with:
make TARGET=netsim
You will need to have GTK 1.x development libraries installed.
Run the different programs:
./test-abc.netsim
./test-meshroute.netsim
./test-rudolph0.netsim
./test-rudolph1.netsim
./test-treeroute.netsim
./test-trickle.netsim
Most of the examples requires you to click with the middle mouse
button on one of the simulated nodes for something to happen.
sky/
----
Examples inteded for running on the Tmote Sky board. To compile those, you need
to have msp430-gcc (the gcc C compiler for the MSP430 microcontroller)
installed.
The follwing programs are included:
- blink.c A simple program that blinks the on-board LEDs
- sky-collect.c Collects sensor data and energy profile values to a sink.
Press the "user" button on the Tmote Sky that is connected to the PC to make
the node a sink.
- test-button.c Toggles the LEDs when the button is pressed.
- test-cfs.c Tests the 1 mb flash memory of the Tmote Sky
telnet-server/
--------------
A simple TCP telnet server with a simple command shell. It can be
compiled and run in the 'minimal-net' target by typing the following
commands:
cd examples/telnet-server
make
./telnet-server.minimal-net
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/minimal-net/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well if you are running
Microsoft Windows.
webbrowser/
-----------
A text mode web browser supporting links and forms. It can be compiled
and run in the 'win32' target by typing the following commands:
cd examples/webbrowser
make
./webbrowser.win32
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/win32/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well.
webserver/
----------
A web server supporting dynamic content creation using "scripts" which
are actually compiled-in C-functions. It can be compiled and run in the
'minimal-net' target by typing the following commands:
cd examples/webserver
make
./webserver-example.minimal-net
As an alternative to the static and dynamic compiled-in content the web
server can instead support "external" static-only content loaded from
any storage supported by the 'Contiki File System' (CFS) interface. To
compile it in the 'minimal-net' target and have it load files from disk
use the following command:
make HTTPD-CFS=1
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/minimal-net/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP.markdown as well if you are running
Microsoft Windows.
wget/
-----
A command line program that retrieves files from web servers and saves them
using the 'Contiki File System' (CFS). It can be compiled and run in the
'minimal-net' target by typing the following commands:
cd examples/wget
make
./wget.minimal-net
Most likely you'll have to adjust the TCP/IP values set in main() in
platform/minimal-net/contiki-main.c to match your needs.
Please consult cpu/native/net/README-WPCAP as well if you are running
Microsoft Windows.
The Contiki Operating System The Contiki Operating System
============================
[![Build Status](https://secure.travis-ci.org/contiki-os/contiki.png)](http://travis-ci.org/contiki-os/contiki)
Contiki is an open source operating system that runs on tiny low-power Contiki is an open source operating system that runs on tiny low-power
microcontrollers and makes it possible to develop applications that microcontrollers and makes it possible to develop applications that
...@@ -13,4 +16,4 @@ and so on. ...@@ -13,4 +16,4 @@ and so on.
For more information, see the Contiki website: For more information, see the Contiki website:
http://www.contiki-os.org/ [http://contiki-os.org](http://contiki-os.org)
Move the desired pages into httpd-fs and regenerate httpd-fsdata.c using the PERL script makefsdata.
Stage unused pages in this directory; anything here will be ignored by makefsdata.
When using non-ram storage it must be invoked with the HTTPD_STRING_ATTR!
E.g. cd ~/contiki/apps/webserver (or webserver-nano, -micro, -mini, ...)
../../tools/makefsdata -A HTTPD_STRING_ATTR
Move the desired pages into httpd-fs and regenerate httpd-fsdata.c using the
PERL script makefsdata. Stage unused pages in this directory; anything here
will be ignored by makefsdata. When using non-ram storage it must be invoked
with the HTTPD_STRING_ATTR!
cd ~/contiki/apps/webserver (or webserver-nano, -micro, -mini, ...)
../../tools/makefsdata -A HTTPD_STRING_ATTR
The cpu/6502/ directory is used for targeting 6502-based machines using the cc65 6502