自定义博客皮肤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 92

翻译 总线设备驱动模型

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

2016-02-01 22:02:05 83

翻译 阻塞型驱动设计

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

2016-01-31 14:45:18 149

翻译 按键定时器去抖

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

2016-01-31 12:41:04 165

翻译 中断分层

一:中断嵌套1、软终端2、tasklet3、工作队列(使用最多的方式)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 178

翻译 Linux中断处理程序

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

2016-01-24 22:16:56 266

翻译 混杂设备驱动模型

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

2016-01-24 21:42:54 150

翻译 字符设备控制

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

2016-01-21 22:04:41 104

翻译 字符驱动访问

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

2016-01-21 21:37:06 111

翻译 编写字符驱动步骤

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

2016-01-19 22:54:14 125

翻译 使用字符设备驱动

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

2016-01-17 13:45:51 146

原创 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 73

转载 VM网络连接出错

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

2016-01-17 12:36:41 153

转载 简单汇编命令

递增或递减寄存器的值: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 76

空空如也

空空如也

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

TA关注的人

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