自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

-源码交流区

从头再来

  • 博客(45)
  • 资源 (3)
  • 收藏
  • 关注

原创 离线语音远程遥控车控门制作教程(二)

车库门语音遥控器

2022-06-19 21:44:25 1499

原创 离线语音远程遥控车控门制作教程(一)

当你开着车回家的时候,车快到家时,你是不是想车库门能自动打车,怎么打开呢,在车上放一个语音遥控器,你可以象电视机遥控器一样一键打开,也可以唤醒遥控器,语音控制,开门,关门,停止,并且最远的距离要能达到一公里,怎么样,想不想拥有,跟我学,我来教你怎么制作。

2022-03-26 21:21:26 2879 3

原创 分享一个离线语音模块开发板的pcb

最近用机芯智能的离线语音模板开发产品,这款离线语音模板很好用,我们还特意设计了一款开发板pcb,现在分享给大家,大家可以拿pcb自己去打样,下面pcb打样文件下载地址链接: https://pan.baidu.com/s/1hCr9C8Khu6MZVlb57LG3mQ 提取码: hd7n......

2022-03-13 09:50:19 1269

原创 电脑远程开机pcie卡

背景前段时间粉丝群里有人用esp01s和继电器制作一个电脑远程开关机的智能开关,虽然功能上是可以实现了,但接收麻烦,并且手机app上看不到当前电脑的开机状态,不够完美,下面这块开机卡的pcb,完美解决了这些问题。功能描述1、固件接入飞阳物联平台,可以用小程序客户端远程控制电脑开、关机。2、可以时时显示电脑开机状态。3、支持433 遥控器控制,433支持外置扩展天线。4、支持小爱和天猫精灵语音控制。固件io工作原理io 2 物理开关,开机,关机操作, D4,高电平io 4 物理开关,重启电脑

2021-09-30 17:54:55 8498 7

原创 阿达的红外射频遥控盒子(一)

背景这个产品是基本艾韵盒子的电路基本上添加了射频315的433的学习和发射功能。是阳阳学编程粉丝群的阿达给大家分享的。功能描述:1、固件用的是飞阳物联平台的红外固件3.0,固件下载地址链接: https://pan.baidu.com/s/1_pfVBW1WcC80hJFmBF34Xw 提取码: 2sgq2、支持红外,射频315和433遥控器的学习功能。3、支持小爱同学,天猫精灵语音控制。4、有开源pcb ,物料清单,可以自己去打样,按物料清单购买电子元器件焊接。打样文件和物料清单在下面网盘里

2021-09-20 18:31:08 6500 2

原创 阿达的esp01s单路通电器

固件下载链接: https://pan.baidu.com/s/1rJ7EBvoIYUtWLLjWVQDC4g 密码: dsjp小程序端:添加1路开关设备

2021-06-30 18:41:37 4518 2

原创 阳阳智能开关固件2.0版本

## YangHome智能开关固件2.0版本1,放弃了点灯平台,接入了飞阳物联平台,有配套的小程序客户端。2,型号有1路和4路的固件,1路固件用esp01s,4路固件用nodemcu 12s,12e,12f系统都可以。接线:```c物理开关1 接 io2 对应nodeMCU的D4物理开关2 接 io13 对应nodeMCU的 D7物理开关3 接 io15 对应nodeMCU的D8物理开关4 接 io16 对...

2021-06-12 20:45:44 7074 11

原创 阳阳智能开关教程从0到1目录导航

YangHome智能开关教程从0到1零基础入门,demo源代码diy,智能开关开发教程1链接: https://pan.baidu.com/s/1zXbAeJ-hLMEncLgNBWr78w密码: u1jb零基础入门,demo源代码diy,智能开关开发教程2下载地址:链接: https://pan.baidu.com/s/1lSe2UNP4Swm2NVKG-Py53Q密码: nbh6改造家里的开关成为智能开关,保留原有开关控制,零火版,基础入门(一)https://blog.csdn.ne

2021-05-23 09:57:59 8578 2

原创 红外万能遥控器2.0,把家里的红外遥控器改成能用语音和手机app控制

功能描述模拟家用电器的遥控器功能。接入blinker平台,通过手机可以远程控制。接入小爱同学、小度和天猫精灵,可以动动嘴就能控制你的家用电器。带红外学习功能,只要用遥控器的电器设备都可以接入。硬件准备硬件:红外发射模块 *1红外接收模块 1Nodemcu(826612f) 1面包板1杜邦线4根这个esp8266-01/01s的接线手机遥控注册blinker账号,获取密钥auth第一步:下载blinker APP 下载地址:blinker APP 第二步: 安装并配置

2021-03-22 09:13:18 6969 2

原创 飞阳物联平台,智能开关2.0版本支持凌动开关

esp01s一路通断器,飞阳平台智能开关固件,支持凌动开关版

2022-06-26 14:21:26 3272 4

原创 阿达的红外射频遥控盒子(三)

红外射频遥控配套固件开源阳阳学编程抖音号中玩的红外射频遥控器,配套固件的源代码,接入的是飞阳物联平台,mqtt协议,支持小爱,小度,天猫精灵 支持红外和射频315和433 配置pcb和教程(一)https://blog.csdn.net/panpanloveruth/article/details/120393667(二)https://blog.csdn.net/panpanloveruth/article/details/120967019项目固件开源代码 github: https://git

2022-01-22 08:29:34 7502

原创 涂鸦模组开发板,适用于cbu,ztu

分享一个简单实用的涂鸦模组开发板,适用于cbu,ztu,将涂鸦模组的io转换成为排针,然后用杜邦线和面包板来接线开发,打样文件地址链接:https://pan.baidu.com/s/1C_TnmNqiqcC2e9_-erRBNw提取码:sa2r

2021-12-29 22:05:36 3746

原创 jack分享的1-3开wifi 零火版本智能开关解决方案

特点1、1-3开物理开关控制。2、433遥控器,随意贴控制。3、微信小程序app远程控制,接入飞阳物联物联网平台。4、小爱同学,小度,天猫精灵语音控制。5、入手门槛大大降低,有电工基础,会接入线就行。 jack分享的1-3开wifi 零火版本智能开关解决方案 制作流程:1、拿在样文件去嘉立创 打样pcb打样文件: https://pan.baidu.com/s/1dY5uT

2021-11-25 17:39:31 4960 1

原创 易微联通断器实现电脑远程开关机

功能描述这个方案比较简单,买一个易微联通断器,按教程接线就可以了。既然用的是易微联通断器,就需要下载易微联的app,接入小爱同学需要在米家里绑定易微联的账号。1、支持易微联的手机app远程开关机,设置定时开关机。2、支持433遥控器开关机。3、支持天猫精灵,小爱同学,小度语音开关机。购买硬件直接买的易微联的产品然后2条电线从主板24pin接口上的5v取电给易微联的板子供电,杜邦线 一分二,母头插主板上的power 插针,两个公头分别接原机箱power母头和易微联的继电器上,继电器支持设置成

2021-10-29 17:04:57 2454

原创 阿达的红外射频遥控盒子(二)

功能描述1、这个版本是在阿达的红外射频遥控盒子(一)的基本上修改,增加了USB口自动下载电路,更加完美。2、固件用的是飞阳物联平台的红外固件3.0,固件下载地址链接: https://pan.baidu.com/s/1_pfVBW1WcC80hJFmBF34Xw 提取码: 2sgq3、支持红外,射频315和433遥控器的学习功能。4、支持小爱同学,天猫精灵语音控制。5、有开源pcb ,物料清单,可以自己去打样,按物料清单购买电子元器件焊接。打样文件和物料清单在下面网盘里。链接: https:/

2021-10-26 10:40:42 3078 2

原创 艾韵智能红外盒子刷写飞阳物联平台红外固件

艾韵智能红外盒子说到这个盒子呢,在闲鱼上有卖的,便宜的时候是40块钱6个,还包邮,现在有可能涨价了,长啥样呢,上图给大家看下,其它的盒子刷了固件也不一定能用。配套功能介绍 https://b23.tv/uCV9YH刷写上飞阳物联平台的红外遥控器3.0版本(3.0.1010),不需要要修改任何硬件,完美适配。准备一个这样的下载器,这是esp01s配置的下载器下载接入图艾韵盒子预留有下载接口,如上图黄色字体,依次和下载器对应的io用杜绑线连接起来。接线可以参考视频 https://b23.t

2021-09-13 14:18:29 5370 5

原创 刘汉国老师的3路单火智能开关

刘汉国老师分享的三路单火智能开关一、功能描述:1,方案支持1,2,3开。2,固件适配的是飞阳物联平台的智能开关2.0固件,支持小程序客户端控制,支持小爱同学和天猫精灵语音控制。3,支持433遥控器或随意贴控制,遥控器对码在小程序端完成。二、电路板实物图三,原理图2层板控制板原理图可控硅层原理图四,物料清单固件、打样文件和焊接教程下载地址:链接: https://pan.baidu.com/s/15smxwqes-1qhul8XmzMZOw 提取码: vl9i固件下载方法请参

