測試Linux核心驅動程式

2021-08-08 05:09:49 字數 2022 閱讀 4465

在編寫linux核心驅動程式中,我們介紹了如何在ubuntu上為android系統編寫linux核心驅動程式。在這個名為hello的linux核心驅動程式中,建立三個不同的檔案節點來供使用者空間訪問,分別是傳統的裝置檔案/dev/hello、proc系統檔案/proc/hello和devfs系統屬性檔案/sys/class/hello/hello/val。

在這一篇文章裡,我們將通過自己編寫的c可執行程式來訪問裝置檔案/dev/hello

進入到android源**工程的external目錄,建立hello目錄

在hello目錄中新建hello.c檔案:

#include 

#include

#include

#define device_name "/dev/hello"

int main(int argc, char** argv)

printf("read original value:\n");

read(fd, &val, sizeof(val));

printf("%d.\n\n", val);

val = 5;

printf("write value %d to %s.\n\n", val, device_name);

write(fd, &val, sizeof(val));

printf("read the value again:\n");

read(fd, &val, sizeof(val));

printf("%d.\n\n", val);

close(fd);

return

0;

}

這個程式的作用中,開啟/dev/hello檔案,然後先讀出/dev/hello檔案中的值,接著寫入值5到/dev/hello中去,最後再次讀出/dev/hello檔案中的值,看看是否是我們剛才寫入的值5。從/dev/hello檔案讀寫的值實際上就是我們虛擬的硬體的暫存器val的值。

在hello目錄中新建android.mk檔案:

local_path

:= $(call my-dir)

include

$(clear_vars)

local_module_tags

:= optional

local_module

:= hello

local_src_files

:= $(call all-subdir-c-files)

include

$(build_executable)

注意,build_executable表示我們要編譯的是可執行程式。

mmm ./external/hello
編譯成功後,就可以在out/target/product/gerneric/system/bin目錄下,看到可執行檔案hello了。

make snod
這樣,重新打包後的system.img檔案就包含剛才編譯好的hello可執行檔案了

執行模擬器,使用/system/bin/hello可執行程式來訪問linux核心驅動程式

「` user-name@machine-name:~/android$ emulator -kernel ./kernel/common/arch/arm/boot/zimage &

user-name@machine-name:~/android$ adb shell

root@android:/ # cd system/bin

root@android:/system/bin # ./hello

read the original value:

0.write value 5 to /dev/hello.

read the value again:

5.

看到這個結果,就說我們編寫的c可執行程式可以訪問我們編寫的linux核心驅動程式了。

linux 驅動程式 高階字元驅動程式

ioctl方法 驅動程式的原型實現 int ioctl struct inode inode,struct file filp,unsigned int cmd,unsigned long arg ioctl 命令選擇 位段結構 number direction ioc read ioc write...

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...

linux裝置驅動程式 字元裝置驅動程式

先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...