Contiki 了解(1)

来源:互联网 发布:人工智能销售招聘 编辑:程序博客网 时间:2024/06/08 02:04
<span style="color: rgb(51, 51, 51); font-family: "Microsoft Yahei", Simsun; font-size: 34px;">0. 目标</span>
<p style="margin-top: 0px; margin-bottom: 22px; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); font-family: "Microsoft Yahei", Simsun; font-size: 17px;">了解Contiki的编译配置方法。</p><p style="margin-top: 0px; margin-bottom: 22px; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); font-family: "Microsoft Yahei", Simsun; font-size: 17px;"></p><pre name="code" class="html">make TARGET=srf06-cc26xx BOARD=srf06/cc26xx

1. 使用环境:

Vmware+ubuntu;

Contiki3.0: "git clone https://github.com/contiki-os/contiki.git​"得到,官方提供的ubuntu虚拟机中用的是2.7版本。

CC26xxware:​Contiki3.0 git中不包含此文件,进入contiki->cpu-cc26xx-cc13xx->lib文件夹,“git clone https://github.com/contiki-os/cc26xxware.git”获取相关文件。

2. 逐步深入:

2.1 CC26XX工程编译

一开始时是在example->cc26xx文件夹下执行make,makeclean。发现可以得到hex文件。

之后发现example->helloworld,当然是从这里(cc2650鼓捣教程-2.一切的开始 Hello world程序!)发现的,博文上用的是make TARGET=srf06-cc26xx hello-world命令来编译的。奇怪为什么选择这个TARGET,这个是在多个地方见过的,那么还可以是什么,怎么指导用哪个呢。

所以就找到了Contiki build system,里面介绍Contiki中的makefile是复用型的,通过配置可以得到不同的结果,并且每个工程的makefile文件中必须包含contiki/Makefile.include,这个与helloworld的makefile内容一致,内容较短粘贴如下:

CONTIKI_PROJECT = hello-worldall: $(CONTIKI_PROJECT)CONTIKI = ../..include $(CONTIKI)/Makefile.include

​Contiki build system中还介绍说复用通过TARGET指定平台进行,tareget可以是各种值,具体怎么选择需要看contiki/platform目录下有那些文件夹,默认是native。

CC26XX为例​,make TARGET=srf06-cc26xx BOARD=srf06/cc26xx,其中srf06-cc26xx​是contiki/platform/srf06-cc26xx的一个文件夹

user@instant-contiki:~/contiki/platform/srf06-cc26xx$ lscommon  contiki-conf.h  contiki-main.c  launchpad  Makefile.srf06-cc26xx  README.md  sensortag  srf06

srf06-cc26xx文件夹包含了一类处理器例如CC2650,CC2630,CC1310等。类似的plantform还有很多:

<span style="word-spacing: normal; color: rgb(51, 51, 51); font-family: "Microsoft Yahei", Simsun; font-size: 17px; background-color: rgb(255, 255, 255);"></span><pre name="code" class="plain">ser@instant-contiki:~/contiki/platform$ ls​apple2enh          avr-raven     avr-rcb     c128      cc2538dk    econotag exp5438  mbxxx        native           seedeye       stm32nucleo-spirit1  wismote atarixl            avr-ravenlcd  avr-rss2    c64       cooja       ev-aducrf101mkxz  galileo  micaz        nrf52dk          sky           stm32test            z1 avr-atmega128rfa1  avr-ravenusb  avr-zigbit  cc2530dk  cooja-ip64  eval-adf7xxxmb4z  jn516x   minimal-net  openmote-cc2538  srf06-cc26xx  win32  zoul
<span style="word-spacing: normal; color: rgb(51, 51, 51); font-family: "Microsoft Yahei", Simsun; font-size: 17px; background-color: rgb(255, 255, 255);">除了TARGET还有BOARD参数,即同一种处理器对应的不同开发板,因为不同的硬件设计提供的外设不同,例如:LED的数量,LED绑定的管脚,按键的数量,按键使用的管脚等。主要用于区分外设的使用。当然还有不同的同样是CC2650,不同的封装提供的IO数量不一样,也是通过BOARD进行区分。</span>

contiki/platform/srf06-cc26xx/srf06/cc26xx$​文件夹下只有board.h  Makefile.cc26xx两个文件。其中*.h文件中主要定义板子的外设,例如:

#undef LEDS_GREEN#undef LEDS_YELLOW#undef LEDS_RED#undef LEDS_CONF_ALL#define LEDS_RED       1#define LEDS_YELLOW    2#define LEDS_GREEN     4#define LEDS_ORANGE    8​#define BOARD_IOID_LED_1          IOID_25#define BOARD_IOID_LED_2          IOID_27#define BOARD_IOID_LED_3          IOID_7#define BOARD_IOID_LED_4          IOID_6#define BOARD_LED_1               (1 << BOARD_IOID_LED_1)#define BOARD_LED_2               (1 << BOARD_IOID_LED_2)#define BOARD_LED_3               (1 << BOARD_IOID_LED_3)#define BOARD_LED_4               (1 << BOARD_IOID_LED_4)#define BOARD_LED_ALL             (BOARD_LED_1 | BOARD_LED_2 | BOARD_LED_3 | \                                   BOARD_LED_4)#define BOARD_IOID_UART_RX        IOID_2#define BOARD_IOID_UART_TX        IOID_3#define BOARD_IOID_UART_CTS       IOID_UNUSED#define BOARD_IOID_UART_RTS       IOID_UNUSED#define BOARD_UART_RX             (1 << BOARD_IOID_UART_RX)#define BOARD_UART_TX             (1 << BOARD_IOID_UART_TX)#define BOARD_UART_CTS            (1 << BOARD_IOID_UART_CTS)#define BOARD_UART_RTS            (1 << BOARD_IOID_UART_RTS)


以上代码定义了LED和串口,代码来自board.h,文件中还有其它SPI,SDIO,LCD,ADC等外设接口声明。

Makefile.cc26xx中制定了处理器型号

### Will allow the inclusion of the correct CPU makefileCPU_FAMILY = cc26xx### Include the common makefileinclude $(PLATFORM_ROOT_DIR)/srf06/Makefile.srf06CONTIKI_TARGET_DIRS += srf06/cc26xx

结论:

通过TARGET和BOARD两个选型可以选择不同的处理器平台,不同的开发板​。使得编译出的可执行文件能够下载到处理器进行运行。



不错的链接诶:

http://anrg.usc.edu/contiki/index.php/Contiki_tutorials

http://cgbluesky.blog.163.com/blog/static/24123558201601011818480/

0 0
原创粉丝点击