欢迎来到天天文库
浏览记录
ID:40532834
大小:37.50 KB
页数:3页
时间:2019-08-04
《contiki编程入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本文将介绍如何使用Contiki的进程模型方便快速地开发第一个应用程序。正如所有的程序设计学习一样,本文中的应用程序被命名为:Helloworld! 1、建立项目文件夹 Contiki中每一个应用程序都需要一个单独的文件夹,我们为Helloworld!建立一个名为helloworld的文件夹,并在其中创建hello-world.c和Makefile文件。为了方便,建议将文件夹放在Contiki的examples目录下。 2、编写Helloworld!源代码 在hello-world.c文件中输入或粘贴如下代码:1.#in
2、clude"contiki.h"2.#include3.4./*声明一个名为hello_world_process进程*/5.PROCESS(hello_world_process,"Helloworldprocess");6./*这个进程需要自动启动,即当节点启动时启动本进程*/7.AUTOSTART_PROCESSES(&hello_world_process);8.9./*hello_world_process进程的主体部分*/10.PROCESS_THREAD(hello_world_process,ev,data)11.{12.
3、/*所有的进程开始执行前都必须要有这条语句*/13. PROCESS_BEGIN();14.15. printf("Helloworld:)");16.17. /*所有的进程结束时都必须要有这条语句*/18. PROCESS_END();19.}复制代码 是不是很简单,声明一个进程并声明为自动启动,定义进程主体,完成。 3、编写Makefile 在Makefile文件中输入或粘贴如下代码:1./*项目名称(主文件名称)*/2.CONTIKI_PROJECT=hello-world3.all:$(CONTIKI_PROJEC
4、T)4.5./*Contiki源文件根目录,根据您的实际情况修改*/6.CONTIKI=../..7./*包含Contiki的Makefile,以实现整个Contiki系统的编译*/8.include$(CONTIKI)/Makefile.include复制代码 4、编译项目 在控制台/Shell中进入helloworld项目目录,运行如下命令:1.make复制代码 这时编译的目标平台是默认的native平台。如果需要指定目标平台,可以使用TARGET参数,如:1.makeTARGET=native复制代码 编译成功后,项目目录
5、下就会生成hello-world.[目标平台]的目标文件,如hello-world.native。如果您使用的是Linux操作系统,可以运行如下命令查看Contiki程序运行结果:1../hello-world.native复制代码 运行结果如下所示:(由于Contiki还在运行,需要按Ctrl+C退出程序)1.StartingContiki2.Helloworld:)复制代码 至此,我们完成了第一个Contiki应用程序的开发,希望对大家快速上手Contiki有所帮助。 总结一下,Contiki程序开发是以进程的方式实现。创建一个Con
6、tiki进程包含两个步骤,声明和定义,由两个宏分别完成。PROCESS(process_name,"processdescription")宏用于声明一个进程;PROCESS_THREAD(process_name,event,data)宏用于定义进程执行主体。 如果进程需要在系统启动时被自动执行,则可以使用AUTOSTART_PROCESSES(&process_name)宏。该宏可以指定多个进程,如AUTOSTART_PROCESSES(&process_1,&process_2),表示process_1和process_2都会在系统启动时被启动
7、。 进程执行主体代码中,必须以PROCESS_BEGIN()宏开始,以PROCESS_END()宏结束。这是由于Contiki特殊的进程模型导致的。此外,在进程中不能使用switch语句,慎重使用局部变量,同样也是因为Contiki进程模型的原因。在以后的文章中会详细地说明。Zyz_Eng 16:25:04 自己要开发软件,先要选你要开发的平台,各个平台在对应的platform文件夹下有相应的底层代码,如果没有你要开发的平台,那就需要自己写底层的代码。Zyz_Eng 16:25:09 Apps 各种基本应用程序ping6 ftp telnet web
8、server等,都要链接核心coreC
此文档下载收益归作者所有