2021-08-10 11:10:16 8907 6

原创 红外万能遥控器3.0,给家里带遥控器的家电赋能

红外万能遥控器2.0的基础上添加两大功能:1,不但支持红外编码的学习功能 ,还添加了433,315 的学习功能2,接入飞阳物联平台,每路编码都可以用小爱同学或天猫精灵语音控制。快速给家里带遥控器的家电赋能,语音助手控制,手机app远程控制。硬件准备硬件:红外发射模块 *1红外接收模块 * 1射频发射模块 433/315 * 1射频接收模块 433/315 * 1Nodemcu(826612f) 1面包板1杜邦线4根接线图高清图固件下载下载方法https://

2021-07-30 12:42:37 9167 9

原创 固件怎么下载和wifi配网

固件下载链接: https://pan.baidu.com/s/1hO85mBh2e5NX7LeIQYDQ_g 密码: ll9m安装usb驱动将esp8266插在下载器上,把下载器插在电脑的usb接口上,看你电脑的设备管理里能看到多出来一个设备,记住端口号,我这里是COM6,后面会用。如果没有,说明你电脑还需要安装烧写器的usb驱动,常用驱动有ch340/cp210x,在网盘工具包里有cp210x的安装cp210x.drivers.zip和ch34x.drivers.zip,根据自己情况安

2021-07-05 09:31:27 3249 6

原创 飞阳物联平台开源项目导航

智能开关通断器1路智能开关简介:基于点灯科技平台和飞阳物联平台的ESP8266-01s继电器,本地物理开关,433/315MHZ射频遥控(随意贴开关),AP+网页配网作者:阿达教程链接 立创开源红外遥控器传感器...

2021-07-01 15:07:11 2792 1

原创 jack设计的esp01s 1路智能开关pcb

jack设计的esp01s 1路智能开关pcbpcb打样资链接: https://pan.baidu.com/s/1W9Xh6yaSGn8kwfRjuCTtTQ 密码: 5pti固件下载:链接:https://pan.baidu.com/s/1LU4XkcYnH83GNsA61ywFqw 提取码:681i配套教程:https://blog.csdn.net/panpanloveruth/article/details/115536364源代码pbc开源地址https://oshwhub.co

2021-07-01 09:20:00 4640

原创 改造家里的开关为智能开关,保留原有开关控制,零火版,HomeKit篇(三)

改造家里的开关成为智能开关,保留原有开关控制,零火版(三)阳阳学编程1更新说明本文章在“改造家里的开关成为智能开关,保留原有开关控制,零火版(二)”版本的基本上添加的新功能。1、这个版本不再使用blinker平台,集成的是homekit原生系统,可以用苹果的homekit 对接。2、支持一个物理开关,点动和自锁两种模式,分别对应两个固件。2、支持433/315 射频遥控功能,可以和常用的射频遥控器配对使用,可以和市面上常用的开关面板随意贴配对使用。怎么进入配网和对码模式1、下载完固件,第

2021-04-27 10:49:23 5875 4

原创 改造家里的开关成为智能开关,保留原有开关控制,零火版,射频遥控器篇(二)

改造家里的开关成为智能开关,保留原有开关控制,零火版(二)更新说明本文章在“改造家里的开关成为智能开关,保留原有开关控制,零火版(一)”版本的基本上添加的新功能。1、添加了433/315 射频遥控功能,可以和常用的射频遥控器配对使用。2、可以当随意稍使用。3、esp8266在线时,长按点灯app上的btn-abc按钮,esp8266会进入配网模式,配网模式下可以进入遥控器和智能开关的对码操作,对码成功后的遥控器可以控制智能开关。接线图固件下载链接: https://pan.baidu.

2021-04-09 09:17:20 11876 5

原创 改造家里的开关成为智能开关,保留原有开关控制,零火版,基础入门(一)

改造家里的开关成为智能开关,保留原有开关控制,零火版亮点成本不超20块,这可能是目前能找到的最便宜方案了吧。体积较小,可以塞入86开关面板内。手机app+智能音箱+物理开关控制,状态能同步。接入点灯科技平台,支持wifi配网,包括blinker 设备密钥。5.入手门槛大大降低,有电工基础,会接入线就行。器材需要的器件如下,新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Mark

2021-02-23 12:03:10 24686 20

原创 javah 命令生成JNI头文件

