当前位置: 首页 > 工具软件 > RIOT-OS > 使用案例 >

RIOT物联网操作系统

魏英勋
2023-12-01

RIOT物联网操作系统

 

  嵌入式系统中,最好用,生态最好的是Linux

  空间小于 1.5kB,支持芯片多。

  riot操作系统是一个开源的物联网操作系统。官网提供了一个强大的功能,函数、文件、名称查找功能。

   可以通过riot提供的例程去学习是一条很快的学习方法,例程里面包含了数据联网层的无线通信,udp无线通信,rpl,border routers,coap协议等功能。

  riot是一个纯C语言编写的操作系统。我没有使用过contiki,但是我觉得riot确实是很好用的操作系统。之后我会慢慢介绍一下riot的一些东西,包括io口的控制,adc测试,uart,数据链路层无线通信,udp通信,rpl。

1.  开发环境

  在ubuntu环境中,下载交叉编译环境:

https://launchpad.net/gcc-arm-embedded/+download,下载linux版本的,然后解压后,将路径加入到PATH变量中,即可使用。

然后切换目录:

cd RIOT/examples/hello-world

直接make即可编译,生成了伟大的helloworld应用。

PS:

如果碰到:fatal error:sys/cdefs.h: No such file or directory|

  执行如下命令:apt install libc6-dev-i386

2.  文件结构

  重要的文件夹,分别是board,core,cpu,dist,doc,drivers,examples,pkg,sys,tests

 

2.1    core

  core文件夹包含了riot的内核文件,包含了riot中的:线程管理,消息管理,关键数据结构,一些格式定义等。包含了riot中main函数线程的创建,和空闲线程的创建。

2.2    board、cpu

  board这个文件夹中包含了riot支持的硬件平台,其中包括arm的,ti的等等。这个文件夹的主要作用是把硬件平台编译需要的文件联系起来,这样硬件平台才能够编译。cpu这个文件夹中,包含了每个硬件平台的基础底层驱动文件。Cpu文件夹在前期的编程中会频繁的使用到。例如cc2538

2.3    drivers

  这个文件夹就和它的命令一样,提供了一些其他外设的驱动,比如enc28j60,dht11等。同时该文件夹中还包含了硬件平台底层驱动的头文件。

2.4    sys、net

  sys中是非常重要的文件夹,包含了riot的系统运用的代码。cpu文件夹中的东西是底层的,而sys中的应用是高层的。

  而sys文件夹下的net文件夹,包含了riot网络部分的文件,包括数据链路层的文件,网络层的,传输层的,应用层的。可以找到sixlowpan,udp,rpl,border routers等功能。riot提供了强大的gnrc模块,在无线传输方便使用异常的简便。

2.5    examples

  examples文件夹里面提供了经典的例程,只要掌握了这几个例程的功能,riot的大部分功能就学会了。推荐学习顺序:hello-world,default,gnrc_networking,gnrc_border_router,microcoap_server,posix_sockets。

2.6    tests

  tests中提供了各个功能的详细测试程序。riot里面包含的功能机会都可以在这里面找到测试的实例。而且这些功能机会支持所有的硬件平台。

2.7    pkg、dist、doc

  pkg里面提供了一些外部库驱动,比如libcoap、openwsn等库驱动。

  dist提供了一些工具,doc提供了一些文档,这部分自己去官网看看就好,目前我还没有用到这部分的东西。

  下图中显示了这几个文件夹的架构层次。图中标着貌似很简单,但是在程序中,需要慢慢的运用,然后再反过来看这幅图就能理解,图中的文件为什么是这样的结构了。

   

2.8    复位函数

  复位之后的第一个函数\RIOT\cpu\cortexm_common\vectors_cortexm.c

在这个路径中找到函数voidreset_handler_default(void),这个函数是复位后的第一个运行的函数,里面可以自己去看看里面具体做了一些什么事。值得注意的是函数kernel_init(),位于路径\RIOT\core\kernel_init.c。

这个函数里面创建了两个线程,空闲线程,main函数线程。

 

3.  Makefile解读

Makefile中, “APPLICATION”含义是工程的名称,可以在这里任意选择自己想定义的名称。"BOARD ?="的意思是选择的硬件平台,可以改成了cc2538dk。

或者编译的时候直接指定参数,例如:makeBOARD=cc2538dk

       然后会在bin文件家中,得到cc2538dk文件夹,其中包含一个bin文件,可以通过软件工具烧写到开发板上或者自制的硬件板中。

 

4.  参考

RIOT操作系统:

http://blog.csdn.net/mx1252111/article/details/52585401

源代码:

https://github.com/RIOT-OS/RIOT

IoT的那些操作系统

https://zhuanlan.zhihu.com/p/23618181

官网网址:

https://riot-os.org/#nutshell

API查找网址是

http://www.riot-os.org/api/index.html

学习例程

https://github.com/RIOT-OS/RIOT/wiki/Example-Applications

 类似资料: