在Ubuntu上为Android系统内置C可执行程序测试Linux内

在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/proc/hello和devfs系统属性文件/sys/class/hello/hello/val。进一步,还通过cat命令来直接访问/proc/hello和/sys/class/hello/hello/val文件来,以验证驱动程序的正确性。在这一篇文章里,我们将通过自己编写的C可执行程序来访问设备文件/dev/hello。可能读者会觉得奇怪,怎么能在Android系统中用C语言来编写应用程序呢?Android系统上的应用程序不都是Java应用程序吗?其实是可以的,读者不妨用adb shell命令连上Android模拟器,在/system/bin目录下可以看到很多C可执行程序,如cat命令。今天,我们就来学习一下怎么在Android系统中添加用C语言编写的可执行程序吧。

一. 参照在Ubuntu上为Android系统编写Linux内核驱动程序一文,准备好Linux驱动程序。使用Android模拟器加载包含这个Linux驱动程序的内核文件,并且使用adb shell命令连接上模拟,验证在/dev目录中存在设备文件hello。

二. 进入到Android源代码工程的external目录,创建hello目录:

linuxidc@:~/Android$ cd external

      linuxidc@:~/Android/external$ mkdir hello

      三. 在hello目录中新建hello.c文件:  

 

#include <stdio.h>    #include <stdlib.h>    #include <fcntl.h>    #define DEVICE_NAME "/dev/hello"    int main(int argc, char** argv)   {       int fd = -1;       int val = 0;       fd = open(DEVICE_NAME, O_RDWR);       if(fd == -1) {           printf("Failed to open device %s./n", DEVICE_NAME);           return -1;       }              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;   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjxxy.html