Architecture 在驱动层之上或之下定义HAL?

Architecture 在驱动层之上或之下定义HAL?,architecture,embedded,driver,hal,Architecture,Embedded,Driver,Hal,在定义嵌入式系统体系结构时,在定义HAL时有两种选择- 在驱动程序层上定义HAL(这意味着需要为您移植到的每个平台重写驱动程序) 在驱动层下定义HAL(这意味着需要为您要移植到的每个平台重写HAL) 哪一个更好?为什么?简短回答:是的 有一个HAL(或者在驱动程序下面有一个稳定的驱动程序ABI是很好的,特别是对于驱动程序编写者) 拥有HAL以上的驱动程序对应用程序程序员来说很好 两种方法都可以:查看Unix设备驱动程序;相当轻便。[但Endian ness仍然会咬人] 哪个更好取决于嵌入式体

在定义嵌入式系统体系结构时,在定义HAL时有两种选择-

  • 在驱动程序层上定义HAL(这意味着需要为您移植到的每个平台重写驱动程序)
  • 在驱动层下定义HAL(这意味着需要为您要移植到的每个平台重写HAL)
哪一个更好?为什么?

简短回答:是的

有一个HAL(或者在驱动程序下面有一个稳定的驱动程序ABI是很好的,特别是对于驱动程序编写者) 拥有HAL以上的驱动程序对应用程序程序员来说很好

两种方法都可以:查看Unix设备驱动程序;相当轻便。[但Endian ness仍然会咬人]

哪个更好取决于嵌入式体系结构的产品开发路线图

让我们来举几个例子

假设它是一种商业产品,而您的公司认为不需要跨平台移植。在这种情况下,你不在乎

如果您的公司正在使用它,例如电视机,预计平台会改变,但设备会保持不变(电视是电视也是电视,但最便宜的micro会随着时间的推移而改变),那么您会选择驱动程序下方的hal,并保留对驱动程序的投资

如果你的公司生产智能手机,处理器会改变,设备也会改变,随着分辨率的改变,会增加额外的传感器。。。因此,在这种情况下,您将使用驱动程序上方的hal,并保持大部分软件负载是通用的

如果你在嵌入式系统中加入两个HAL,你就有可能成为一名建筑宇航员。如果两个HAL(运行时和设计时)的成本超过了跨平台移植所节省的劳动力,那么这就是浪费时间和金钱

在HAL中投入多少精力同样是一种权衡。在一个小型嵌入式系统中无法提供太多的抽象信息

同样,这种权衡取决于一个微型平台是否适合您的应用程序,这最终取决于上市时间和功能与每台设备成本的相对重要性。很多人都在说,在批量市场上需要降低成本;几乎没有提供科学证据。最赚钱的嵌入式设备制造商之一是苹果,它没有使用一个小型平台。(见鬼,他们不在纳斯达克了,因为他们扭曲了太多)

如果您没有HAL,并且您必须更改平台,例如,您的处理器生命周期结束,那么您将面临一个巨大的困难重写

如果你在没有权衡研究的情况下尝试应用雅格尼规则(你不会需要它),那么你可能会让公司在以后损失一大笔钱

现在,如果你在技术上盲目地做出你意想不到的转变,那么你的权衡研究将是错误的,你的公司将蒙受损失