解决方案 »

  1.   

    LZ你太高端了。。研究的挺深的。
    LINUX内核就是LINUX内核,这个我没看过。
    HAL就是硬件抽象层,是硬件驱动的一个抽象形式,给上面C++层用的。
    JNI是java framework下面的一层。我理解他们之间的联系是,java app调用java api,java api依赖jni,jni有c++本地方法支持,C++部分分成两半,一般是Client端,一般是service端,其间通过binder机制实现通信,service端层层调用最终调到的就是HAL硬件抽象层。粗浅理解,求指教。
      

  2.   

    实际上HAL对于linux内核来说就相当于应用程序,内核驱动提供访问硬件的接口,而HAL的主要目的就是把这些接口进行封装。让用户看不到是如何操作硬件接口的。达到保密的效果。而JNI也就是native层 所做的就是将HAL包装好的接口 进行处理暴露给JAVA
      

  3.   

    HAL硬件抽象层,
    第一个目的是统一接口,驱动写在HAL层。
    第二个目的是保护技术机密,无需开源代码。
    HAL提供了统一的 注册模块,调用模块的接口。
    C/C++ 在Framework中实现 调用HAL中的接口,JAVA层通过JNI来调用 C/C++接口