==============内核驱动框架基本=============
- 驱动代码编写参考pin4test.c
- 内核驱动编译
a1.把驱动代码拷贝到driver/char
a2.修改Makefile,告诉编译器,要编译该驱动文件
a3.ARC=arm CROSS_COMPILE=arm-linux-gnueabihf-KERNEL=kernel7 make moudules
=============驱动测试步骤===============
内核驱动安装:sudo insmod xxx.ko
内核驱动卸载:sudo rmmod xxx不需要写ko
查看内核模块 ismod
验证步骤:
- 装载驱动
- 驱动装载后生成设备比如/dev/pin4。通过sudo chmod 666 /dev/pin4 添加访问权限
- 运行测试程序调用驱动
- 内核的printk 是内核层的printf ,通过dmsg查看打印信息
=====================================================================
shell 壳:shell也是一个应用程序,提供了用户去操作内核的一个工具,我们在终端上面输入指令的时候,一回车就启动了一个shell,shell把你回车的字符拿来运行,启动了某个应用程序,这个应该程序会和内核打交道,产生一些结果
open调用以后会产生一个软中断,软中断为了响应快速,用汇编实现了sys_call,sys_call通过栈调用相关函数sys_open,sys_open会去内核驱动列表里面,根据设备名和设备号找到相关驱动函数,调用驱动函数里面的open,去设置io口引脚的电频