自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(207)
  • 资源 (11)
  • 收藏
  • 关注

原创 V0 第18节 随机变量

1.概述随着设计变得越来越大,要产生一个完整的激励来测试设计的功能也变得越来越困难定向激励的测试方法已经无法满足检查功能完整性的要求SOC的集成度提高带来的模块之间交互的复杂度也是指数攀升,这就使得验证工程师无法预测接下来用户使用过程中会发生什么样的状态随机—约束,两个词组合在一起就构成了目前动态仿真验证的主流方法随机约束测试(CRT, Constrained-Random Test)即能够产生你感兴趣的,你想不到的测试向量,通过回归测试、替换随机种子的方式来提高单位测试用例的覆盖率收集效率随

2021-11-25 07:13:31 279

原创 V0 第17节 包的使用

1. 包的定义在大型的验证项目中,很容易出现模块重名的情况对于重名的硬件模块我们可以将它们置入到不同的编译库中对于重名的软件类、方法等,我们可以将它们置入到不同的包中我们可能使用不同的验证IP,我们也无法预测这些类名是否可能重名通过包package可以将关联的类和方法并入到同一个逻辑集合中为了使得可以在多个模块(硬件)或者类(软件)之间共享用户定义的类型,SV添加了包package用户自定义的类型譬如类,方法、变量、结构体、枚举等都可以在package…endpackage中定义2. 导

2021-11-22 21:43:38 396

原创 V0 第16节 类的继承

1.继承和子类定义过的类Packet,可以进一步扩展构成一个新的类LinkedPacket通过extends,LinkedPacket继承于其父类Packet,包括继承其所有的成员(变量/方法)class LinkedPacket extends Packet; LinkedPacket next; function LinkedPacket get_next(); get_next = next; endfunctionendclass2.成员覆盖子类可以继承父类的成员,所以

2021-11-16 23:05:49 183

原创 V0 第15节 对象拷贝

1. 句柄的传递在区分了类(抽象)和对象(具体)之后,初学者还需要区分对象(存储空间)和句柄(空间指针),也就是说,在创建了对象之后,该对象的空间位置不会更改,而指向该空间的句柄可以有多个2. 赋值和拷贝声明变量和创建对象是两个过程,也可以一步完成Packet p1;p1 = new;如果将p1赋值给另外一个变量p2,那么依然只有一个对象,只是指向这个对象的句柄有p1和p23.类的引用和实例在SV中,对于对象的拷贝,只能针对对象中的成员变量如果想要对对象中的句柄指向的对象也做拷贝

2021-11-15 22:49:21 106

原创 V0第14节 类的封装

1. 类的概述类是一种可以包含数据和方法(function, task)的类型例如一个数据包,可能被定义为一个类,类中可以包含指令、地址、队列ID、时间和数据等成员面向对象编程(OOP ,Object-Oriented Programming)使用户能够创建复杂的数据类型,并且将它们跟使用这些数据类型的程序紧密地结合在一起用户可以在更加抽象的层次建立测试平台和系统级模型,通过调用函数来执行一个动作而不是简单地改变信号的电平在验证环境中,包括stimulator,monitor,checker以及

2021-10-23 09:38:21 79

原创 V0第 第13节 数组类型

1.动态数组与之前的定长数组相比,SV提供了可以重新确定大小的动态数组动态数组在声明时需要使用[],这表示不会在编译时为其制定尺寸,而是在仿真运行时来确定动态数组一开始为空,需要使用new[]来为其分配空间int dyn[],d2[];//声明动态数组initial begin dyn = new[5]; //分配5个元素 foreach (dyn[j]) dyn[j] = j; //对元素进行初始化end内建方法size()可以返回动态数组的大小内建方法delete()可

2021-10-23 09:08:51 93

原创 V0 第12节 数组操作

1. 非组合型unpacked对于Verilog,数组经常会被用来做数据存储,例如reg[15:0] RAM [0:4095]SV 将Verilog这种声明数组的方式称为非组合型声明,即数组中的成员之间存储数据都是互相独立的Verilog也不会指定软件去如何存储数组中的成员wire[7:0] table[3:0]SV保留了非组合型的数组声明方式,并且扩展了允许的类型,包括event,logic,bit,byte,int,longint,shortreal和real类型SV也保留了Verilog索

