contiki系统分析一:下载及基本结构
Posted 王玉成的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了contiki系统分析一:下载及基本结构相关的知识,希望对你有一定的参考价值。
这一系列文章主要专注于contiki的代码分析.至于contiki的开发历史,物联网本身的讨论不在这个系列的讨论范围内.
然后所用的SOC是cc2530,所有的工具都是基于cc2530芯片来分析的.
1. contiki的下载
contiki官方维护的开源代码,包括虚拟机镜像,还包括相关的论文及电子书.
可以从下面两个网址中找到.
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系统分析一:下载及基本结构的主要内容,如果未能解决你的问题,请参考以下文章