在 Cygwin 上编译 Contiki

由于使用 Contiki 需要 Linux 环境,切换来切换去很麻烦,幸好 Windows 下面有 Unix 模拟环境软件,Cygwin。本文主要介绍 8051 核的 Contiki 编译,它的编译需要编译器 SDCC,所以本文介绍 SDCC 的编译。

官方 8051 核的编译文档请参考 8051 Requirements

注:官方的 win32 版的 SDCC 并不适用。

依赖

必须确定安装以下依赖包,可以从 Cygwin 源中直接找到:

  • gcc
  • flex
  • bison
  • libboost-graph-dev
  • python
  • make
  • texinfo

此外,还需要安装一个工具,srecord,下载 Win32 版本后,直接放于cygwin/bin/目录下即可。

编译 SDCC

SDCC 源码下载

直接使用svn下载即可,本文版本为9377

svn co svn://svn.code.sf.net/p/sdcc/code/trunk/sdcc

SDCC 源码修改

  • 编辑device/lib/incl.mk,找到:
 MODELS = small medium large

修改成

 MODELS = small large huge
  • 编译device/lib/Makefile.in,找到:
 TARGETS += models small-mcs51-stack-auto

修改成:

 TARGETS += models model-mcs51-stack-auto

编译

进行配置:

./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

编译并安装:

make
make install

试用

在 Contiki 的example/hello-world目录下运行:

make TARGET=cc2530dk all

便可以生成hello-world.hex

用 SmartRF Flash 工具便可以下载。

关于编译 cc-tool

还是别折腾了,因为 cygwin 下,libusb 不支持。