假设工程目录下有bin文件夹,bin存放编译好的class文件;在bin目录下,E:\eclipse\workspace\testjni\bin>javah -classpath . -jnicom.gnetis.tang.agent.ICMSAgent然后在E:\eclipse\workspace\testjni\bin即可找到一个com.gnetis.tang.agent_jni_

2011-11-23 22:39:10 665

原创 mysql数据导入导出命令

mysql数据导入导出命令  1.导出整个数据库   mysqldump -u 用户名 -p 数据库名 > 导出的文件名   mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表

2011-09-15 18:18:07 746

原创 Linux下如何查看系统启动时间和运行时间

1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.002.查看/proc/uptime文件计算系统启动时间cat /proc/uptime输出: 51133

2011-09-13 10:49:10 606

原创 linux常用命令

1、截包工具tcpdumptcpdump -i eth0 -n udp port 100012、解决vi utf-8乱码问题export LANG="zh_CN.UTF-8"  或者写入 ~/.bashrc,以后就不会遇到这个问题了。3、mysql操作my

2011-09-01 14:22:01 571

原创 linux uniq命令

<br />文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。<br />语法:<br />uniq [选项] 文件 <br />说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表

2011-05-27 17:57:00 551

原创 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件

dbus是什么东西?网上有一篇叫“D-Bus Tutorial”的文章,流传较广。不少介绍dbus的资料,都引用了其中的段落。其实相对于这篇文章,我建议大家直接读“D-Bus Specification”,篇幅不算长,文字也不算枯燥。D-Bus是针对桌面环境优化的IPC(interprocess communication )机制,用于进程间的通信或进程与内核的通信。最基本的D-Bus协议是一对一的通信协议。但在很多情况下,通信的一方是消息总线。消息总线是一个特殊的应用,它同时与多个应用通信,并在应用之间传

2011-05-18 12:12:00 1570

原创 在家怎么连接到公司的网络,ssh ,ftp ,3389 ...

应用虚拟网 Gport  随着互联网业务的发展,远程协助,移动办公已经成为当今互联网用户的一个基本要求。易连系列软件旨在提供给客户一个简单,方便地共享网络连接的解决方案。无论是家庭宽带接入,还是企业内部网络,只需要用户申请一个google帐号,就可以随时随地与好友,与自己,与企业共享网络资源。轻松实现内网接入,移动办公。同时通过好友管理,黑白名单,共享设置,数据加密来保证用户数据传输的安全性。 应用虚拟网- Gport,办公室与家庭网共享最佳解决方案,类似于vpn。特性:在家用windows自带的远程面连接

2011-05-04 18:28:00 10649

原创 修改linux下core文件的路径

<br />查看下<br />cat /proc/sys/kernel/core_pattern <br />eg:<br />/tang/share/%e-%p-%s-%t.core<br /> <br />开关<br />echo 1 >  /proc/sys/fs/suid_dumpable

2010-12-13 10:38:00 3442

原创 linux syslog 写到mysql

<br />linux syslog<br />监控log 是以facilities为local5和local6,对于OP监控log是以SQL语句方式提供<br />语句:<br /> <br />在log server采用如下方式可以将OP监控log直接写进数据库:<br /> <br />destination df_tang_mysql { program("mysql -uroot -p111111 –h{SQL HOST IP}<br />tang_monitor" template("$MSGO

2010-09-17 11:17:00 1344

原创 linux 下mount使用指南

在Linux中,如果你要使用储存设备 (Mo、硬盘、光驱等) ,就得先将它挂上 (Mount),而当储存设备挂上了之后,就可以把它当成一个目录来进行访问。挂上一个设备使用mount命令。 在使用mount这个指令时,至少要先知道下列三种信息:   1. 要Mount对象的文件系统类型? (File system type)   2. 要Mount对象的设备名称? (/dev/????)   3. 要将设备Mount到哪个目录去? 一、获得系统支持的文件系统类型 就第一点来说,用户可以执行    cat /p

2010-09-15 15:57:00 944

原创 Linux重启网卡的方法

Linux重启网卡的方法重启网卡的几种方法:<br /><br />一、network<br /><br />利用root帐户<br /><br /># service network restart<br /><br />二、ifdown/ifup<br /><br /># ifdown eth0<br /><br /># ifup eth0<br /><br />三、ifconfig<br /><br /># ifconfig eth0 down<br /><br /># ifconfig eth0 u

2010-09-07 13:18:00 1434

原创 Linux下单网卡设置双ip,ubuntu设置双IP

Linux下单网卡设置双ip,ubuntu设置双IPLinux2009-11-19 14:12:38Tags: 双ip<br />环境:Ubuntu 8.10 server 64bit<br />Ubuntu的网卡配置文件是/etc/network/interfaces<br />修改一下这个配置文件就可以单网卡绑定两个ip,或者设置多个ip了<br />1)去到配置文件的目录代码$cd  /etc/network <br />2)编辑interfaces此配置文件代码$sudo vi interfaces

2010-09-07 12:13:00 2149

原创 用C++中STL提供的fstream和stream_iterator读写二进制文件。

<br />/**********************************************************<br />** 用C++中STL提供的fstream和stream_iterator读写二进制文件。<br />**********************************************************/<br />#include <iostream>#include <fstream>#include <list>#include <s

2010-08-02 13:14:00 1858

原创 总结C++中的所有强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)

