首页 > 编程知识 正文

contiki操作系统简介,contiki操作系统

时间:2023-05-04 19:01:18 阅读:263022 作者:4244

继续上一篇文章已经过去很久了。工作原因也正式开始接触contiki。上次已经简单将cooja跑起来,这次来看一下基本的demo吧。 

contiki里面已经有一些适配的硬件平台,手上没有相关硬件,最简单的就是编译本地native版本了。当执行make没有指定target参数,便执行相当于执行make target=native

额,好像还没有说在哪个目录。直接上图:

hello-world-example.csc :上一篇文章提到过的cooja仿真文件;Makefile:这是工程Makefile,后续说明hello-world.c : 程序代码主文件

执行make:

执行生成文件:

Make文件内容很简单:

大概意思就是定义了编译hello-world这个目标文件,然后将顶层的Makefile.include包含进来。如果想详细分析make过程,可执行make -n 观察编译执行的命令情况。

最后就是hello-world.c

咋一看,就这几行代码,便实现了contiki的基本框架!还是稍微解释一下好了:contiki是事件驱动的系统,它并非像linux那样有完整的内核,所以你可以直接把contiki看成一个裸机,只不过在一直跑while循环罢了。但是麻雀虽小,五脏俱全。contiki也集成了文件系统coffe, 轻量级协议栈uIP, 以及...反正就几乎有实现三层以上的很多协议,在app目录有源码;

解释下源码,首先是PROCESS(hello_world_process, "Hello world process");

展开一下结果,就是

PROCESS(hello_world_process, "Hello world process");

PROCESS_THREAD(name, ev, data);

struct process hello_world_process = { NULL, process_thread_hello_world_process };

什么?!展开之后好像就定义声明了一个结构体struct process?是的,你没看错,增加一个子例程就是定义一个struct process结构体就好了!那PROCESS_THREAD是啥?让我们也占到定义展开来看看。

继续深挖PT_THREAD;

./core/sys/pt.h:99:#define PT_THREAD(name_args) char name_args

这么说PT_THREAD就是个函数指针嘛! PROCESS_THREAD也就是最后就变成了一个...函数声明。

然后接着深挖struct process有什么东西,

这下应该明朗了,就是声明了一个struct proces结构体,然后实现里面的thread函数,完成初始化。

只不过,这一些都在PROCESS和PROCESS_THREAD宏定义完成了,这些对于有C语言基础的同学都不难...

最后我们再来看PROCESS_THREAD(hello_world_process, ev, data):

参数ev和data后面会讲到。我们先来看里面的函数体内容:

结构体里面是PROCESS_BEGIN()开头,退出由PROCESS_END()结尾,这是固定格式。先记住就好了。

以上,就实现了一个PROCESS处理,或者可以理解为相当于linux的一个进程吧。不过差别还是挺大的。

这一篇就先这样吧。

极速赛车稳赚4码定义一个struct process结构体就好了!那PROCESS_THREAD是啥?让我们也占到定义展开来看看。

继续深挖PT_THREAD;

./core/sys/pt.h:99:#define PT_THREAD(name_args) char name_args

这么说PT_THREAD就是个函数指针嘛! PROCESS_THREAD也就是最后就变成了一个...函数声明。

然后接着深挖struct process有什么东西,

这下应该明朗了,就是声明了一个struct proces结构体,然后实现里面的thread函数,完成初始化。

只不过,这一些都在PROCESS和PROCESS_THREAD宏定义完成了,这些对于有C语言基础的同学都不难...

最后我们再来看PROCESS_THREAD(hello_world_process, ev, data):

参数ev和data后面会讲到。我们先来看里面的函数体内容:

结构体里面是PROCESS_BEGIN()开头,退出由PROCESS_END()结尾,这是固定格式。先记住就好了。

以上,就实现了一个PROCESS处理,或者可以理解为相当于linux的一个进程吧。不过差别还是挺大的。

这一篇就先这样吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。