2021-10-10 22:41:16 179

原创 V0 第11节 验证环境组件

1. 激励发生器Simulator (激励发生器)是验证环境的重要部件,在一些场合中,它被称为driver(驱动器)、BFM(bus function model,总线功能模型),behavioral(行为模型) 或者 generator(发生器)Simulator的主要职责是模拟与DUT相邻设计的接口协议,只需要关注如何模拟接口信号,使其能够以真实的接口协议来发送激励给DUTSimulator 不应该违反协议,但不拘束于真实的硬件行为,还可以给出丰富的只要协议允许的激励场景比真实硬件行为更丰富的

2021-09-28 23:52:14 458

原创 V0 第10节 硬件设计描述

1. MCDF 简介遵循硬件设计描述的方式,介绍它的结构、功能、寄存器和时序熟悉硬件描述的方式,也是进入验证领域的一项基本技能多通道数据整形器(MCDF, multi-channel data formatter),它可以将上行uplink多个通道数据经过内部的FIFO,最终以数据包data packet的形式送出上行数据和下行数据的接口协议不同多通道数据整形器也有寄存器的读写接口,可以支持更多的控制功能2. MCDF接口描述系统信号接口CLK(0):时钟信号RSTN(0):复位信号

2021-09-27 22:48:46 272

原创 V0 第9节 验证环境结构

1. 验证环境结构测试平台(testbench)是整个验证系统的总称它包括验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制从系统的意义来讲,它还包括编译仿真的流程、结果分析报告和覆盖率量化我们主要关注验证平台的结构和组件部分,他们可以产生设计所需要的各种输入,也会在此基础上进行设计功能的检查2. 测试平台结构图各个组件之间是相互独立的验证组件与设计之间需要连接验证组件之间也需要进行通信验证环境也需要时钟和复位信号的驱动3. 验证语言应用趋势SystemVeri

2021-09-26 22:54:41 343

原创 V0 第8节 接口

1. 接口Verilog 是通过模块之间进行端口连接来完成模块间通信的对于大型设计,通过端口进行连接会让硬件集成变得容易出错SV在Verilog语言基础上扩展了接口interface接口提供了一种新型的面向抽象级建模的方式接口的使用可以简化建模和验证大型复杂的设计对于以上的连接,按照Verilog的方式,我们将按照以下步骤进行对每一个子模块进行端口声明在上层环境,需要声明非常多的线网用来在各个模块之间进行连接对于标准的总线端口也不得不在多个模块重复声明相应的通信

2021-09-25 23:14:38 115

原创 V0第7节 字符串类型

1. 字符串类型Verilog语言对于字符串的处理手段非常有限SV引入了string 类型用来容纳可变长度的字符串字符串类型变量的存储单元为byte类型字符串类型变量长度为N时,其字符成员索引值为从0到N-1不同于C语言,字符串结尾没有空字符 “\0"字符串的内存是动态分配的,用户无需担心内存空间管理2. 字符串内建方法str.len();返回字符串的长度str.putc(i, c);将第i个字符替换为字符c,等同于str[i] = cstr.getc(i); 返回第i个字符st

2021-09-23 23:32:17 191

原创 V0 第 6 节自定义类型

1.自定义类型通过用户自定义类型,以往Verilog的代码将可以通过更少的代码来表示更多的功能用户自定义类型使得代码的可读性更好通过typedef来创建用户自定义类型通过enum来创建枚举类型通过struct来创建结构体类型Verilog语言无法提供方便的特性来使得用户扩展变量和线网类型SV则提供了特性使得用户可以构建更高抽象层的数据类型定义了新的数据类型,就可以利用该类型声明变量1.1 typedef创建用户自定义类型例:typedef unsigned int uint;ui

2021-09-22 23:09:23 83

原创 V0 第5节 数据类型

