首页 理论教育 硬件表示层:将硬件代码封装的抽象层

硬件表示层:将硬件代码封装的抽象层

时间:2023-06-28 理论教育 版权反馈
【摘要】:硬件表示层位于硬件/软件的接口之上,也就是说它位于程序开发的最底层,其主要任务就是完成对硬件功能的代码形式的表示。作为硬件的第一层抽象,HPL抽象应该为硬件模块向外提供一个功能充分定义的接口,同时,HPL组件应该与硬件紧密的绑定。事实上,HPL并不提供任何对硬件的整体抽象,而只是将相对独立的硬件代码封装起来,向更高一层的抽象组件提供一组可以操作硬件的方法。

硬件表示层:将硬件代码封装的抽象层

硬件表示层(Hardware Presentation Layer,HPL)位于硬件/软件接口之上,也就是说它位于程序开发的最底层,其主要任务就是完成对硬件功能的代码形式的表示。TinyOS中,组件对硬件进行访问的一般方法是通过内存或者I/O映射。另一方面,硬件可以发出中断信号请求服务。通过这些内部的交流渠道,HPL层隐藏了复杂的硬件接口,并提供了可读性更强的接口。

作为硬件的第一层抽象,HPL抽象应该为硬件模块向外提供一个功能充分定义的接口,同时,HPL组件应该与硬件紧密的绑定。这种绑定几乎不会给设计和实现组件留下自由的空间。但即使每个HPL组件相对于底层的硬件都是独立的,它们还是有一个大体相似的架构。为了与系统的其他部分优化整合,每个HPL应该具有以下功能:

1)提供一组能量管理策略所必须的命令,包括初始化、启动、停止硬件模块。

2)读取和设置硬件寄存器的命令。

3)经常用到的标志位设置和查看的命令。(www.xing528.com)

4)使能和禁用硬件中断的命令。

5)处理硬件中断。

HPL中的中断服务程序只处理对时间有严格要求的操作,例如拷贝一个值或清除一个标识位等,而将其余的处理交给上层的组件去做。经过硬件抽象之后,上层的程序员就只需要通过一些类似的组件接口就可以访问硬件,而不用再去搞明白那些种类繁多的寄存器名了。

除了自动操作常用的命令序列,HPL层没有提供任何实质性的硬件抽象。事实上,HPL并不提供任何对硬件的整体抽象,而只是将相对独立的硬件代码封装起来,向更高一层的抽象组件提供一组可以操作硬件的方法。这些上层的抽象组件在被使用时可能会使用属于同一种类型的不同的HPL硬件模块。例如,目前在传感器网节点中普遍使用的微控制器都包括两个用于串口通信的USART模块,他们具有相同的功能但却分属不同的寄存器来控制,并产生不同的中断向量。HPL组件将这些细小的差别封装在统一的接口内部,这样对于上层的编程者来说,切换不同的USART只是简单的与HPL组件重新连接的问题了,而不用再去对实现代码做任何的改变。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