首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向嵌入式系统迁移

向嵌入式系统迁移
EN

Software Engineering用户
提问于 2013-05-13 10:30:18
回答 3查看 669关注 0票数 3

到目前为止,我的公司一直在开发一种医疗设备,它通过USB连接到桌面系统(运行x64 Windows 7)来运行图像分析,并完成所有与GUI相关的操作。

我熟悉Windows和、C、C++、C++11和C#,但现在我们的新项目将是一个手持嵌入式系统,而且由于我是唯一的软件工程师,我完全不知道嵌入式系统是如何工作的。

它是否与“正常”编程工作完全不同,我是否应该推荐雇用有嵌入式经验的人,是否有很好的资源介绍嵌入式计算?

我在这里不知所措,因为我不知道到底该期待什么(理论上,这将与桌面系统、获取图像的传感器和软件进行分析一样)。

有人能帮我弄清楚我对这件事的期望吗?

编辑:没有框架,关于使用什么硬件。我们可以使用任何我们想要的,只要它足够小,可以手持。我们将使用第三方传感器(照片传感器或声学传感器,这还没有建立),但同样,我们几乎可以自由决定,所以我猜它将有一个完善的API。我甚至不知道什么是嵌入式系统,我曾私下试验过Arduino,这算不算嵌入式系统?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2013-05-13 11:45:20

嵌入式是一个很大的领域,从非常小的东西到仅仅是一个有趣的盒子里的桌面机器的东西。

我将使用3类嵌入式系统,以符合我的经验,然后我将提出一些建议。

小型嵌入式系统是由微控制器型设备运行的。它们没有任何操作系统、调度程序等。您正在CPU上直接运行代码,而且通常您将有主循环在打开电源时启动,并且永不退出。微控制器有很多选择,从备受尊敬的8051到非常微小的PIC,以及许多基于ARM核心的产品。这些都很好,因为您对系统操作的每个方面都有完整和直接的控制。当然,这也意味着您需要小心操作的时间和延迟,以及在返回主循环之前可以在任何一件事情上花费多长时间。

中型嵌入式系统是更大的东西,它将有一个嵌入式操作系统,如风河的pSOS (有很多选择,我碰巧曾经使用过pSOS )。我称它为媒体,因为此时您没有运行一个主循环,而且实际上有一个调度程序。硬件可能与前一个组的高端没有太大的不同,但是调度程序和更加形式化的驱动程序体系结构的存在确实提高了程序员完成任务的能力。不利的一面是,遇到非常紧的时间可能会带来更大的麻烦,因为您可以很容易地从调度程序中引入更多意想不到的延迟。另外,你必须小心你的硬件所做的事情对你所使用的操作系统是有意义的-例如,并不是所有的中断策略都适用于所有的嵌入式操作系统。在这个组的更大的一端,我将放在Windows中,这是微软的嵌入式产品。随着越来越多的处理能力变得越来越少,越来越少的钱,这一部分正在被挤出在某种程度上。

大型嵌入式系统甚至更大,并且运行桌面用户可能会识别的操作系统。Linux在这里很常见,嵌入式(甚至是普通的)也是如此!微软视窗的版本。在医学领域有很多这样的事情(看看很多超声波仪器)。这里的优点是,您可以运行一个完整的Linux安装,与所有有用的东西,真正的操作系统带来了非常小和非常便宜的硬件。

现在,作为你对嵌入式系统的第一次尝试,并且考虑到它是医学的(我怀疑你有足够的空间来支持合理的硬件预算),我建议您使用一些小型计算机,比如rasberry pi、beaglebone,或者其他基于多臂核心之一的计算机。在上面运行Linux,并在此基础上构建应用程序。事实上,你可能只是想把你的设备按原样,用小计算机打包到一个盒子里,然后通过USB进行通讯。实际上,只需将现有应用程序移植到Linux和go即可。

票数 6
EN

Software Engineering用户

发布于 2013-05-13 11:14:44

嵌入式系统这个术语非常大,涵盖了从控制微波炉的芯片到提供动态的路边交通信息的系统。一般来说,如果里面有一个计算机芯片,可以与一些专用硬件通信,那么你就有了一个嵌入式系统。

嵌入式系统大致有两种类型,我在这里将其称为“小”和“大”系统。

在“小型”嵌入式系统中,通常很少有可用的资源(RAM/ROM/Flash),而且也没有操作系统。通常,在这样一个设备上运行的所有软件都会编译成一个大的可执行文件,其中也包括操作系统内核。这些内核只为您提供调度和任务同步原语。

在“大型”嵌入式系统中,您正在编写软件,以便在常规操作系统(通常是Linux,但并不总是Linux)的控制下运行。作为软件开发人员,除了用于编译/部署/调试的工具之外,编写桌面环境的软件通常没有太大的区别,而且一些较重的过程(如X windows)可能不可用。

如果这是公司在嵌入式世界中迈出的第一步,我建议他们尽可能多地寻找最适合他们需求的库存硬件,并且已经有了一个操作系统实现。将操作系统移植到新硬件和编写设备驱动程序并不是最容易的任务,特别是对于不熟悉嵌入式开发的人。

票数 2
EN

Software Engineering用户

发布于 2013-05-14 14:47:37

硬件设计人员需要选择能够完成这项工作的候选硬件选项。然后,团队应该做一个贸易研究,以选择最佳的选择,从这些候选人为您的具体产品。

该行业研究的一些特定软件类别如下:

  • 操作系统硬件驱动程序支持
  • 程序员背景
  • 确定影响OS/硬件选择的“特殊”要求。你需要多线程,调度,互斥,磁盘支持等吗?
  • 您是否已经有了特定操作系统的代码?
  • 任何其他因素,您可以提出,影响您的操作系统或语言选择。

你不能先选择操作系统。首先选择硬件,但硬件选择必须考虑软件的影响。例如,当具有简单易用API的等效硬件块可用时,您不希望选择需要所有自定义驱动程序代码的硬件。

至于在那之后你应该期待什么,这完全取决于你从贸易研究中所选择的。如果您有幸能够使用Windows嵌入式兼容硬件和windows兼容驱动程序,那么您的学习曲线将相当小。它将非常类似于桌面开发(至少在您开始与硬件设备集成之前,一些硬件知识可能会发挥作用)。

如果目的是构建极低成本的硬件,那么您可能需要编写代码,以调整寄存器中的各个位,并要求为附加设备编写所有中断处理程序。如果您没有太多的硬件背景,那么这将不适合您的团队。如果你不明白硬件是如何工作的,你就不能编写可靠的驱动软件。

我想说的是,如果你拥有成熟的windows嵌入式操作系统系统,那么你就可以在不雇佣任何人的情况下完成这项工作。Linux可能需要一些有经验的人,但是如果你有一些空闲时间,你可以自己尝试几个星期来确定你是否认为有必要。任何操作系统选择少于上述任何一种可能需要一个有经验的人,即使它只是让你去。如果您选择一个需要自定义板支持包的板包/ OS,那么一定要找到具有为该特定操作系统开发BSP的特定经验的人。这是一个非常利基的技能,如果做错了,就会对产品产生巨大的影响。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/197907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档