1. Verilog的数据类型Verilog语言提供两种基本的数据类型, 变量类型variables和线网类型nets,这两种类型都是四值逻辑,即可表示0、1、X和Z值例如reg,integer和time等变量类型可以用来存储组合逻辑或者时序逻辑的值例如wire,wor,wand和其它线网类型用来连接硬件模块,以及提供特殊的线网驱动解决方案1.1 Verilog线网类型线网用于建模硬件设计中的连接线路,而线网的值由线网驱动器所决定驱动器可以是门或模块的实例,或者连续赋值的输出1.2 V

2021-09-20 10:33:46 254

原创 V0 第4节 SV及UVM概述

1. SystemVerilog发展历史SV 是IEEE 1364-2005 Verilog标准的扩展此扩展包含了用来实现可综合设计的设计语言特性,也包含了用来对大型设计做验证的验证语言特性SV是用来建议一种新的硬件描述和验证语言(HDVL,Hardware Description and Verification Language)SV通过一种统一的语言来帮助工程师对大型复杂硬件系统进行建模,并且对其功能进行验证2. SV标准的诞生SV标准由Accellera标准组织牵头发民Accel

2021-09-16 23:34:28 2005

原创 V0 第3节 验证的周期

1. 验证周期功能验证有着一整套完备的流程,从硬件系统定义到硅后测试部分一个验证团队会基于时间差同时进行多个项目,多个项目之间存在着借鉴、更新的关系,验证的环境和复用性也是在不断提高每一个项目在进行瀑布式的开发时,验证团队也会在细分的流程当中完成任务,同时在展开下一项任务之前会进行一些重要检查点(checkpoint)的回顾工作由于验证人员会不断地在新项目中完善验证环境,验证的周期也是不断往复、螺旋上升的过程验证周期的起始点是从创建验证计划开始的,而验证计划需要参照系统工程师给出的功能详述文档

2021-09-16 22:55:20 338

原创 V0 第2节 验证的任务和目标

1.验证的目标验证的任务可能是模块级(module level)、子系统级(subsystem level) 或者系统级 (chip level)验证的目标:按时、保质、低耗 完成目标硬件设计的验证工作功能验证是唯一可以低成本在硅前流片将上述目标 按时、保持、低耗 达成的方法衡量的两个标准1)时间2)缺陷数量2.缺陷增长曲线通过缺陷数量在时间线上的记录,可以绘制出缺陷数量的增长曲线缺陷数量的增长曲线是逐渐趋于缓慢的功能验证需要保证的就是将缺陷数量的增长保证在硅前阶段,不应该让其发生

2021-09-15 23:38:55 388

原创 V0 第1节 什么是验证

1. 什么是验证是用来证明设计功能正确,并且符合设计功能描述的流程工作量主要集中在设计流片以前,而且在前端设计中占据70%的我作量是需要在流片之前确认产品的功能和系统是否符合规则和要求,看有没有“把事情做对"2. 什么是测试平台对DUT创建测试序列 激励发生器观察DUT的输入输出 检测器对DUT的输出数据与预期数据进行比对 比较器时钟/重置装置报告检查结果3. 芯片开发流程从市场人员与客户沟通开始系统设计人员按照功能划分为各个子系统子系统被进一步划分为功能模块,并由设计团

2021-09-15 23:12:35 165

原创 跟着路桑学SystemVerilog

1. 验证技术分类1. 动态验证技术动态验证技术:依靠仿真器(simulator)来对数字电路进行激励发送和结果检查。常用的,成本低的验证技术代码覆盖率功能覆盖率断言随机约束验证语言主要学习 Verilog 、SystemVerilog 、C/C++UVM (验证方法学)2.静态验证技术静态验证技术又可以分为人工形式验证技术和自动形式验证技术人工形式验证技术:property check 通过断言结合形式验证工具对设计功能进行穷举检查,从数学意义上判断设计的正确性自动形式验证:包

2021-09-14 23:45:17 286

原创 QT_For_Android环境搭建

由于OCR 的识别算法是由C++做的,Demo是用QT for Android做的,这里需要搭建QT For Android的环境Linux(Ubuntu18.04)安装QT for Android1.下载linux android 版本qthttp://download.qt.io/archive/qtqt-opensource-linux-x64-5.12.3.run2.安装qt$...

