- 博客(15)
- 资源 (15)
- 收藏
- 关注
转载 用户空间与内核空间,进程上下文与中断上下文[总结]
1、前言 最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下文。看着很熟悉,半天又说不出到底是怎么回事,有什么区别。看书过程经常被感觉欺骗,似懂非懂的感觉,很是不爽,今天好好结合书和网上的资料总结一下,加深理解。2、用户空间与内核空间 我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的3
2016-11-26 09:26:21 327
转载 select、poll、epoll之间的区别总结[整理]
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用
2016-11-25 18:16:45 211
转载 IO多路复用之epoll总结
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:#inclu
2016-11-25 18:16:19 269
转载 IO多路复用之poll总结
1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数 函数
2016-11-25 18:15:47 211
转载 IO多路复用之select总结
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。
2016-11-25 18:15:15 211
转载 Android Camera API2.0下全新的Camera FW/HAL架构简述
前沿:前面博文大多少总结的是Camera HAL1到HAL3的系统架构,但这些架构对于Camera APP开发来说依旧还是处于Camera API1.0的标准。而随着Camera3、HAL3.0等的不断更新,Google先是在Framework中更改了整个架构从而去匹配Camera API1.0的处理逻辑,随着时间的推移,Google直接对Camera API进行了全新的升级,去除了原
2016-11-03 14:32:33 511
转载 Android源码笔记——Camera系统架构
Camera的架构与Android系统的整体架构保持一致,如下图所示,本文主要从以下四个方面对其进行说明。Framework:Camera.javaAndroid Runtime:android_hardware_Camera.cppLibrary:Camera Client和Camera ServiceHAL:CameraHardwareInterface
2016-11-03 14:30:36 606
转载 MTK Android操作系统11种传感器介绍
Android操作系统11种传感器介绍1 加速度传感器2 磁力传感器3 方向传感器4 陀螺仪传感器5 光线感应传感器6 压力传感器7 温度传感器8 接近传感器9 重力传感器10 线性加速度传感器11 旋转矢量传感器在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。#define SENSOR
2016-11-03 11:10:08 1902
转载 一、MTK6580 平台 Camera 驱动整体框架
mtk平台三大件调试中,camera的调试难度最大,问题也就最多,为此特地分析了一下整个camera驱动部分实现过程,以下为camera驱动框架序列图: 从图中可以看出,整个框架分为三个部分hal部分逻辑调用,kernel层的通用驱动sensorlist.c 和具体IC的驱动xxxx_mipi_raw.c,kernel起来后不会直接去访问硬件sensor,
2016-11-03 11:05:58 1292
转载 五、从usb的插入开始
当usb设备插入接口,电压变化会通知到usb主控器,触发主控器中断,如果主控器不支持中断,那么会使用rh_timer方法,轮询接口其结果都是调用usb_hcd_poll_rh_statusvoid usb_hcd_poll_rh_status(struct usb_hcd *hcd) { struct urb *urb; int
2016-11-02 11:00:57 1339
转载 四、usb设备注册
一.usb设备驱动注册static inline int usb_register(struct usb_driver *driver) { return usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME); } usb_register_driverint usb
2016-11-02 10:58:31 1182
转载 三、usb主控器注册
第一步usb主控器设备的分配usb_create_hcd [cpp] view plain copystruct usb_hcd *usb_create_hcd (const struct hc_driver *driver,struct device *dev, const char *bus_name) { struc
2016-11-02 10:55:15 411
转载 二、usb子系统初始化
在/drivers/usb/core/Usb.c中,subsys_initcall(usb_init)声明了usb子系统入口函数usb_initstatic int __init usb_init(void) { int retval; if (nousb) { pr_info("%s: USB support disable
2016-11-02 10:52:38 1546
转载 一、usb子系统相关结构体
1. usb总线struct usb_bus { struct device *controller; int busnum; //总线号 const char *bus_name; //总线名 u8 uses_dma; u8 uses_pio_for_control; u8 otg_p
2016-11-02 10:49:47 544
Qualcomm_Crash_Analysis_Portal.7z
2020-07-08
v4l2抓取图像并保存到当地
2017-09-12
黑客帝国数字雨屏保程序
2013-12-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人