嵌入式系统与设备驱动程序的编程

时间:2014-01-09 03:44:19

标签: c embedded linux-device-driver embedded-linux device-driver

嵌入式系统编程与设备驱动程序有什么区别?这两个领域都涉及使硬件完成特定任务。我很感激解释。我对C有所了解,我想更深入地处理硬件问题。

2 个答案:

答案 0 :(得分:3)

  

嵌入式系统编程与设备驱动程序有什么区别?

编写设备驱动程序意味着一个非常具体的事情:编写在内核中以提升权限运行的低级代码。它非常棘手,但如果您的硬件与现有硬件足够相似,您有时可以通过"通过复制现有的驱动程序并进行一些更改。从头开始编写驱动程序涉及了解内核的很多内容。设备驱动程序仅以C语言编写。

写一个"嵌入式系统"并不是非常具体。通常,它意味着在计算机上进行编程,其资源少于台式PC,也可能是特殊的硬件"。嵌入式计算机"之间没有真正的界限。和"通用计算机"。

每个人都同意具有128字节RAM的8位系统是"嵌入式编程" (Arduino的)。但根据您的观点,Rasberry PI(具有GB的RAM,硬盘驱动器,HDMI显示器)可视为嵌入式或非嵌入式。如果拔下显示器并将其放在机器人上,会有更多人说它需要嵌入式编程。人们有时称手机编程应用程序和#34;嵌入式编程",但通常他们称之为“#34; mobile"代替。

嵌入式系统可以用高级语言编写,如Ruby / Python,甚至shell脚本。

  

编程设备驱动程序有什么用途

好吧,只要你有硬件设备。这些天,我们有FUSE和USBLib,它们模糊了这条线。但是,如果您希望操作系统识别您的wifi /网络摄像头/ USB端口,则需要驱动程序。

  

对于可以编程设备驱动程序的嵌入式系统,你有什么编程方法呢?反之亦然?

正如我所说,嵌入式系统有时包含bash脚本(即我的家用路由器)。

  

我感到很困惑,因为他们都特别在低级别处理硬件编程。

有一些重叠,但它们非常不同。

嵌入式是描述整个系统的形容词,而“驱动程序”则是是指系统中一个特定的微小部分。您可以在不进行嵌入式操作的情况下进行驱动程序编程(即在桌面上为网络摄像头编写驱动程序),并且无需编写新的内核驱动程序即可进行嵌入式编程。 (即如果内核支持所有硬件,则无需编写驱动程序。)

  

如果我想创建一个机器人,那么这将是嵌入式系统或设备驱动程序吗?

机载机器人系统通常是嵌入式编程。如果你把一台笔记本电脑带到你的机器人上会变得很模糊 - 人们可能会说它不再嵌入,因为它是桌面操作系统。 (嵌入式系统很少有GUI,如果有,它很少是主流的。)

您的机器人可能需要也可能不需要编写新驱动程序。也许电机可以从用户空间开启,因此您不需要驱动程序。另一方面,有时您需要仅在内核中找到的额外功能:更快的响应时间,访问控制等。例如,如果您的程序死亡,它可能会使电机运行,并且这样做坏。因此,您可以编写一个内核驱动程序,以便在程序退出时清理程序。它预先做了一些工作,但可以使开发更简单。

  

让PC的GPU为那个O.S.工作怎么样?那会是设备驱动程序吗?如果硬件是独立的,没有OS,那么它是嵌入式的吗?

是。编写GPU驱动程序正在编写内核设备驱动程序代码。 (这些天它因图书馆而模糊,但无论如何。)如果你在嵌入式硬件上编写它,你可以将它称为设备驱动程序和嵌入式编程。

答案 1 :(得分:-1)

你提出问题的方式答案是没有区别的。你问过苹果和苹果有什么区别?无。

现在,如果你想说比较裸机和linux设备驱动程序?那么linux设备驱动程序有很多操作系统api调用你必须做的并且必须符合那个沙箱,因此在各种外设的寄存器和内存的戳戳和窥视之上有很多工作。如果你去裸机(没有操作系统)那么你可以做任何你想做的事情,你可以为自己创造比(linux)设备驱动程序更多的工作,或者你可以为自己创造更少的工作。

你可以去设备驱动程序的深度,或者一直到裸机,这是你的选择。就外围设备而言,你需要做的事情或与之相关的东西都是类似的,差异将与处理操作系统与没有操作系统的交易有关。

也许你应该选择一个任务并执行此操作,例如从串口发送一个字节是一个合理的陈述。在显示器上放置一个像素(覆盆子pi是一个例外),任何图形,任何usb,都不是一个合理的陈述,在这之前你需要相当多的开销和知识和经验。闪烁LED(基本gpio)读取按钮,uart tx和rx通常是你用裸露的金属弄湿你的脚。在Linux上授予tty / uart的东西远非初学者的东西,所以你真的只需要开始尝试并失败并起床并尝试别的东西,看看它带你去哪里。幸运的是,那里有大量的模拟器,所以你可以使用免费的一切,模拟器,工具链等来做所有这些事情。