2019-09-17 11:32:22 427 1

原创 GY_91模块

1.GY-91 简介GY-91 是MPU9250+BMP280MPU9250是InvenSense出品的模块九轴传感器,它集成了陀螺仪三轴,加速度三轴,磁感应三轴MPU9250的I2C从地址为0x68BMP280:温度气压传感器2.iio子系统iio子系统的目录位于drivers/iioiio子系统全称是Industrial I/O subsystem(工业 I/O 子系统)3.i...

2019-09-16 15:17:13 5184

原创 AS提交代码到gitee

1.安装Gitee码云插件File—>Settings—>Plugins---->安装Gitee2.上传代码到giteeVCS—>Import into Version Control—>Share Project On Gitee填写gitee的用户名和密码xxxxxxPassword:xxxxxx勾选Private则为私有项目...

2018-09-29 16:06:59 2102

原创 Android APP 直接操作内核sysfs

eth_enable 是sysfs导出的一个符号,控制以太网的电源开关APP端操作节点try{ FileOutputStream fops = new FileOutputStream("/sys/devices/platform/syspower.0/eth_enable"); fops.write("1".getBytes()); fops.flush(); ...

2018-07-04 11:05:28 1206

原创 U9300C 在Linux下的调试

硬件:A83T1.驱动加入VID和PID--- a/lichee/linux-3.4/drivers/usb/serial/option.c+++ b/lichee/linux-3.4/drivers/usb/serial/option.c@@ -948,6 +948,7 @@ static const struct usb_device_id option_ids[] = {...

2018-07-04 10:13:48 3997 1

原创 开启电量的百分比

Android V5.11.直接显示在电池里--- a/android/frameworks/base/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java+++ b/android/frameworks/base/packages/SystemUI/src/com/android/systemui/Batte...

2018-07-04 09:58:16 1132

原创 EasyPermissions

Easypermissions简化了Android M的运行时权限的申请、结果处理1.地址https://github.com/googlesamples/easypermissions Android M对权限系统进行了改变 Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”...

2018-06-22 11:58:23 590

原创 gpio pinctrl

1.pinctrl驱动SoC内部都包含pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性 linux系统下采用pinctrl子系统管理所有的IO管脚# ls out/target/product/msm8998/obj/kernel/msm-4.4/drivers/pinctrl/qcom/ -l总用量 1668-rw-r--r-- 1 root r...

2018-06-13 10:45:49 675

原创 fts touchscreen

1.查找驱动触模屏驱动fts.c kernel/msm-4.4/drivers/input/touchscreen/st/fts.c ST FingerTips msm8998:/ # getevent add device 7: /dev/input/event4 name: “fts” X_AXIS_MAX: 1440 Y_AXIS_MAX: 2560 I2C接...

2018-06-12 10:17:35 1536

原创 s6e3ha3 amoled屏

1.确定系统所使用的dts串口打印:Machine: Qualcomm Technologies, Inc. APQ 8098 SKUK HDK 推测出所用的dts为apq8098-v2-qrd-skuk-hdk.dts 生成的是apq8098-v2-qrd-skuk-hdk.dtb 确定了所用的dts为kernel/msm-4.4/arch/arm/boot/dts/qcom/apq8...

2018-06-11 14:54:19 2576 2

原创 ubuntu18.04 Android 7.1.2 编译配置

1.jdk 8安装# apt install openjdk-8-jre-headless# apt install openjdk-8-jdk-headless测试:# java -versionopenjdk version "1.8.0_171"OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18...

2018-05-29 16:12:02 7391 5

原创 Python3 基础(itcast学习笔记)

1.Python变量的类型用type(变量的名字)来查看变量的类型#!/usr/bin/python3 a = 10b = 10.0c = True# ./test.py <class 'int'> <class 'float'> <class 'bool'>2.格式化符号在程序中%这样的符号是

2018-05-14 11:59:45 2565

原创 Python3 基础

环境:ubuntu16.04 Python Python 3.5.21.基础语法1)注释 单选注释# 多选注释”“” 多行注释用三个单引号 ”’ 或者三个双引号 “”” 将注释括起来#!/usr/bin/python3if True: print("Hello,Python")else: print("False")#pr

2018-05-10 17:17:17 293 1

原创 Python环境搭建

Python:是一种面向对象的解释型计算机编程语言,由1989年荷兰人发明 Python是如何运行的.py Python test.py 将test.py编译成Python Byte Code(.pyc),然后由Python虚拟机PVM解释 Python源代码.py—>Python解释器—>Python字节码.pyc—>PVM(Python虚拟机) Pyton的应用领域:...

2018-05-10 11:44:20 406

原创 QT QDbus

通过Dbus 总线,客户端调用服务端的槽函数 服务端1.新建项目QdbusTestServer在.pro工程中增加QT += dbus2.新建类 Cal定义接口和函数add(),sub()定义接口名com.example.dbus.Interface Q_CLASSINFO(“D-Bus Interface”,”com.example.dbus.Interface”)...

2018-04-13 14:21:50 1208

原创 ubuntu 安装使用dbus

ubuntu12.04 安装dbus1.下载dubs下载https://dbus.freedesktop.org/releases/dbus/ dbus-1.8.0.tar.gz2.配置编译./configure –prefix=/home/xx/dbus/install/ (安装目录) make make install3.使用dbus-daemon是...

2018-04-11 15:12:57 15182 6

原创 QT5学习总结

1.添加资源文件选中项目,右键–>添加新文件–>QT–>Qt Resource File 填写资源名称名字:img 打开img.qrc,添加前缀 / 点击添加文件,前提是文件在项目工程的目录下 2. QWidget 设置背景色(Style Sheet) sys_setting_window = new QWidget(this->s_par...

2018-04-09 16:03:18 1232 1

原创 QT Creater的安装配置

环境:ubuntu12.041.下载1)在线下载 进入官方下载页面会自动下载 https://www.qt.io/download-thank-you qt-unified-linux-x64-3.0.4-online.run2)离线下载 http://download.qt.io/archive/qt/5.5/ qt-opensource-linux-x64-5.5.0-2...

2018-04-09 09:54:52 735

原创 RTL8188EUS Anaroid M Porting

硬件imx6q 系统:android M1.参考Quick Start Guide for Driver Compilation and Installation集成驱动到内核里1)把driver源码集成到drivers/net/wireless中 kernel_imx/drivers/net/wireless/rtl8188eus 2)编译内核生成8188eu.ko-...

