免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10150 | 回复: 15
打印 上一主题 下一主题

android HAL与linux HAL有什么不同 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-26 11:07 |只看该作者 |倒序浏览
问过很多NB的高手,都说不出来,我赌这里也没人说得清

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
2 [报告]
发表于 2012-02-26 12:54 |只看该作者
本帖最后由 linuxfellow 于 2012-02-26 12:57 编辑

你问的是BSP吧?
HAL指的是hardware abstract layer;是application根据自己的平台配置提供的一层封装,目的是是上层的application能在不同的平台和配置上方便移植。应由用户自己实现,open source 基本上不提供这一层。HAL给application提供的API完全由application决定.没有一个供应商能提供一个HAL让所有或大部分application满意。如果他们为不同application提供不同的 HAL, HAL就显得混乱。 还有一般Application的API,公司也是保密的,不愿意公开。
BSP倒是有一些,这是提供hardware和OS之间的一层,都在open source里。 BSP的出现是为了OS能在不同平台配置之间方便移植。

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 赞一个!

查看全部评分

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
3 [报告]
发表于 2012-02-27 08:25 |只看该作者
你赢了。

论坛徽章:
0
4 [报告]
发表于 2012-02-27 09:50 |只看该作者
回复 2# linuxfellow


    请问BSP、HAL和driver怎么区分,大侠请详述一下吧

论坛徽章:
0
5 [报告]
发表于 2012-03-01 20:48 |只看该作者

两天一顶
顶到高手出现为止

论坛徽章:
0
6 [报告]
发表于 2012-03-09 21:10 |只看该作者
不顶了,我自己做高手吧

androd HAL不过是加了一层用户态的封装而已,这样也许在类似smartphone这样的智能设备中,APP使用设备方便些

不过我没有体验(比如本地库使MODULE_ID类的东西来标识设备,而java则使用service),APP使用设备功能无非是调用API,而API怎么变它也不过是一些名字和编号,不管是使用设备文件,还是设备号,还是module_ID,还是函数名或者class/service名

另外一个好处是, HAL在用户态,可以方便的加一些额外的公共处理

仅此而已,至少没有想象中的那么NB

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
7 [报告]
发表于 2012-03-10 01:01 |只看该作者
Android的HAL就是很普通的中间层。它只不过把已经抽象的东西再抽象一次。硬件被操作系统抽象了,在LINUX中大抵体现在FS上。一般的情况是,操作系统对各种硬件作出统一接口设计,驱动程序实现这个接口。应用程序通过文件接口,继而通过驱动程序,操作硬件。所以驱动程序,广义上是让硬件工作的代码,狭义上是实现操作系统为此类硬件设计且期望的接口。

应用层看不到硬件或者驱动上的差别,因为它们最终呈现出的接口是一样的。而Android的hal则将这种机制再抽象一层:上层连文件系统接口都看不到了,只看得到Android设计的一套接口。这套接口在Linux上可能是对文件结点操作,如果有可以在其它操作系统上实现,也许会有其它形式。总之,跟之前的抽象一样,由于只看得到接口,因此只使用接口,只假定接口,接口以下的实现就不管了。针对接口操作,针对接口编程。

另外,HAL层在用户态的一个好处是,可以以闭源形式发布”驱动”。内核中的驱动代码仅暴露出基本的读写寄存器接口,这部分可以公开。而直正读写寄存器操作硬件的逻辑则在HAL层里实现,这部分则闭源发布二进制。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
8 [报告]
发表于 2012-03-10 09:03 |只看该作者
tempname2 发表于 2012-03-10 01:01
Android的HAL就是很普通的中间层。它只不过把已经抽象的东西再抽象一次。硬件被操作系统抽象了,在LINUX中大 ...

你很谦虚,把最NB这一头衔留给别人。

论坛徽章:
0
9 [报告]
发表于 2012-03-10 12:33 |只看该作者
谁写过android APP?有了HAL, APP使用设备功能是不是真的方便些?

论坛徽章:
0
10 [报告]
发表于 2012-03-10 16:43 |只看该作者
tempname2 发表于 2012-03-10 01:01
Android的HAL就是很普通的中间层。它只不过把已经抽象的东西再抽象一次。硬件被操作系统抽象了,在LINUX中大 ...



另外,HAL层在用户态的一个好处是,可以以闭源形式发布”驱动”。内核中的驱动代码仅暴露出基本的读写寄存器接口,这部分可以公开。而直正读写寄存器操作硬件的逻辑则在HAL层里实现,这部分则闭源发布二进制。

这个说法遍地都是。能否举一个具体的例子,android手机上的什么驱动放在HAL/用户态中?

我看过一些android架构介绍文档,基本上驱动都是放在内核态

linux本身也支持用户态驱动,比如framne buffer,但是linux的各种设备驱动基本上都是放在内核态中的。把所有驱动都放在用户态,这对linux等OS来说是极大的改动,甚至是成为基本的微内核架构,不是简单一个HAL就能搞定的,如果网卡驱动放到了用户态,那么协议栈是不是也要放到用户态?

把驱动放在用户态闭源就可以隐藏设备寄存器接口技术信息了么?比较复杂的软件如果想保护里面的实现知识产权,都是要加密的,否则反汇编、反编译、逆向工程就可以搞定了。驱动如果也加密,可想而知那个效率


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP