企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
编译了驱动程序freg之后,我们就可以通过proc文件系统和devfs文件系统来验证它的功能是否正确。我们首先使用前面在2.1.4小节中得到的内核镜像文件zImage来启动Android模拟器,然后用adb工具连接上它,最后就可以使用cat和echo命令来读写/proc/freg文件或者/sys/class/freg/freg/val文件的内容了,即读写虚拟硬件设备freg的寄存器val的内容。如果读出来的内容与上次写入的内容相同,就说明我们为虚拟硬件设备freg所编写的驱动程序freg是正确的。 在读写虚拟硬件设备freg的寄存器val的内容之前,我们需要检查设备上的/dev目录下是否存在一个设备文件freg。如果存在,就说明驱动程序freg成功地将虚拟硬件设备freg注册到设备文件系统中了。 ~~~ USER@MACHINE: ~/Android$ emulator -kernel kernel/goldfish/arch/arm/boot/zImage & USER@MACHINE: ~/Android$ adb shell root@android:/ # cd dev root@android:/dev # ls freg freg ~~~ 接下来,我们就进入到/proc目录中,首先使用cat命令读取文件freg的内容,然后使用echo命令往文件freg中写入一个新的内容,最后使用cat命令将文件freg的内容读取出来,看看是否与上次写入的内容相同。 ~~~ root@android:/proc # cat freg 0 root@android:/proc # echo '5' > freg root@android:/proc # cat freg 5 ~~~ 如果能看到上面的输出,就说明我们能够使用proc文件系统接口来访问虚拟硬件设备freg的寄存器val的内容,即说明前面所开发的驱动程序freg的功能是正确的。 最后,我们进入到/sys/class/freg/freg中,首先使用cat命令读取val文件的内容,然后使用echo命令往文件val中写入一个新的内容,最后使用cat命令将文件val中的内容读取出来,同样是检查它是否与上次写入的内容相同。 ~~~ root@android:/sys/class/freg/freg # cat val 5 root@android:/sys/class/freg/freg # echo '0' > val root@android:/sys/class/freg/freg # cat val 0 ~~~ 如果能看到上面的输出,就说明我们能够使用devfs文件系统接口来访问虚拟硬件设备freg的寄存器val的内容,同样说明前面所开发的驱动程序freg的功能是正确的。 以上两种方法只验证了驱动程序freg所提供的proc和devfs文件系统访问接口是正确的,我们还需要进一步验证它所提供的dev文件系统访问接口也是正确的,即能正常读写设备文件/dev/freg的内容。由于设备文件/dev/freg的内容是二进制格式的,因此,使用cat和echo命令来读写它的内容不够直观,在接下来的2.2小节中,我们将通过编写一个C可执行程序来直观地验证它的dev文件系统访问接口的正确性。