字符设备驱动程序的概念介绍
U-BOOT的任务是启动内核;内核的任务是启动应用程序;应用的作用是读写文件电灯等等;
应用:open,read,write;驱动也相应有接口:led_open,led_read,led_write;
下面以点亮led灯为例子:
下面是应用范围: | |||||||
应用:open; read; write; (swi val) | |||||||
c库(open等等的实现怎么样到达内核呢?执行swi val;就会引发异常,就会进入内核的异常处理函数) | |||||||
下面是内核范围(驱动也属于内核): | |||||||
SYSTEM call interface(根据swi发生呢中断的原因,调用处理函数sys_open,sys_read,sys_write) | |||||||
(VFS层:virtual Fi'le'system虚拟文件系统)sys_open,sys_read,sys_write | |||||||
驱动:led_open;led_read;led_write; | |||||||
硬件范围 |
字符设备驱动程序的框架: 1、写出led_open;led_read;led_write;
2、首先要告诉内核:
a:定义一个file_operations的结构体。
b:把这个结构告诉内核。register_chrdev();
c:谁来调用,驱动的入口函数。比如:first_drv_init()...b_init()等等
d:修饰
以一个点亮led驱动为例子:一、框架(框架如上面的总结),
二、完善;
硬件操作 1、看与原理图
2、看2440的手册
3、写代码(单片机时,操作物理地址;驱动时:操作虚拟地址,使用ioremap函数来映射,把物理地址映射为虚拟地址)
编译busybox是:1、make menuconfig;2、make;3、make install