2018-03-23 10:37:33 1333 2

原创 imx6 内核停止启动

参考:http://blog.csdn.net/kris_fei/article/details/50848099 imx6q android7 内核停止输出错误switch to ldo_bypass mode! Starting kernel …在:imx6q-sabre...

2018-03-22 15:28:06 786

原创 电阻屏较准

硬件:imx6 ads7846电阻屏 系统:android7.1 LCD显示屏的坐标原点为左上角(800,600),触摸屏的坐标原点为右下角(xmin,ymin)1.通过驱动打印原始的坐标值static void ads7846_report_state(struct ads7846 *ts) 获取坐标原点和最大值分别为(xmin,ymin)(xmax,ymax) u16 ym...

2018-03-17 14:26:17 727

Android 版本升级

用Retrofit2 get json 对比版本号 下载apk 弹出提示框,自动安装下载好的apk

2018-01-23

RetrofitTest

使用Retrofit的GET功能调用金山词霸的API在线翻译,使用Retrofit的POST功能调用有道词典的API在线翻译

2018-01-23

Android 百度鹰眼 SDK 后台启动轨迹追踪采集

Android 百度鹰眼 SDK TrackPhones.zip后台启动轨迹追踪采集,开机自启动 TrackShow.zip显示实时监控和12小时以内的轨迹查询

2018-01-22

百度地图SDK Demo学习

根据百度官方文档:http://lbsyun.baidu.com/index.php?title=首页学习所写的百度地图SDK Demo

2018-01-10

Android Studio3.0.1 导入AndBaseDemo

把AndBase导入Android Studio3 然后修改配置使其能正常编译通过,并在真机上运

2017-12-01

kernel4.1.15 ti bq27541 电量计驱动

