Contiki中文教程——构建自己的Contiki应用程序

更多Contiki系列教程请看索引博客:
Contiki教程——索引

介绍

  本教程帮助你理解如何在Contiki中构建你自己的应用程序。第二节如何在Contiki中开始一个应用程序将教你在Contiki中写自己应用的完成流程。第三节Contiki中应用程序的通用结构给了一个通用的框架。

如何在Contiki中开始一个应用程序

步骤1

  进入目录contiki/examples,创建一个子目录,命令为my_first_app。
  Contiki中文教程——构建自己的Contiki应用程序_第1张图片

步骤2

  创建一个新的C源文件my_first_app.c
  Contiki中文教程——构建自己的Contiki应用程序_第2张图片

步骤3

 <Header Files>

  PROCESS(my_first_app_process,"My_First_App");
  AUTOSTART_PROCESSES(&my_first_app_process);

  PROCESS_THREAD(my_first_app_process,ev,data)
  { 
      /* Declare variables required */
      static int i=652;         

      /* Begin Process */
      PROCESS_BEGIN();          

      /* Set of C statement(s) */
      printf("EE-%d is an awesome course at USC\n",i);             

      /* Process End */
      PROCESS_END();            
  }

  Contiki中的每个进程都已洪PROCESS开始,它有两个参数:
  

  • name:变量名字,是一个进程结构体
  • strname:字符串,代码进程的名字
PROCESS(name,strname) 

  接着是另一个宏AUTOSTART_PROCESS(struct process &)。当模块启动时,AUTOSTART_PROCESSES将自动开始参数所给的进程。

  • &name:进程的名字
AUTOSTART_PROCESS(struct process &)

  接着我们调用PROCESS_THREAD函数。该函数用于定义一个进程的protothread。无论什么时候,只要系统中产生了一个事件,都会调用这个进程。模块中的每个进程都需要一个由宏PROCESS_THREAD定义的事件处理器(handler)。

  • name:变量名,是进程结构体
  • process_event_t:字符类型的变量。如果这个变量与PROCESS_EVENT_EXIT相同,则调用PROCESS_EXITHANDLER。
PROCESS_THREAD(name, process_event_t, process_data_t) 

  接着是宏PROCESS_BEGIN。该宏表示一个进程的开始,切必须总是出现在PRCESS_THREAD定义内。
  接着我们根绝程序的需求写C语句。
  在最后,我们需要使用另一个宏PROCESS_END。该宏表示一个进程的结束,且必须出现在PROCESS_THREAD定义内。当到达宏PROCESS_END()时,进程退出。

PROCESS_END()

步骤4

  Makefile-在相同的文件夹下创建Makefile文件(contiki/examples/my_first_app)

 CONTIKI_PROJECT = my_first_app
 all: $(CONTIKI_PROJECT)

 #UIP_CONF_IPV6=1

 CONTIKI = ../..
 include $(CONTIKI)/Makefile.include

步骤5

  编译-使用终端,进入目录contiki/examples/my_first_app,然后执行make。浙江编译你的代码并产生所有支持的文件,比如.csc文件、symbols.c,symbols.h等

步骤6

  下载固件到开发板将开发板连接到你的计算机中。使用终端,进入目录contiki/examples/my_first_app,执行下面的命令:

make TARGET=cc2538 savetarget
make my_first_app.upload
make login

  参看下面的链接解决相应的错误:
http://anrg.usc.edu/contiki/index.php/Troubleshooting

  按开发板上的复位按钮,终端上将打印如下消息:

EE-652 is an awesome course at USC

  按Ctrl+C退出。

Contiki中应用程序的通用结构

<Header Files>

PROCESS(name,strname);
AUTOSTART_PROCESSES(struct process &);

PROCESS_THREAD(name, process_event_t, process_data_t)
{ 

----Initialization of required variables----


PROCESS_BEGIN();


---Set of C statements---


PROCESS_END();

}

你可能感兴趣的:(IoT,物联网,contiki)