contiki系统分析一:下载及基本结构

这一系列文章主要专注于contiki的代码分析.至于contiki的开发历史,物联网本身的讨论不在这个系列的讨论范围内.

然后所用的SOC是cc2530,所有的工具都是基于cc2530芯片来分析的.


1. contiki的下载


contiki官方维护的开源代码,包括虚拟机镜像,还包括相关的论文及电子书.

可以从下面两个网址中找到.

https://github.com/contiki-os

http://www.contiki-os.org/


2. contiki的编译


如果在linux下进行编译,可以直接运行官方模拟器中自带的sdcc编译器,而且contiki官方也是基于linux写的Makefile.

但是在linux去调试contiki有一些问题,由于TI的cc debuger只是在windows下写了软件.在linux调试的单步,交互,以及所有的寄存器值的打印会有一些问题.

在linux只能用wireshark进行抓包分析.


示例:


1.没指定MCU,直接用gcc进行编译的情况.

进入目录contiki-2.6/examples/hello-world

[ycwang@ycwang:hello-world]$ make

TARGET not defined, using target 'native'gcc -DCONTIKI=1 -DCONTIKI_TARGET_NATIVE=1 -Wall -g -I/usr/local/include -O -I. -I../../platform/native/. -I../../platform/native/dev -I../../cpu/native/. -I../../cpu/native/net -I../../core/dev -I../../core/lib -I../../core/net -I../../core/net/mac -I../../core/net/rime -I../../core/net/rpl -I../../core/sys -I../../core/cfs -I../../core/ctk -I../../core/lib/ctk -I../../core/loader -I../../core/. -I../../platform/native/ -MMD -c ../../core/net/rime/rimeaddr.c -o obj_native/rimeaddr.o......gcc -Wl,-Map=contiki-native.map,-export-dynamic hello-world.co contiki-native.a -o hello-world.nativerm hello-world.co[ycwang@ycwang:hello-world]$ lscontiki-native.a contiki-native.map hello-world.c hello-world-example.csc hello-world.native Makefile obj_native obj_z1 README symbols.c symbols.h[ycwang@ycwang:hello-world]$ ./hello-world.native Contiki 2.6 startedRime started with address 2.1MAC nullmac RDC nullrdc NETWORK RimeHello, world


2. 指定了相关的MCU编译的情况

如果用的TI的2530的芯片,就在hello-world下用.

	make TARGET=cc2530dk CFLAGS+=... 

在platform下必须有你这个芯片的板级移植代码,及对应的编译器.

然后make后面指定contiki本身的头文件,还有sdcc类似的编译器的头文件.

实际上在编译后还有一些编译参数的选择,编译模块的裁剪方法.在后面再讨论.

由于网上已经有多数人把contiki移植到了IAR环境下.在windows下会有全套的软件完成TI上的contiki的一些修改开发.

3. contiki代码的大致结构

[ycwang@ycwang:contiki-2.6]$ tree -d -L 1
.
├── apps
├── core
├── cpu
├── doc
├── examples
├── platform
└── tools
其中关心的代码主要在两个层次:

cpu, platform这一层主要是芯片,或外设的支持.

core这一个目录主要是contiki操作系统的核心支持.包括文件系统,网络,图形界面,boot loader,还有设备管理.及库的支持.

apps可以理解为contiki的应用.应该类似传统的linux中的服务这一层.

examples主要指contiki运行的应用.

我们理解contiki系统主要也是理解这个系统提供的核心功能,芯片及开发板移植需要的功能支持,及系统运行时应该做哪些事情.


下面的文章主要用来分析cc2530在contiki上的实现.包括contiki的所有代码.

你可能感兴趣的:(contiki系统分析一:下载及基本结构)