Android驅動開發-- 2.測試驅動程序

LED driver驅動可以正常加載後,需要寫一個測試程序在用戶空間測試一下驅動,測試LED驅動程序是否能控制LED的點亮或熄滅。

方法是寫一個C的測試代碼,編譯後在用戶空間執行,和操作文件的命令一樣打開LED driver驅動設備文件,寫LED driver驅動設備文件,實現控制LED等。


一、在linux-3.4/driver/char目錄下新建myled文件夾,新建一個LED_test.c文件。

#include <sys/types.h>
#include <sys/stat.h>
#include <linux/fs.h>  
#include <asm-generic/fcntl.h>  
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int fd;
    int val = 3;


    //打開myled設備
    fd= open("/dev/myled",O_RDWR);   
    if(fd < 0)
        printf("can't open!\n");
    
   //如果輸入的指令數量等於2,則提示輸入on或off
    if (argc !=2)
    {
        printf("Usage :\n");
        printf("%s <on|off> :\n", argv[0]);
        return 0;
    }
   
    //輸入on/off,給對應的變量val賦值1/0
    if (strcmp(argv[1], "on") == 0)
    {     
        val = 1;
    }
    else
    {
        val = 0;
    }

     //將用戶空間的數據傳遞到內核層
    write(fd, &val, sizeof(int));
    
    close(fd);
    return 0;
}

二、編譯代碼,在Ubuntu操作系統完成。
Cubieboard源碼裏面帶了gcc編譯器,爲了使編譯器版本相同,採用源碼的編譯器編譯。
在linux-3.4/driver/char/myled目錄下,輸入如下終端命令,編譯後可以在linux-3.4/driver/char/myled目錄看到一個LED_test可執行文件。
lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-gcc -static LED_test.c -o LED_test

三、測試
將編譯好的LED_test拷貝到Android文件系統的目錄下。
開機啓動系統,從串口登錄進目標板系統,在Ubuntu命令行終端操作LED_test執行文件。
1. 在命令行輸入如下指令點亮LED燈
./LED_test on
開發板LED燈點亮(見下圖):


2. 在命令行輸入如下指令熄滅LED燈
./LED_test off
開發板LED燈熄滅(見下圖):


如LED能正常工作,說明上一節的LED驅動成功控制LED燈。

上述測試代碼也可以放在Android/external下,增加Android.mk makefile文件,將代碼編譯生成的bin文件裝載到out/target/product/gerneric/system/bin目錄。測試過程一樣。

接下來在HAL層增加接口文件,以便JNI層能調用到內核驅動層,下一節:Android驅動開發-- 3.HAL層。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章