android底層開發執行個體LED

來源:互聯網
上載者:User

一、代碼講解
1、 編寫HAL層代碼
一般來說HAL moudle需要涉及的是三個關鍵結構體:
        struct hw_module_t;
        struct hw_module_methods_t;
        struct hw_device_t;
下面結合代碼說明這3個結構的用法
檔案:/hardware/modules/include/weiyan/led.h


檔案:led.c

2.JNI層檔案:/frameworks/base/service/com_mokoid_server_LedService.cpp

3.Framework層的service,檔案:/frameworks/base/service/java/com/weiyan/server

 

4.APP 測試程式 (屬於APP層)
    APP層兩種調用模式
(1)Android的app可以直接通過service調用.so格式的jni

(2)經過Manager調用service

Manager (屬於Framework層)

因為LedService和LedManager在不同的進程,所以要考慮到進程通訊的問題。Manager通過增加一個aidl檔案來描述通訊介面
檔案:weiyan/frameworks/base/core/java/weiyan/hardware/ILedService.aidl
package mokoid.hardware;

interface ILedService
{
    boolean setOn(int led);
    boolean setOff(int led);
}  
  系統的aidl工具會將ILedService.aidl產生ILedService.java檔案,實現IledService

SystemServer (屬於APP層)檔案:
/apps/LedTest/src/com/weiyan/LedTest/LedSystemServer.java

二、APP 測試程式
檔案:weiyan/apps/LedTest/src/com/weiyan/LedTest/LedTest.java

載入方法
1、把光碟片提供的weiyan.tar.gz解壓到/opt/ android_froyo_smdk
  $ cd   /opt/ android_froyo_smdk
  $ tar  -jxvf weiyan.tar.bz2
2、修改build/core/config.mk檔案防止編譯找不到led.h標頭檔
  $cd  /opt/ android_fsroyo_smdk
  $gedit build/core/config.mk
  找到SRC_HEADERS := \
        $(TOPDIR)system/core/include \
   在後面加入
$(TOPDIR)weiyan/hardware/modules/include

3、編譯工程
 $ source  /opt/android_froyo_smdk/build/envsetup.sh
$ export   TARGET_PRODUCT=sec_smdkv210
$mmm   /opt/android_froyo_smdk/weiyan

編譯成功後會如下路徑產生apk檔案,庫檔案,jar包等
/opt/android_froyo_smdk/out/target/product/smdkv210/system/app/LedClient.apk
/opt/android_froyo_smdk/out/target/product/smdkv210/system/app/LedTest.apk
/opt/android_froyo_smdk/out/target/product/smdkv210/system/framework/ledctl.jar
/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/hw/led.smdkv210.so
/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/libled.so
/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/libmokoid_runtime.so
把LedClient.apk, LedTest.apk放到android的system/app目錄,把ledctl.jar放到system/framework目錄,把led.smdkv210.so放到system/lib/hw目錄,把ibled.so,
libmokoid_runtime.so放到system/lib目錄下

4、為了android案頭能顯示我們的LedClient.apk, LedTest.apk程式,把weiyan/frameworks/base/service/com.weiyan.server.xml放到android的
system/etc/permissions目錄下
5、載入led驅動模組
   把leds.ko複製到android 的system目錄下,執行
   #insmod leds.ko
   #chmod 666 /dev/leds

6、運行LedClient.apk, LedTest.apk

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.