1、u-boot烧写到flash中时要选择offset为0,因为要保证u-boot在flash的0位置。
2、块设备由于有缓存,故可以随机访问。在一般的Unix中,块设备一般是一次访问512(或者512的整数倍)的大小的。但是在Linux中块设备可以按字节来访问,所以块设备可字符设备只是接口不同。
3、网络驱动的接口通常是一个硬件设备(eth0),但是也可以是一个纯软件的(回环lo),一个网络接口负责接收和发送报文。
4、应用程序通过/dev下的设备文件(又称设备节点)来与驱动程序进行交互。如第一个串口的设备文件是(ttys0)。设备文件有字符设备文件和块设备文件。
5、在 Documentation/devices.txt中可以查看被系统已经使用过的设备号。内核中用dev_t来描述设备号,通过宏函数MAJOR(dev_t dev),和MINOR(dev_t dev)来提取主次设备号。
6、mknod 类型 名字 主 次
7、字符设备中的三个重要数据结构:
struct file
struct inode
struct file_operations
8、struct file:系统中每打开一个文件,在内核中就创建了一个struct file结构体与之对应,关闭文件时就释放该结构体。它描述了设备的一些动态信息,如读写位置、操作方法集、等。
9、struct inode:表示物理上存在的设备文件它和file结构体不同,因为一个设备文件可以被多次打开此时对应对各file结构体,但是只有一个设备节点inode;它描述了设备的一些静态信息:如设备号、设备类型、指向cdev结构体的指针,等等。
10、struct file_operations:操作方法集,里面是一些指向驱动中的函数,对于不支持的函数保留为NULL。read、write、open、lseek、poll、release、ioctrl、mmap等函数。[像视频等比较大的文件,用mmap函数将内核中的某一块内存空间映射到用户空间以加快效率]。.owne=THIS_MODULE
11、内核像用户空间读写要经过cache,fsync函数实现时同步还是异步。同步则强制刷新cache。
驱动复习(mor8)
最新推荐文章于 2020-12-21 11:32:13 发布