自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(14)
  • 收藏
  • 关注

转载 IPC进程通信

进程间通信(IPC)介绍 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 以Linux中的C语言编程为例。 一、管道 管道,通常指

2016-10-14 10:27:22 78

翻译 总线设备驱动模型

一、总线模型 linux 2.6开始提供全新的设备模型。 以USB总线为例,假设USB总线上链接鼠标驱动、键盘驱动、网卡驱动等等,此时将网卡插入USB总线上,这是USB总线就会挨个查找总线上的驱动,知道找到相应的网卡驱动,然后将控制权交给网卡驱动,由网卡驱动程序操作设备,同样,在USB总线拔掉网卡时,也会找到相应驱动程序来处理拔掉的事件。 总线: 1、总线描述结构:linux内核中由bus

2016-02-01 22:02:05 69

翻译 阻塞型驱动设计

一、阻塞必要性:如调用read,设备没有数据,但是以后会有,或者一个进程试图向设备写入数据,但是设备暂时还没准备好接受数据,这些类似情况下驱动程序应该(缺省的)阻塞进程,使它进入等待状态,直到情况可以满足。  二、内核等待队列:就是阻塞的进程的“候车室” 使用方法: 1、定义等待队列:wait_queue_head_t  my_queue 2、初始化等待队列:init_waitqueue_

2016-01-31 14:45:18 135

翻译 按键定时器去抖

linux中使用定时器去抖主要是因为性能问题,for循环也可以去抖,但是会影响机器性能,所以linux中都使用定时器去抖,解决机械按键的抖动问题。 linux内核中使用struct  timer_list来描述一个定时器: struct  timer_list { sturct  list_head  entry; unsigned  long  expires; void  

2016-01-31 12:41:04 154

翻译 中断分层

一:中断嵌套 1、软终端 2、tasklet 3、工作队列(使用最多的方式) linux内核使用struct  work_struct来描述一个工作队列 struct  workqueue_struct { struct  cpu_workqueue_sturct  *cpu_wq; stuct  list_head  list; const  char  *name;

2016-01-31 12:26:14 160

翻译 Linux中断处理程序

裸机中断:  1、有统一的入口,去中断向量表找对应中断 2、事先要注册中断处理程序 3、根据中断源的编号调用中断处理程序 linux系统中:1、也同样有统一入口,在irq_svc中 :①拿到产生中断源的编号        ②根据中断号找到相应的irq_desc     ③根据irp_desc找到事先注册好的中断处理程序去运行 与裸机不同就是linux系统更复杂一些,套入比裸机多的结构去

2016-01-24 22:16:56 247

翻译 混杂设备驱动模型

混杂设备属于字符设备,有相同的主设备号(都是10),不同的次设备号。所有的混杂设备形成一个链表,对设备访问时,内核根据次设备号查找相应的混杂设备。 linux中使用struct  miscdevice来描述一个混杂设备。 struct  miscdevice{ int  minor;     次设备号 const  char   *name     设备名 const    struct

2016-01-24 21:42:54 136

翻译 字符设备控制

一:字符设备控制理论: 大部分驱动程序除了提供读写设备能力,还需要具备设备控制的能力。例如改变波特率。 控制设备使用ioctl系统调用函数。当使用ioctl系统调用时驱动程序将由:2.6.36之前的内核使用ioctl, 2.6.36以后的内核使用unlocked_ioctl cmd通过上述两个函数发送下去。 二:实现字符设备控制: 定义命令:命令就是一个整数,通常这个整数被分为几段:类

2016-01-21 22:04:41 93

翻译 字符驱动访问

驱动访问模型:          read                         xx_read       write                         内核 xx_write                                    应用程序 驱动程序 应用程序在调用read时,代码转为汇编后,通过svc转到内核当中,然后将相应的read的系统调用号

2016-01-21 21:37:06 98

翻译 编写字符驱动步骤

1、编写驱动文件:①驱动初始化: 分配cdev 初始化cdev 注册cdev 硬件初始化   ②实现设备操作:write、read、lseek等的实现   ③注销驱动:cdev_del  unregister_chrdev_region

2016-01-19 22:54:14 112

翻译 使用字符设备驱动

创建字符设备两种方式:1:使用makenod  ,     makenod  /dev/文件名  C  主设备号  从设备号 字符设备文件通过主设备号与字符驱动程序建立起对应的联系 驱动程序通过次设备号去得分同类设备 linux内核中使用dev_t类型定义设备号,实质是32位的unsigned int 高12位为主设备号,低20位为次设备号 可以使用MKDEV宏组合   例如:dev_t

2016-01-17 13:45:51 137

原创 Uboot移植

1:将D:\嵌入式学习\国嵌学院\专业体系2-精通嵌入式\第4季-内核驱动奥秘多\上学期\专题2-U-Boot新手入门\相关代码\TQ2440内的uboot_tq2440.tar.gz及uImage拷贝到相关文件夹 2:将uboot_tq2440.tar.gz解压 3:配置uboot        ①make TQ2440_config        ②make ARCH=arm CROS

2016-01-17 12:41:02 58

转载 VM网络连接出错

1:记录网口的实际地址,执行ifconfig eth0  其中HWaddr后面就是网口实际的mac地址 2:更改配置文件中的mac地址 打开eth0的网口配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0 (该地址可能随着不同的操作系统有所不同) 在文件中寻找 HWADDR= 这行,如果没有就新加一行

2016-01-17 12:36:41 143

转载 简单汇编命令

递增或递减寄存器的值: inc reg(8,16,32) dec reg(8,16,32) 这两个指令往往用于循环中对指针的操作,更需要说明的是,某些时候我们有更好的方法去处理循环,例如使用loop指令,或rep前缀。 将寄存器的数值与另一寄存器或立即数的值相加,并存回此寄存器: add reg32,reg32/imm(8,16,32) add reg16,reg16/imm(8,16

2013-12-30 22:57:06 62

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除