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

C 嵌入式系统编程与设备驱动程序,c,embedded,linux-device-driver,embedded-linux,device-driver,C,Embedded,Linux Device Driver,Embedded Linux,Device Driver,嵌入式系统编程与设备驱动程序编程有什么区别?这两个领域都涉及使硬件执行特定任务。我希望你能解释一下。我有C语言的知识,我想更深入地讨论一下硬件。你提出这个问题的方式,答案是没有区别。你问过苹果和苹果有什么区别吗?没有 现在,如果你想说比较裸机和linux设备驱动程序?linux设备驱动程序有很多操作系统api调用,您必须进行调用,并且必须遵守该沙箱,因此除了戳和窥探各种外围设备的寄存器和内存之外,还有很多工作要做。如果你使用裸机(没有操作系统),那么你几乎可以做任何你想做的事情,你可以为自己创建

嵌入式系统编程与设备驱动程序编程有什么区别?这两个领域都涉及使硬件执行特定任务。我希望你能解释一下。我有C语言的知识,我想更深入地讨论一下硬件。

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

现在,如果你想说比较裸机和linux设备驱动程序?linux设备驱动程序有很多操作系统api调用,您必须进行调用,并且必须遵守该沙箱,因此除了戳和窥探各种外围设备的寄存器和内存之外,还有很多工作要做。如果你使用裸机(没有操作系统),那么你几乎可以做任何你想做的事情,你可以为自己创建比(linux)设备驱动程序更多的工作,或者你可以为自己创建更少的工作

您可以深入到设备驱动程序,也可以一直到裸机,这是您的选择。就外围设备而言,您必须对其执行的操作或使用的操作将是相似的,不同之处在于处理操作系统与不处理操作系统

也许您应该选择一个任务并执行该操作,像发送一个字节到串行端口这样的语句是合理的。在显示器上放置一个像素(raspberry pi是一个例外)、任何图形、任何usb都不是一个合理的说法,在这样做之前,您需要大量的开销、知识和经验。闪烁led(基本gpio)读取按钮,uart tx和rx通常是您被裸机弄湿脚的地方。诚然,linux上的tty/uart还远远不是初学者的东西,所以你真的需要开始尝试一些东西,然后失败,然后站起来尝试其他东西,看看这会把你带到哪里。幸运的是,有大量的模拟器,所以你可以使用免费的一切,模拟器,工具链等等来完成所有这些事情

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

编写设备驱动程序意味着一件非常特殊的事情:编写在内核中以提升权限运行的低级代码。这是相当棘手的,但如果您的硬件与现有硬件非常相似,您有时可以通过复制现有驱动程序并进行一些更改来“通过”。从头开始编写驱动程序需要对内核有很多了解。设备驱动程序仅用C编写

为“嵌入式系统”写作并不是很具体。一般来说,这意味着“在一台资源比台式PC少的计算机上编程,可能还有特殊的硬件”。“嵌入式计算机”和“通用计算机”之间没有真正的界限

每个人都会同意,一个具有128字节RAM的8位系统是“嵌入式编程”(Arduino)。但是Rasberry PI(具有GB的RAM、硬盘驱动器、HDMI显示器)可以被视为嵌入式或非嵌入式,具体取决于您的视图。如果你拔掉显示器的插头,把它放在机器人上,更多的人会说它需要嵌入式编程。人们有时称手机编程应用为“嵌入式编程”,但通常称之为“手机”

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

编写设备驱动程序的目的是什么

好吧,只要你有一个硬件设备。现在,我们有FUSE和USBLib,它们模糊了界限。但如果你想让操作系统识别你的wifi/webcam/usb端口,它需要一个驱动程序

对于可以编程设备驱动程序,反之亦然的嵌入式系统,有什么不能做到的

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

我很困惑,因为他们都是专门在低水平上处理硬件编程的

有一些重叠,但它们是完全不同的

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

如果我想创造一个机器人,这将是在嵌入式系统或设备驱动程序

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

您的机器人可能需要也可能不需要编写新的驱动程序。也许马达可以从用户空间打开,所以你不需要司机。另一方面,有时您需要仅在内核中找到的额外功能:更快的响应时间、访问控制等。例如,如果您的程序死机,它可能会让电机继续运行,这很糟糕。因此,您可以编写一个内核驱动程序,在程序退出时为您的程序进行清理。前面的工作稍微多一些,但可以使开发过程更简单

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


对。编写GPU驱动程序就是编写内核设备驱动程序代码。(由于库的存在,这一点现在很模糊,但不管怎样。)如果你是在嵌入式硬件上编写的,你可以将其称为设备驱动程序和嵌入式编程。

如果你的问题是linux设备驱动程序,将其与非嵌入式linux系统和嵌入式linux系统进行比较,linux的整个理念让它变得相当无形。可能不同的外围设备,但无论是it应用程序还是设备驱动程序都应该