摘要: 2、文件描述符与 struct file 每一个进程都有属于自己的一个PCB(进程控制块),在创建进程的时候,PCB 被创建,当进程终止的时候 ,PCB 也随着结束。这个 PCB 则都维护这一个文件描述符表,当 open 文件的时候,返回一个文件描述符,这个文件描述符是文件描述符表索引,也就是说,文件描述符表里面的一项执行了一个已经被打开的文件(struct file... 阅读全文
posted @ 2016-05-27 09:10 qxj511 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 杂项设备,是字符设备中的特殊,它的主设备号,是 10,不同的杂项设备,通过次设备号进行区分。 1、注册与注销 完成杂项设备的注册, 可见,设备的注册和注销,都是设置到 struct miscdevice 结构体 2、struct miscdevice 结构体 结构体中,name 是注册的名字,以后将 阅读全文
posted @ 2016-05-21 10:57 qxj511 阅读(1990) 评论(0) 推荐(0) 编辑
摘要: 1、用户空间内存的申请 用户空间内存的申请函数为 malloc,相对应的内存释放函数为 free。malloc 函数具备一下的内存能力 (1)二次管理的的能力 当用户空间 malloc 了一块内存,这块被申请的内存被立即 free 之后,并不会立即将这块内存还给内核,而是将这块内存还给了 C 库,这块内存还是属于这个进程,只是将这块内存交给 C 库去进行管理。因... 阅读全文
posted @ 2016-05-19 19:27 qxj511 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 1、串口的介绍 串口的介绍, 串口发送的顺序; 1.空闲位:这里是连续的 1 2.起始位:低电平 3.数据位:对于传输的数据位这里是自己去设定传输位数,可以5、6、7、8位,但是我们一般设置为 8位 串口的数据是从低位开始发送 4.奇偶校验位:保证传输数据位中的 1 的个数是奇数还是偶数。奇校验;保证数据位中的‘1’是奇数个... 阅读全文
posted @ 2016-05-19 19:08 qxj511 阅读(1624) 评论(0) 推荐(0) 编辑
摘要: 阻塞,就是在获取资源的时候,不能获取到,那么就会将当前的进程挂起(睡眠,也就是将当前进程从调度器拿走了,不会调度当前进程),直到满足条件为止再进行操作。相反,非阻塞,就是即使不能获取到资源,非阻塞的进程是,要么是直接放弃,要么就不停地的进行查询,直到满足为止。 当上层 read 或者 write 的时候,希望是阻塞地去获取资源时候,那么底层的驱动,就应该去以阻... 阅读全文
posted @ 2016-05-11 18:55 qxj511 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 一、并发与竞争 并发是指多个 多个执行单元同时执行,而这对对共享的资源,比如硬件的资源、软件的全局变量、静态变量 的访问,很容易导致竞态, 1.1、中断屏蔽 在单核的 CPU 里,避免竞态的一个简单有效的方法是,在进入临界区之前,就屏蔽系统的中断。也就是说,在进入临界区之前,中断被关闭,使得中断与进程之间的并发不会发生,而且,因为进程的调度器是依赖于中断来实现... 阅读全文
posted @ 2016-05-11 18:06 qxj511 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 1、目录命令的学习 1.1、ifconfig ifconfig // 查看网卡等 信息 ifconfig eth0 + IP // 设置网卡 IP ifconfig eth0 down/up 网卡开关 1.2、mount/umount 实现 nfs 网络文件系统的挂载,一般的格式是: mount –t type –o optlist ... 阅读全文
posted @ 2016-05-09 17:29 qxj511 阅读(305) 评论(0) 推荐(0) 编辑
摘要: udev 机制,主要实现的是当设备连接系统的时候,在 /dev 目录下,自动创建设备节点。 1.1、工作方式 当设备连接或者移除的时候,内核会发出热拔插事件(hotplug event),而热拔插的时候,设备的详细的信息会由内核通过 netlink 套接字发送出来,发送出来的事情,我们称之为 uevent。udev 基址,就根据这些内核发出来的信息,去创... 阅读全文
posted @ 2016-05-07 18:29 qxj511 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 学习了 GPIO_newbule 之后,一血关于映射上面的问题总结。 1、映射方法 实现映射的方法是通过:ioremap ,IO_ADDRESS 这两种方法,实现物理和虚拟地址的映射,它们返回的结果就是虚拟地址了,但是这两种方法的区别是: ioremap : 动态映射,一般是在外围的控制器的地址。当 映射的时间,是当加载相对应函数的是,才完成映射的操... 阅读全文
posted @ 2016-05-07 18:29 qxj511 阅读(894) 评论(0) 推荐(0) 编辑
摘要: 一、字符设备驱动的结构 1、cdev 结构体 struct cdev { struct kobject kobj; // 内嵌的Kobject对象 struct module *owner; // 所属的模块 const struct file_oper... 阅读全文
posted @ 2016-05-07 18:28 qxj511 阅读(206) 评论(0) 推荐(0) 编辑