标准c++中主要有四种强制转换类型运算符:     const_cast,reinterpret_cast,static_cast,dynamic_cast等等。           1)static_cast(a)     将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。     表达式static_cast(a), a的值转换为模板中指定的类型T。在运行时转换过程中,不进行类型检查来确保转换的安全性。           例子:           class B { ... };  

2010-07-29 13:30:00 457

原创 alt 进程外com组件的连接事件

1. 问题的提出类似于设计模式中Observer模式,在COM编程中,希望实现一种机制,使得对数据变化感兴趣的若干部分能够接受到数据的变化通知。一个典型的应用:计算机监控程序在计算机状态数据发生变化时通知系统管理员、系统日志程序、发送电子邮件等等,在com编程中连接点为我们方便的做到了这一点,在进程内com组件中我参考http://www.vckbase.com/document/viewdoc/?id=1538杨老师的文章很容易就参实现连接点的挂接,可是在进程外组件中去挂接失败,如下面代码所示:CSink

2010-07-19 09:43:00 2794

原创 桌面共享中桌面图片对比取变化部分数据和还原显示

在做桌面共享时,最重要的就是桌面数据的对比压缩算法,怎么让数据在网络上传得最少而又不损耗桌面质量,有很多人直接用vnc的算法,但vnc虽然开源,又权威,但项目太大,看源码有点难看懂,前些天我实现了一个轻量级的算法,自己试了下,效果跟vnc不分上下,只是算法比较单一,不象vnc一个能适应不同的网络自动调整算法,下面来看下我的算法,分两部分一、从一张图片中dif出变化部分数据,张桌面切成n个小正方形,比较每个正方形是否改变,如果改变则把整个正方形取出。二、将变化部分拼成的图片(bmp),根据变化头还

2010-07-12 15:11:00 1165

NODEMCU烧录工具.zip

NodeMCU-PyFlasher-4.0,nodemcu下载工具,windwos,macos版本

2021-03-22

esp-01s +继电器 改造家里灯的开关为智能开关,保留原有开关控制,零火版.zip

1. 成本不超20块,这可能是目前能找到的最便宜方案了吧。 2. 体积较小,可以塞入86开关面板内。 3. 手机app+智能音箱+物理开关控制,状态能同步。 4. 接入点灯科技平台,支持wifi配网,包括blinker 设备密钥。 5.入手门槛大大降低,有电工基础,会接入线就行。 6.配套教程 https://blog.csdn.net/panpanloveruth/article/details/113977715

2021-02-23

Linux Device Driver 中文版第三版

