2012-11-27 45 views
-1

当定义一个嵌入式系统架构中,有两个选择,当谈到定义HAL -定义HAL高于还是低于驱动程序层?

  • 定义驱动层之上的HAL(这意味着one'll需要重写每一个平台,你端口驱动程序)
  • 定义驱动层下方的HAL(这意味着one'll需要重写HAL为每个平台,您端口)

哪一个更好,为什么?

回答

5

简答:是的。

拥有一个HAL(或稳定的驱动程序ABI低于驱动程序是很好的,特别是对于驱动程序编写者) 具有高于驱动程序的HAL对应用程序员来说很好。

你可以这样做:查看Unix设备驱动程序;相当便携。[字节序但仍然咬]

哪个是更好的依赖于嵌入式架构的产品开发路线图。

让我们试试一些例子。

让我们说这是一个商业产品,您的公司并不需要跨平台移植。在这种情况下,你不在乎。

如果您的公司正在使用它,例如电视机,并且预计平台会发生变化,但设备将保持不变(电视机是电视机是电视机,但最便宜的微型设备会随着时间而改变)然后你会用低于司机的车,并保持对司机的投资。

如果你的公司做,例如智能手机,处理器的变化等方面做了设备,如分辨率改变,额外的传感器得到补充...所以在这种情况下,你会与HAL-上面去驱动,并保持软件负载的很大一部分是通用的。

如果你放入两个HAL,对于嵌入式,你可能会冒险成为一名建筑宇航员。如果两个HAL(运行时间和设计时间)的成本超过跨平台移植所节省的人力,那么这是浪费时间和金钱。

对HAL投入多少努力同样是一种折衷。在一个小小的嵌入式系统中抽象得太多是无法提供的。

同样,这种折衷依赖于一个很小的平台,为您的应用程序,这最终取决于时间对市场的相对重要性,并设有与费用,每个设备的正确选择。关于需要为大宗市场降价的说法很多,提供了很少的科学证据。最赚钱的嵌入式设备制造商之一是苹果,而不是使用微小的平台。 (哎呀,他们不是在纳斯达克了,因为它们扭曲了这么多)

如果你没有HAL,你必须改变的平台,例如你的处理器就要结束了,你有很大的难度。

如果您尝试应用YAGNI规则(你不会需要它)没有权衡研究以后可能使公司损失了一笔。

现在,如果你盲目片面的技术带你没想到一转,那么你的权衡研究将是错误的,你的公司将受到影响。

相关问题