【问题标题】:Is it possible to start working on an API for a hardware device before having the driver是否可以在拥有驱动程序之前开始为硬件设备开发 API
【发布时间】:2016-12-07 20:03:37
【问题描述】:

我是这个领域开发过程的新手,所以我的问题可能看起来不太合乎逻辑。

我正在开发一个生产新 USB 设备的项目。让我们假设这个设备是一个网络摄像头。该设备的主要特点之一是它应该有一个非常智能的 API,以便程序员可以广泛访问硬件部件。例如,使用滑块手动控制相机镜头,同样适用于闪光强度和捕捉帧率。

据我所知,在使用 API 之前,所有设备功能都应该由设备驱动程序提供并记录。不幸的是,我被要求(作为 C/C++ 开发人员)开始设计 API,作为一种通过最终可交付功能指导生产过程的方法。

那么在拥有设备驱动程序之前,开发人员需要做些什么工作吗?

另外,能否请您提供一个示例代码(伪代码),说明 API 如何利用设备驱动程序执行某些功能?

【问题讨论】:

    标签: api usb driver device


    【解决方案1】:

    设计 API 通常只意味着编写一个 C 语言头文件,其中包含您的库提供的方法的名称,以及它们的参数、返回类型和任何必要的文档。所以,是的,您当然可以在拥有设备驱动程序之前开始编写该文件。

    由于您有两个不同的问题,我认为您应该将它们分别发布在本网站上。但无论如何,第二个问题的答案在很大程度上取决于您使用的操作系统。在 Windows 中,您可能会使用 DeviceIoControl,而在 Linux 中,您可能会使用 ioctl(或者只是 readwrite)。

    【讨论】:

    • 那么这个头文件的源文件(实现)呢?是否全部包含在驱动程序 DLL 中?换句话说,API 只是驱动程序的一个抽象(接口),还是通过组合多个驱动程序调用来执行某些任务来添加一些更高级别的逻辑?
    • 您可能希望保持驱动程序相当简单,因为内核级代码更难编写,并且其中的错误会产生更严重的后果。升级内核驱动程序会更难。因此,用户空间共享库可能包含一些不直接映射到单个驱动程序命令的高级函数。这完全取决于您,您可能会在世界上找到两种方式的示例,并且它们都可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多