現在繼續在該系列第一篇的基礎上,開發對應的hal程式,
參照:步驟如下:
<1> 裝置檔名還是callleds,callleds.h標頭檔案放在android系統源**hardware/libhardware/include/hardware目錄下,內容如下:
#ifndef android_callleds_inte***ce_h__<2> : 上面callleds.h具體實現的callleds.c檔案放在hardware/libhardware/modules下,一般需要根據不同裝置在這個目錄下先見乙個自己對應的資料夾,這裡再新建乙個callleds資料夾,將callleds.c檔案放入這個資料夾中,callleds.c的內容如下:#define android_callleds_inte***ce_h__#include
__begin_decls
#define callleds_hardware_module_id "callleds"
struct
callleds_module_t;
struct
callleds_device_t;
__end_decls
#endif
<3> : 要編譯上面的程式,就需要在callleds.c同目錄下新建乙個android.mk的檔案,內容如下:
local_path :=$(call my-dir)<4> 修改許可權,只有修改許可權以後,上層的應用才能夠呼叫這些介面.include $(clear_vars)
local_module_tags :=optional
local_prelink_module:=false
local_module_path:=$(target_out_shared_libraries)/hw
local_shared_libraries :=liblog
local_src_files :=callleds.c
local_module := callleds.default
include $(build_shared_library)
解決辦法是類似於linux的udev規則,開啟android源**工程目錄下,進入到system/core/rootdir目錄,裡面有乙個名為ueventd.rc檔案,往裡面新增一行:
/dev/callleds 0666 root root
新增到同型別最後一行,上面可以直接複製一下,改一下名字就可以了.
<5> 完成上面的,基本上就就緒了,在android源**根目錄下執行:
. build/envsetup.sh由於我不常用mmm,一般用mm,所以切換目錄到callleds.c的目錄下,執行 : mm
<6> : 執行後的結果的檔案目錄:
編譯成功後,就可以在out/target/product/generic/system/lib/hw目錄下看到callleds.default.so檔案了.參見下圖:
Android測試驅動開發實踐
在android應用開發中,相信很少有人在堅持先由設計人員做完整的概要設計 詳細設計,然後交給程式設計師進行編碼實現了。通常是在有乙個大體框架的情況下,就開始進行具體編碼開發了。在這種情形下,開發速度可以有很大的提高,但是最終 質量卻不可避免的降低了。如何能既保持開發速度,同時又能保證開發質量呢?相...
Android 驅動編寫LED NDK程式
1.首先編寫linux核心模組led?include include include include include include include include module license gpl define gpm4con 0x110002e0 define gpm4dat 0x11000...
led 驅動程式測試
1.首先驅動程式檔案通過tftp傳輸到開發板上,然後執行insmod s3c led.ko 裝載led驅動模組 2.cat proc devices grep led,顯示led 250 3.建立裝置節點 mknod dev led0 c 250 0 mknod dev led1 c 250 1 m...