linux设备驱动中文第三版,全网页清晰文字版。 目录 1. 第一章 设备驱动简介 1.1. 驱动程序的角色 1.2. 划分内核 1.2.1. 可加载模块 1.3. 设备和模块的分类 1.4. 安全问题 1.5. 版本编号 1.6. 版权条款 1.7. 加入内核开发社团 1.8. 本书的内容 2. 建立和运行模块 2.1. 设置你的测试系统 2.2. Hello World 模块 2.3. 内核模块相比于应用程序 2.3.1. 用户空间和内核空间 2.3.2. 内核的并发 2.3.3. 当前进程 2.3.4. 几个别的细节 2.4. 编译和加载 2.4.1. 编译模块 2.4.2. 加载和卸载模块 2.4.3. 版本依赖 2.4.4. 平台依赖性 2.5. 内核符号表 2.6. 预备知识 2.7. 初始化和关停 2.7.1. 清理函数 2.7.2. 初始化中的错误处理 2.7.3. 模块加载竞争 2.8. 模块参数 2.9. 在用户空间做 2.10. 快速参考 3. 字符驱动 3.1. scull 的设计 3.2. 主次编号 3.2.1. 设备编号的内部表示 3.2.2. 分配和释放设备编号 3.2.3. 主编号的动态分配 3.3. 一些重要数据结构 3.3.1. 文件操作 3.3.2. 文件结构 3.3.3. inode 结构 3.4. 字符设备注册 3.4.1. scull 中的设备注册 3.4.2. 老方法 3.5. open 和 release 3.5.1. open 方法 3.5.2. release 方法 3.6. scull 的内存使用 3.7. 读和写 3.7.1. read 方法 3.7.2. write 方法 3.7.3. readv 和 writev 3.8. 使用新设备 3.9. 快速参考 4. 调试技术 4.1. 内核中的调试支持 4.2. 用打印调试 4.2.1. printk 4.2.2. 重定向控制台消息 4.2.3. 消息是如何记录的 4.2.4. 打开和关闭消息 4.2.5. 速率限制 4.2.6. 打印设备编号 4.3. 用查询来调试 4.3.1. 使用 /proc 文件系统 4.3.2. ioctl 方法 4.4. 使用观察来调试 4.5. 调试系统故障 4.5.1. oops 消息 4.5.2. 系统挂起 4.6. 调试器和相关工具 4.6.1. 使用 gdb 4.6.2. kdb 内核调试器 4.6.3. kgdb 补丁 4.6.4. 用户模式 Linux 移植 4.6.5. Linux 追踪工具 4.6.6. 动态探针 5. 并发和竞争情况 5.1. scull 中的缺陷 5.2. 并发和它的管理 5.3. 旗标和互斥体 5.3.1. Linux 旗标实现 5.3.2. 在 scull 中使用旗标 5.3.3. 读者/写者旗标 5.4. Completions 机制 5.5. 自旋锁 5.5.1. 自旋锁 API 简介 5.5.2. 自旋锁和原子上下文 5.5.3. 自旋锁函数 5.5.4. 读者/写者自旋锁 5.6. 锁陷阱 5.6.1. 模糊的规则 5.6.2. 加锁顺序规则 5.6.3. 细 -粗- 粒度加锁 5.7. 加锁的各种选择 5.7.1. 不加锁算法 5.7.2. 原子变量 5.7.3. 位操作 5.7.4. seqlock 锁 5.7.5. 读取-拷贝-更新 5.8. 快速参考 6. 高级字符驱动操作 6.1. ioctl 接口 6.1.1. 选择 ioctl 命令 6.1.2. 返回值 6.1.3. 预定义的命令 6.1.4. 使用 ioctl 参数 6.1.5. 兼容性和受限操作 6.1.6. ioctl 命令的实现 6.1.7. 不用 ioctl 的设备控制 6.2. 阻塞 I/O 6.2.1. 睡眠的介绍 6.2.2. 简单睡眠 6.2.3. 阻塞和非阻塞操作 6.2.4. 一个阻塞 I/O 的例子 6.2.5. 高级睡眠 6.2.6. 测试 scullpipe 驱动 6.3. poll 和 select 6.3.1. 与 read 和 write 的交互 6.3.2. 底层的数据结构 6.4. 异步通知 6.4.1. 驱动的观点 6.5. 移位一个设备 6.5.1. llseek 实现 6.6. 在一个设备文件上的存取控制 6.6.1. 单 open 设备 6.6.2. 一次对一个用户限制存取 6.6.3. 阻塞 open 作为对 EBUSY 的替代 6.6.4. 在 open 时复制设备 6.7. 快速参考 7. 时间, 延时, 和延后工作 7.1. 测量时间流失 7.1.1. 使用 jiffies 计数器 7.1.2. 处理器特定的寄存器 7.2. 获知当前时间 7.3. 延后执行 7.3.1. 长延时 7.3.2. 短延时 7.4. 内核定时器 7.4.1. 定时器 API 7.4.2. 内核定时器的实现 7.5. Tasklets 机制 7.6. 工作队列 7.6.1. 共享队列 7.7. 快速参考 7.7.1. 时间管理 7.7.2. 延迟 7.7.3. 内核定时器 7.7.4. Tasklets 机制 7.7.5. 工作队列 8. 分配内存 8.1. kmalloc 的真实故事 8.1.1. flags 参数 8.1.2. size 参数 8.2. 后备缓存 8.2.1. 一个基于 Slab 缓存的 scull: scullc 8.2.2. 内存池 8.3. get_free_page 和其友 8.3.1. 一个使用整页的 scull: scullp 8.3.2. alloc_pages 接口 8.3.3. vmalloc 和 其友 8.3.4. 一个使用虚拟地址的 scull : scullv 8.4. 每-CPU 的变量 8.5. 获得大量缓冲 8.5.1. 在启动时获得专用的缓冲 8.6. 快速参考 9. 与硬件通讯 9.1. I/O 端口和 I/O 内存 9.1.1. I/O 寄存器和常规内存 9.2. 使用 I/O 端口 9.2.1. I/O 端口分配 9.2.2. 操作 I/O 端口 9.2.3. 从用户空间的 I/O 存取 9.2.4. 字串操作 9.2.5. 暂停 I/O 9.2.6. 平台依赖性 9.3. 一个 I/O 端口例子 9.3.1. 并口纵览 9.3.2. 一个例子驱动 9.4. 使用 I/O 内存 9.4.1. I/O 内存分配和映射 9.4.2. 存取 I/O 内存 9.4.3. 作为 I/O 内存的端口 9.4.4. 重用 short 为 I/O 内存 9.4.5. 在 1 MB 之下的 ISA 内存 9.4.6. isa_readb 和其友 9.5. 快速参考 10. 中断处理 10.1. 准备并口 10.2. 安装一个中断处理 10.2.1. /proc 接口 10.2.2. 自动检测 IRQ 号 10.2.3. 快速和慢速处理 10.2.4. 实现一个处理 10.2.5. 处理者的参数和返回值 10.2.6. 使能和禁止中断 10.3. 前和后半部 10.3.1. Tasklet 实现 10.3.2. 工作队列 10.4. 中断共享 10.4.1. 安装一个共享的处理者 10.4.2. 运行处理者 10.4.3. /proc 接口和共享中断 10.5. 中断驱动 I/O 10.5.1. 一个写缓存例子 10.6. 快速参考 11. 内核中的数据类型 11.1. 标准 C 类型的使用 11.2. 安排一个明确大小给数据项 11.3. 接口特定的类型 11.4. 其他移植性问题 11.4.1. 时间间隔 11.4.2. 页大小 11.4.3. 字节序 11.4.4. 数据对齐 11.4.5. 指针和错误值 11.5. 链表 11.6. 快速参考 12. PCI 驱动 12.1. PCI 接口 12.1.1. PCI 寻址 12.1.2. 启动时间 12.1.3. 配置寄存器和初始化 12.1.4. MODULEDEVICETABLE 宏 12.1.5. 注册一个 PCI 驱动 12.1.6. 老式 PCI 探测 12.1.7. 使能 PCI 设备 12.1.8. 存取配置空间 12.1.9. 存取 I/O 和内存空间 12.1.10. PCI 中断 12.1.11. 硬件抽象 12.2. 回顾: ISA 12.2.1. 硬件资源 12.2.2. ISA 编程 12.2.3. 即插即用规范 12.3. PC/104 和 PC/104+ 12.4. 其他的 PC 总线 12.4.1. MCA 总线 12.4.2. EISA 总线 12.4.3. VLB 总线 12.5. SBus 12.6. NuBus 总线 12.7. 外部总线 12.8. 快速参考 13. USB 驱动 13.1. USB 设备基础知识 13.1.1. 端点 13.1.2. 接口 13.1.3. 配置 13.2. USB 和 sysfs 13.3. USB 的 Urbs 13.3.1. 结构 struct urb 13.3.2. 创建和销毁 urb 13.3.3. 提交 urb 13.3.4. 完成 urb: 完成回调处理者 13.3.5. 取消 urb 13.4. 编写一个 USB 驱动 13.4.1. 驱动支持什么设备 13.4.2. 注册一个 USB 驱动 13.4.3. 提交和控制一个 urb 13.5. 无 urb 的 USB 传送 13.5.1. usb_bulk_msg 接口 13.5.2. usb_control_msg 接口 13.5.3. 使用 USB 数据函数 13.6. 快速参考 14. Linux 设备模型 14.1. Kobjects, Ksets 和 Subsystems 14.1.1. Kobject 基础 14.1.2. kobject 层次, kset, 和子系统 14.2. 低级 sysfs 操作 14.2.1. 缺省属性 14.2.2. 非缺省属性 14.2.3. 二进制属性 14.2.4. 符号连接 14.3. 热插拔事件产生 14.3.1. 热插拔操作 14.4. 总线, 设备, 和驱动 14.4.1. 总线 14.4.2. 设备 14.4.3. 设备驱动 14.5. 类 14.5.1. class_simple 接口 14.5.2. 完整的类接口 14.6. 集成起来 14.6.1. 添加一个设备 14.6.2. 去除一个设备 14.6.3. 添加一个驱动 14.6.4. 去除一个驱动 14.7. 热插拔 14.7.1. 动态设备 14.7.2. /sbin/hotplug 工具 14.7.3. 使用 /sbin/hotplug 14.8. 处理固件 14.8.1. 内核固件接口 14.8.2. 它如何工作 14.9. 快速参考 14.9.1. Kobjects结构 14.9.2. sysfs 操作 14.9.3. 总线, 设备, 和驱动 14.9.4. 类 14.9.5. 固件 15. 内存映射和 DMA 15.1. Linux 中的内存管理 15.1.1. 地址类型 15.1.2. 物理地址和页 15.1.3. 高和低内存 15.1.4. 内存映射和 struct page 15.1.5. 页表 15.1.6. 虚拟内存区 15.1.7. 进程内存映射 15.2. mmap 设备操作 15.2.1. 使用 remap_pfn_range 15.2.2. 一个简单的实现 15.2.3. 添加 VMA 的操作 15.2.4. 使用 nopage 映射内存 15.2.5. 重新映射特定 I/O 区 15.2.6. 重新映射 RAM 15.2.7. 重映射内核虚拟地址 15.3. 进行直接 I/O 15.3.1. 异步 I/O 15.4. 直接内存存取 15.4.1. 一个 DMA 数据传输的概况 15.4.2. 分配 DMA 缓冲 15.4.3. 总线地址 15.4.4. 通用 DMA 层 15.4.5. ISA 设备的 DMA 15.5. 快速参考 15.5.1. 介绍性材料 15.5.2. 实现 mmap 15.5.3. 实现直接 I/O 15.5.4. 直接内存存取 16. 块驱动 16.1. 注册 16.1.1. 块驱动注册 16.1.2. 磁盘注册 16.1.3. 在 sbull 中的初始化 16.1.4. 注意扇区大小 16.2. 块设备操作 16.2.1. open 和 release 方法 16.2.2. 支持可移出的介质 16.2.3. ioctl 方法 16.3. 请求处理 16.3.1. 对请求方法的介绍 16.3.2. 一个简单的请求方法 16.3.3. 请求队列 16.3.4. 请求的分析 16.3.5. 请求完成函数 16.4. 一些其他的细节 16.4.1. 命令预准备 16.4.2. 被标识的命令排队 16.5. 快速参考 17. 网络驱动 17.1. snull 是如何设计的 17.1.1. 分配 IP 号 17.1.2. 报文的物理传送 17.2. 连接到内核 17.2.1. 设备注册 17.2.2. 初始化每一个设备 17.2.3. 模块卸载 17.3. net_device 结构的详情 17.3.1. 全局信息 17.3.2. 硬件信息 17.3.3. 接口信息 17.3.4. 设备方法 17.3.5. 公用成员 17.4. 打开与关闭 17.5. 报文传送 17.5.1. 控制发送并发 17.5.2. 传送超时 17.5.3. 发散/汇聚 I/O 17.6. 报文接收 17.7. 中断处理 17.8. 接收中断缓解 17.9. 连接状态的改变 17.10. Socket 缓存 17.10.1. 重要成员变量 17.10.2. 作用于 socket 缓存的函数 17.11. MAC 地址解析 17.11.1. 以太网使用 ARP 17.11.2. 不考虑 ARP 17.11.3. 非以太网头部 17.12. 定制 ioctl 命令 17.13. 统计信息 17.14. 多播 17.14.1. 多播的内核支持 17.14.2. 典型实现 17.15. 几个其他细节 17.15.1. 独立于媒介的接口支持 17.15.2. ethtool 支持 17.15.3. netpoll 17.16. 快速参考 18. TTY 驱动 18.1. 一个小 TTY 驱动 18.1.1. 结构 struct termios 18.2. tty_driver 函数指针 18.2.1. open 和 close 18.2.2. 数据流 18.2.3. 其他缓冲函数 18.2.4. 无 read 函数? 18.3. TTY 线路设置 18.3.1. set_termios 函数 18.3.2. tiocmget 和 tiocmset 18.4. ioctls 函数 18.5. TTY 设备的 proc 和 sysfs 处理 18.6. tty_driver 结构的细节 18.7. tty_operaions 结构的细节 18.8. tty_struct 结构的细节 18.9. 快速参考

2010-12-12

空空如也

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

TA关注的人

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