新的内核使用了power_supply_desc来描述电池信息,驱动在android7.1上测度过 + bq27541@55{ + compatible = "ti,bq27541-g1"; + reg = ; + };

2017-10-24

android i2c-tools

I2C设备查询 root@android:i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- 0e -- 10: -- -- -- -- -- -- -- -- -- -- UU -- 1c -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- 44 -- -- -- -- -- 4a -- -- -- -- -- 50: -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 70: -- -- -- -- -- -- -- --

2014-07-09

Android技术内幕.系统卷

1.Android的内核机制和结构剖析 2.Android的IPC机制 3.电源管理 4.驱动的工作原理及实现机制 5.Event输入设备驱动 6.原生库的原理及实现 7.硬件抽象层的原理与实现 8.Dalvik虚拟机的构架原理与实现 9.Android核心库

2012-10-13

ldd3_examples

include lddbus misc-modules misc-progs pci sbull scull scullc sculld scullp scullv short shortprint skull tty usb

2011-09-06

Linux设备驱动程序第三版.pdf

目录 1. Linux 设备驱动第三版 .................................................................................................................... 5 2. 第 1 章 设备驱动简介 .............................................................................................................. 15 2.1 1.1. 驱动程序的角色 ......................................................................................................... 17 2.2 1.2. 划分内核 ..................................................................................................................... 17 2.3 1.3. 设备和模块的分类 ..................................................................................................... 20 2.4 1.4. 安全问题 ..................................................................................................................... 21 2.5 1.5. 版本编号 ..................................................................................................................... 23 2.6 1.6. 版权条款 ..................................................................................................................... 24 2.7 1.7. 加入内核开发社团 ..................................................................................................... 25 2.8 1.8. 本书的内容 ................................................................................................................. 25 3. 第 2 章 建立和运行模块 .......................................................................................................... 26 3.1 2.1. 设置你的测试系统 ..................................................................................................... 28 3.2 2.2. Hello World 模块 ......................................................................................................... 28 3.3 2.3. 内核模块相比于应用程序 ......................................................................................... 30 3.4 2.4. 编译和加载 ................................................................................................................. 34 3.5 2.5. 内核符号表 ................................................................................................................. 39 3.6 2.6. 预备知识 ..................................................................................................................... 40 3.7 2.7. 初始化和关停 ............................................................................................................. 41 3.8 2.8. 模块参数 ..................................................................................................................... 46 3.9 2.9. 在用户空间做 ............................................................................................................. 48 3.10 2.10. 快速参考 ................................................................................................................. 50 4. 第 3 章 字符驱动 ...................................................................................................................... 52 4.1 3.1. scull 的设计 ................................................................................................................. 54 4.2 3.2. 主次编号 ..................................................................................................................... 54 4.3 3.3. 一些重要数据结构 ..................................................................................................... 59 4.4 3.4. 字符设备注册 ............................................................................................................. 66 4.5 3.5. open 和 release .......................................................................................................... 69 4.6 3.6. scull 的内存使用 ......................................................................................................... 72 4.7 3.7. 读和写 ......................................................................................................................... 74 4.8 3.8. 使用新设备 ................................................................................................................. 82 4.9 3.9. 快速参考 ..................................................................................................................... 82 5. 第 4 章 调试技术 ...................................................................................................................... 84 5.1 4.1. 内核中的调试支持 ..................................................................................................... 87 5.2 4.2. 用打印调试 ................................................................................................................. 87 5.3 4.3. 用查询来调试 ............................................................................................................. 94 5.4 4.4. 使用观察来调试 ....................................................................................................... 103 5.5 4.5. 调试系统故障 ........................................................................................................... 105 5.6 4.6. 调试器和相关工具 ................................................................................................... 111 6. 第 5 章 并发和竞争情况 ........................................................................................................ 118 6.1 5.1. scull 中的缺陷 ........................................................................................................... 119 Linux 设备驱动 第三版 - [JJJ] 2 6.2 5.2. 并发和它的管理 ....................................................................................................... 119 6.3 5.3. 旗标和互斥体 ........................................................................................................... 121 6.4 5.4. Completions 机制 ...................................................................................................... 126 6.5 5.5. 自旋锁 ....................................................................................................................... 128 6.6 5.6. 锁陷阱 ....................................................................................................................... 133 6.7 5.7. 加锁的各种选择 ....................................................................................................... 135 6.8 5.8. 快速参考 ................................................................................................................... 142 7. 第 6 章 高级字符驱动操作 .................................................................................................... 146 7.1 6.1. ioctl 接口 ................................................................................................................... 159 7.2 6.2. 阻塞 I/O .................................................................................................................... 159 7.3 6.3. poll 和 select ............................................................................................................. 175 7.4 6.4. 异步通知 ................................................................................................................... 181 7.5 6.5. 移位一个设备 ........................................................................................................... 184 7.6 6.6. 在一个设备文件上的存取控制 ............................................................................... 186 7.7 6.7. 快速参考 ................................................................................................................... 193 8. 第 7 章 时间, 延时, 和延后工作 .......................................................................................... 196 8.1 7.1. 测量时间流失 ........................................................................................................... 202 8.2 7.2. 获知当前时间 ........................................................................................................... 202 8.3 7.3. 延后执行 ................................................................................................................... 204 8.4 7.4. 内核定时器 ............................................................................................................... 210 8.5 7.5. Tasklets 机制.............................................................................................................. 216 8.6 7.6. 工作队列 ................................................................................................................... 219 8.7 7.7. 快速参考 ................................................................................................................... 223 9. 第 8 章 分配内存 .................................................................................................................... 227 9.1 8.1. kmalloc 的真实故事 .................................................................................................. 232 9.2 8.2. 后备缓存 ................................................................................................................... 232 9.3 8.3. get_free_page 和其友 ............................................................................................... 237 9.4 8.4. 每-CPU 的变量 ......................................................................................................... 243 9.5 8.5. 获得大量缓冲 ........................................................................................................... 246 9.6 8.6. 快速参考 ................................................................................................................... 247 10. 第 9 章 与硬件通讯 .............................................................................................................. 250 10.1 9.1. I/O 端口和 I/O 内存 .............................................................................................. 254 10.2 9.2. 使用 I/O 端口 ........................................................................................................ 254 10.3 9.3. 一个 I/O 端口例子 ................................................................................................ 260 10.4 9.4. 使用 I/O 内存 ........................................................................................................ 264 10.5 9.5. 快速参考 ................................................................................................................. 271 11. 第 10 章 中断处理 ................................................................................................................ 273 11.1 10.1. 准备并口 ............................................................................................................... 275 11.2 10.2. 安装一个中断处理 ............................................................................................... 275 11.3 10.3. 前和后半部 ........................................................................................................... 291 11.4 10.4. 中断共享 ............................................................................................................... 294 11.5 10.5. 中断驱动 I/O ........................................................................................................ 297 11.6 10.6. 快速参考 ............................................................................................................... 302 12. 第 11 章 内核中的数据类型 ................................................................................................ 304 Linux 设备驱动 第三版 - [JJJ] 3 12.1 11.1. 标准 C 类型的使用 ............................................................................................. 306 12.2 11.2. 安排一个明确大小给数据项 ............................................................................... 306 12.3 11.3. 接口特定的类型 ................................................................................................... 307 12.4 11.4. 其他移植性问题 ................................................................................................... 308 12.5 11.5. 链表 ....................................................................................................................... 312 12.6 11.6. 快速参考 ............................................................................................................... 316 13. 第 12 章 PCI 驱动 ................................................................................................................. 318 13.1 12.1. PCI 接口 ................................................................................................................. 335 13.2 12.2. 回顾: ISA ................................................................................................................ 335 13.3 12.3. PC/104 和 PC/104+ ............................................................................................... 337 13.4 12.4. 其他的 PC 总线 ................................................................................................... 338 13.5 12.5. SBus ........................................................................................................................ 339 13.6 12.6. NuBus 总线 ............................................................................................................ 340 13.7 12.7. 外部总线 ............................................................................................................... 340 13.8 12.8. 快速参考 ............................................................................................................... 340 14. 第 13 章 USB 驱动 ............................................................................................................... 342 14.1 13.1. USB 设备基础知识 ................................................................................................ 348 14.2 13.2. USB 和 sysfs .......................................................................................................... 348 14.3 13.3. USB 的 Urbs .......................................................................................................... 350 14.4 13.4. 编写一个 USB 驱动 ............................................................................................. 362 14.5 13.5. 无 urb 的 USB 传送 ........................................................................................... 373 14.6 13.6. 快速参考 ............................................................................................................... 377 15. 第 14 章 Linux 设备模型 ...................................................................................................... 379 15.1 14.1. Kobjects, Ksets 和 Subsystems ............................................................................. 390 15.2 14.2. 低级 sysfs 操作 .................................................................................................... 390 15.3 14.3. 热插拔事件产生 ................................................................................................... 394 15.4 14.4. 总线, 设备, 和驱动 ............................................................................................. 396 15.5 14.5. 类 ........................................................................................................................... 407 15.6 14.6. 集成起来 ............................................................................................................... 412 15.7 14.7. 热插拔 ................................................................................................................... 418 15.8 14.8. 处理固件 ............................................................................................................... 426 15.9 14.9. 快速参考 ............................................................................................................... 428 16. 第 15 章 内存映射和 DMA .................................................................................................. 432 16.1 15.1. Linux 中的内存管理 .............................................................................................. 442 16.2 15.2. mmap 设备操作 .................................................................................................... 442 16.3 15.3. 进行直接 I/O ........................................................................................................ 455 16.4 15.4. 直接内存存取 ....................................................................................................... 461 16.5 15.5. 快速参考 ............................................................................................................... 480 17. 第 16 章 块驱动 .................................................................................................................... 485 17.1 16.1. 注册 ....................................................................................................................... 492 17.2 16.2. 块设备操作 ........................................................................................................... 492 17.3 16.3. 请求处理 ............................................................................................................... 496 17.4 16.4. 一些其他的细节 ................................................................................................... 514 17.5 16.5. 快速参考 ............................................................................................................... 516 Linux 设备驱动 第三版 - [JJJ] 4 18. 第 17 章 网络驱动 ................................................................................................................ 520 18.1 17.1. snull 是如何设计的 ............................................................................................... 526 18.2 17.2. 连接到内核 ........................................................................................................... 529 18.3 17.3. net_device 结构的详情 ........................................................................................ 533 18.4 17.4. 打开与关闭 ........................................................................................................... 542 18.5 17.5. 报文传送 ............................................................................................................... 544 18.6 17.6. 报文接收 ............................................................................................................... 549 18.7 17.7. 中断处理 ............................................................................................................... 551 18.8 17.8. 接收中断缓解 ....................................................................................................... 553 18.9 17.9. 连接状态的改变 ................................................................................................... 556 18.10 17.10. Socket 缓存........................................................................................................ 557 18.11 17.11. MAC 地址解析 .................................................................................................. 561 18.12 17.12. 定制 ioctl 命令 ................................................................................................ 563 18.13 17.13. 统计信息 ........................................................................................................... 564 18.14 17.14. 多播 ................................................................................................................... 566 18.15 17.15. 几个其他细节 ................................................................................................... 569 18.16 17.16. 快速参考 ........................................................................................................... 571 19. 第 18 章 TTY 驱动 ................................................................................................................ 574 19.1 18.1. 一个小 TTY 驱动 ................................................................................................. 583 19.2 18.2. tty_driver 函数指针 .............................................................................................. 583 19.3 18.3. TTY 线路设置 ........................................................................................................ 590 19.4 18.4. ioctls 函数 .............................................................................................................. 594 19.5 18.5. TTY 设备的 proc 和 sysfs 处理 .......................................................................... 598 19.6 18.6. tty_driver 结构的细节 .......................................................................................... 599 19.7 18.7. tty_operaions 结构的细节 .................................................................................... 601 19.8 18.8. tty_struct 结构的细节 .......................................................................................... 604 19.9 18.9. 快速参考 ............................................................................................................... 606

2011-09-06

空空如也

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

TA关注的人

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