Zephyr

阅读: 评论:0

Zephyr

Zephyr

Zephyr - 设备驱动和设备模型

介绍

Zephyr 内核支持大量的设备驱动程序。应用程序板级配置的可用设备驱动集合随着所关联的硬件组件和设备驱动软件的变化而变化。

Zephyr 的设备模型为配置驱动程序提供了一致的设备模型。设备模型负责初始化配置到系统中的所有驱动。

每种类型的驱动程序(UAR,SPI,I2C)都有一个通用类型的 API。

在这个模型中,当驱动程序初始化时,驱动中会填充指向包含指向它的 API 函数的结构的指针。这些结构体被按照初始化等级放到 RAM 区。

标准驱动

所有的板级配置中都支持的设备驱动包括:

  • 中断控制器:用于内核的中断管理子系统。

  • 定时器:用于内核的系统时钟和硬件时钟子系统。

  • 串行通信:用于内核的系统控制台子系统。

  • 随机数生产器:提供随机数源。

    … important::

    这种设备驱动的确切实现并不会产生真正意义上的随机数,只是一个近似随机的数。

同步调用

Zephyr 对多种板子提供了一系列的设备驱动程序。除非硬件不支持,否则每个驱动都应当提供基于中断(而不是轮询)的实现。

通过上层的设备API来调用这些驱动, 例如 i2c.h spi.h, 他们通常被特意设计为同步操作, 这些调用会产生阻塞.

驱动程序 API

:file:device.h 中提供了如下关于设备驱动程序的 API。这些 API 只能用于设备驱动程序中,不能应用于应用程序中。

:c:func:DEVICE_INIT()

创建设备对象,并在启动的初始化阶段调用其初始化函数。

:c:func:DEVICE_AND_API_INIT()

创建设备对象,并在启动的初始化阶段调用其初始化函数。此外,它还用一个指针指向驱动程序的 API。

:c:func:DEVICE_NAME_GET()

获得一个全局设别对象的全名。

:c:func:DEVICE_GET()

通过名字获取一个执行设备对象的指针。

:c:func:DEVICE_DECLARE()

声明一个设备对象。
<

本文发布于:2024-01-30 21:39:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662194923016.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Zephyr
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23