contiki 环境平台的搭建参照(主要开发平台采用cc2430):
https://github.com/g-oikonomou/contiki-sensinode/wiki/Prepare-your-System
This guide is cloned on the contiki wiki. In case of conflicting information, the Contiki wiki wins. Please contact me and let me know about the issue.
In order to compile contiki, you need a version of the SDCC compiler. Unfortunately, the binary packages don't contain all the libraries we need so you will have to compile SDCC from sources.
Information on this page has been tested on Ubuntu and on Mac OS X. Things should work on Cygwin but may require some tweaking.
Before anything else, make sure you don't have a pre-installed version from the Ubuntu archive!
Make sure you have the following installed:
gcc
flex
bison
libboost-graph-dev
Python
srecord (http://srecord.sourceforge.net/)
If you want to run border routers on Mac OS X, you will also need TunTap
SDCC supports various device types. You can compile it with support for all of them or only some. The port of interest to us is the mcs51. Disabling all other ports will make the compile considerably faster.
Recent Tested SDCC revisions: 7100
Download a recommended revision from the SDCC svn (replace [rev] with one of the numbers above):
svn co -r [rev] https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc
cd into the extracted directory. This will be called sdcc
Now you need to hack sdcc's build system a bit, in order to get correct library versions.
Download and save it to the sdcc directory.
Patch sdcc: patch -p0 < contiki-sdcc.patch
Edit device/lib/incl.mk
.
We need model-huge and model-large libraries. To instruct the build system to build model-huge libraries, find this line:
MODELS = small medium large
.
Add huge
. You may remove small
and medium
if you only use SDCC for contiki, but make sure you keep large
. So your new line may end up looking like this:
MODELS = small large huge
.
Edit device/lib/Makefile.in
. Find this line:
TARGETS += models small-mcs51-stack-auto
.
Replace it with this:
TARGETS += models model-mcs51-stack-auto
You can do this manually:
Or you can apply this patch.
Run
./configure --disable-gbz80-port --disable-z80-port --disable-ds390-port --disable-ds400-port --disable-pic14-port --disable-pic16-port --disable-hc08-port --disable-r2k-port --disable-z180-port --disable-sdcdb --disable-ucsim
If you don't have root access you will probably want to change the installation directory. You can do that with the --prefix=dir
option of the ./configure
stage.
If you get any errors about missing packages, fix them.
make
make install
as root or with sudo
You now have a working compiler and libraries. The sdcc executable might be outside the PATH, depending where you installed it. Try running sdcc -v
and see if it's in the PATH. If not, add it. If sdcc is in the PATH and you have compiled excluding unused ports, sdcc -v
will show you something like this:
SDCC : mcs51 3.0.6 #7000 (Nov 1 2011) (Linux)
The list of supported ports appears after the : and before the version number. If you build everything this message will be a lot longer.
With SDCC in place, you can now start using Contiki for your devices.
git clone git://github.com/g-oikonomou/contiki-sensinode.git
Make sure you have switched to the correct branch: git checkout cc-ports
Some existing examples can be found in examples/sensinode
and in examples/cc2530dk
. cd into the directory of your choice and run make
.