Linux
文章平均质量分 65
haokaihaohe110
这个作者很懒,什么都没留下…
展开
-
request_region
void request_region(unsigned long from, unsigned long num, const char *name) 这个函数用来申请一块输入输出区域。 如果这段I/O端口没有被占用,在我们的驱动程序中就可以使用它。在使用之前,必须向系统登记,以防止被其他程序占用。登记后,在/proc/ioports文件中可以看到你登记的io口。转载 2012-10-31 22:48:37 · 894 阅读 · 0 评论 -
如何分析HCI的Command Packet和Event Packet包
HCI Packet包括四种,即Command,Event,ACL和SCO/eSCO,对应到MS-Stack中的定义,即为COMMAND_PACKET ,EVENT_PACKET,DATA_PACKET_ACL和DATA_PACKET_SCO。如下(详细参照bt_hcip.h):enum HCI_TYPE { COMMAND_PACKET = 1,转载 2012-08-03 14:41:33 · 3332 阅读 · 0 评论 -
Linux下Bluetooth编程
1. HCI层协议概述:HCI提供一套统一的方法来访问Bluetooth底层。如图所示: 从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth转载 2012-08-03 15:42:46 · 971 阅读 · 0 评论 -
android 蓝牙
BluetoothService里定义的Native方法都在android_server_BluetoothServer.cpp里建立jni调用。开启:由BluetoothEnabler控制,在构造里会先调用 LocalBluetoothManager.getInstance(context),在getInstance里会调用init()函数,BluetoothAdapter.ge转载 2012-08-03 10:24:44 · 807 阅读 · 0 评论 -
android recovery模式
Android手机开机后,会先运行 bootloader。Bootloader会根据某些判定条件(比如按某个特殊键)决定是否进入 recovery模式。Recovery模式会装载recovery分区,该分区包含recovery.img。recovery.img包含了标准内核(和boot.img中的内核相同)以及recovery根文件系统。菜单说明:Opt转载 2012-07-16 16:14:30 · 17540 阅读 · 3 评论 -
Bluetooth的Security概述
涉及到Bluetooth的Security相关的概念很多,并分散到不同的文档(Specification, Whitepaper)中,甚至Specification中不同的部分都零散着Security的论述。导致给理解Bluetooth的Security带来不少的困难。也许是因为大家理解不够的缘故吧,使得各种Bluetooth产品的对于Security的UI有很大的差异。从而对于用户来说,本来转载 2012-08-02 15:22:00 · 2260 阅读 · 0 评论 -
蓝牙耳机复位
二、蓝牙连接方法第一次使用需要用手机与蓝牙耳机配对,配对成功后才能够使用。配对方法:1.启动蓝牙耳机:按住蓝牙开关键,等蓝灯变长亮(一直亮)状态(有的蓝牙耳机是红蓝灯交替闪烁),此时蓝牙耳机处于配对状态(此过程大概需要按住10秒左右,按的时候中间一定不能松手,否则需要关机后重新操作);2.启动手机的蓝牙功能,然后设置手机搜索蓝牙设备;3.从搜索到的设备列表中选择产品的型号,按提转载 2012-08-02 15:03:54 · 10400 阅读 · 0 评论 -
Asterisk
Asterisk允许您同时实时连接到PSTN和VoIP网络。Asterisk服务器不需要任何特殊的硬件即可提供VoIP的服务,只需服务器有网络连接即可。它支持主流VoIP协议,包括会话发起协议(SIP)、H.323,既可作为IP电话服务器也可以作IP电话和PSTN之间的转接。Asterisk系统还设计了一个新协议,IAX,用于在Asterisk服务器之间维护话路通道。如果需要连接普通电话或PS转载 2012-07-16 17:20:57 · 948 阅读 · 0 评论 -
tlv320aic3104
寄存器0:页选择寄存器D0,0或1,选择页1或者页0。寄存器1:软复位,D7=1复位。寄存器2:采样率选择寄存器。包括ADC,DAC,它们的选择必须相等。3456:PLL相关寄存器。Page 0/Register 14: Headset/Button Press Detection Register BPage 0/Register 15: Left-ADC PGA G原创 2012-06-27 15:19:09 · 5192 阅读 · 1 评论 -
shell复习
find pathname -options [-print -exec -ok]-exec find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' c o m m -and' {} \;,注意{ }和\;之间的空格。-ok 和- e x e c的作用相同。c p i o命令可以用来向磁带设备备份文件或从中恢复文件。可以使用f i n d命令在整个原创 2012-07-21 00:55:19 · 624 阅读 · 0 评论 -
VOIP技术架构
H.323协议存在一些问题(不支持群播,只有有限的MCU;其IP电话网络在接入端仍需经过当地PSTN电路交换网),之后定制了MGCP,目的在于将H.323在功能上进行分解,划分成负责媒体处理的媒体网关(MG),掌控呼叫建立与控制的媒体网关控制器(MGC)两部分。VoIP架构4元素:媒体网关,媒体网关控制器,语音服务器,信号网关器(在交换过程中进行相关控制,以决定通话建立与否,及相关增值原创 2012-07-21 08:08:32 · 3466 阅读 · 0 评论 -
WIRELESS MAC AND PHY SPECIFICATIONS FOR WPANS
<!--.ft00 {font-size:12px; font-family:Times; color:rgb(0,0,0)}.ft01 {font-size:15px; font-family:Times; color:rgb(0,0,0)}.ft02 {font-size:19px; font-family:Times; color:rgb(0,转载 2012-08-05 14:28:45 · 2366 阅读 · 1 评论 -
系统启动后的 wifi 加载过程
============================ Wifi 启动代码流程 ====================1、系统启动 首先加载init.rc,这个文件 会加载所有service,init是linux启动的 第一个 用户空间 的应用(属于linux进程,不属于Android应用)。2、init.rc里有以下这句话:Service wpa_supp转载 2012-10-12 16:22:25 · 1506 阅读 · 1 评论 -
linux蓝牙驱动代码阅读笔记
linux蓝牙驱动代码阅读笔记昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。net/hci_core.cHCI 在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式转载 2012-07-31 19:42:19 · 1347 阅读 · 0 评论 -
ubuntu bluetooth 配对过程
bluetoothd运行时(main函数启动时),加载plugin(调用plugin_init函数):[cpp] view plaincopyprint?gboolean plugin_init(GKeyFile *config) { GSList *list; GDir *dir; const gchar *file; gch转载 2012-07-31 19:46:19 · 3816 阅读 · 1 评论 -
LIST of HCI cmd
HCI Commands Link Control Commands (OGF = 0x01)NoCommand NameOpCodeDescription1Inquiry0x0001Command used to enter Inquiry转载 2012-07-27 15:26:27 · 4497 阅读 · 0 评论 -
A2DP
Android系统中,应用程序只能看到AudioSystem这个接口,AudioFlinger是一个实现类,主要用于音频选路和PCM包的混音与重采样,并把PCM数据包传送给底层。AudioFlinger在所有进程中只有一个实体,其他进程如需要访问通过Binder进程间通信的方式进行访问。 AudioHardware是一层硬件抽象层,主要负责音频数据的收发与控制。AudioFlinger把他看转载 2012-08-11 21:03:51 · 1848 阅读 · 0 评论 -
蓝牙配对
所谓的配对与连接,打个比方:你与某人认识了,互相留手机号码,这就是配对; 然后你给他打电话,这就是连接,相当于用蓝牙传文件。所以没有传送文件的时候是没有连接的。hcidump 工具和tcpdump(1) 非常相像。它可以用来显示蓝牙数据包的内容, 并将其记录到文件中。Bluetooth (蓝牙) 是一项无线技术, 用于建立带宽为 2.4GHZ,波长为 10米的私有网络。不象转载 2012-07-24 08:09:18 · 1847 阅读 · 0 评论 -
蓝牙
BccmdBccmd是用来和CSR的芯片进行BCCMD(Bluecore command protocol)通讯的一个工具。BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属协议Bccmd的调用格式为:bccmd [-t ] [-d ] []Tansport类型包括 HCI USB BCSP H4等,常用的估计就是HCI和BCSP两种。需要注意一下他们的使用场合:HCI是一个抽转载 2012-07-26 12:07:14 · 4118 阅读 · 0 评论 -
cvs用法
一.checkout 签出 cvs checkout [-ANPRcflnps] [-r rev| -D date] [-d dir] [-j rev1] [-j rev2] [-k kopt] modules... -A 重置所有粘性标记/日期/kopts -N 如果指定了-d选项,不要使用短模块路径 -P 删除空目录转载 2012-07-23 17:56:25 · 664 阅读 · 0 评论 -
ALSA各文件作用
sound/core/pcm_native.c 对下层的PCM驱动提供包装,为上层提供统一的接口,snd_pcm_f_ops_playback文件操作结构提供播放功能的函数,snd_pcm_f_ops_capture文件操作结构提供录音功能的函数。sound/core/control.c对下层的Control驱动提供包装,为上层提供统一的接口,snd_ctl_f_ops文件操作结构提供原创 2012-06-27 15:51:07 · 2702 阅读 · 0 评论 -
netlink知识
(1)netlink使用cb字段传输数据。(sk_buff是Linux在其协议栈里传送的结构体,也就是所谓的“包”)(2)用户空间的netlink套接字很简单,和传统的网络套接字类似,只是修改了一些参数: sd = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC); 第三个参数指定netlink协议类型,可以是用户自定义原创 2012-07-10 16:27:02 · 2432 阅读 · 2 评论 -
ARM基本指令
伪指令:ENTRY 伪指令用于指定汇编程序的入口点。在一个完成的汇编程序中至少要有一个ENTRY,但在一个源文件里最多只能有一个ENTRY(也可以没有)。AREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名需要”|”括起来i,如|1_test|。EQU伪指令用于为程序中的常量,标号等定义一个等效的字符名称,类似于C语言中的#define。 名称 EQU表达原创 2012-04-07 12:17:48 · 637 阅读 · 0 评论 -
源码控制工具
CVS,SVN,GitGit使用多个分布式存储库,基于改变集进行历史跟踪。步骤:安装,建立Git存储库,向库中添加内容,操作库中文件,合并,其他。GNU/Linux环境编程一书 Gnuplot古老但流行的可视化程序,可与Ruby,Python,Smalltalk绑定。 pause会把进程挂起,直到接收到信号。返回继续运行。kill向一个或多个进程发送信号原创 2012-04-07 16:14:50 · 549 阅读 · 0 评论 -
学习计划
1.已经有了uboot,先编译一个linux,下载运行试试(这里面涉及linux内核的一些修改,包括时钟啊,支持的文件系统等,和uboot参数也要对应。具体查看linux移植方法)参考:http://user.qzone.qq.com/1057481936/infocenter#!app=2&pos=1311696745内核已经简单移植了,但是出现错误:No oob scheme de原创 2012-04-05 22:11:46 · 671 阅读 · 0 评论 -
在ubuntu下获取对应内核源码命令
输入:apt-cache search linux-source //查看内核版本输入:apt-get install linux-source-3.0.0 //获取对应版本的内核,默认安装在/usr/src目录下见:Ubuntu下构建内核源码树的方法 ubuntu下编译本机模块是否需要下载内核源码呢?答案是可以的。dmesg | tai转载 2012-04-04 22:06:09 · 20106 阅读 · 0 评论 -
平台设备驱动
来自精通Linux设备驱动程序开发:平台设备驱动中的平台可看做一种伪总线,通常用于将集成进片上系统的轻量级设备和Linux设备模型连接在一起。平台由平台设备和平台设备驱动程序组成。(来自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=862226&PostID=21247170)设备驱动中,平台设备作为一个虚拟的设备和总线可以大大简化原创 2012-04-04 12:50:42 · 4116 阅读 · 0 评论 -
linux下编译工具的用途
GNU binutils是一组二进制工具集。Binutils是GNU工具之一,它包括连接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的处理维护工具。包括:addr2line ar gprof nm objcopy objdump ranlib size strings strip.ar用于建立、修改、提取档案文件(archive)objcopy可以将一种格式的目标文件转化为另外原创 2012-04-03 17:35:17 · 1423 阅读 · 0 评论 -
ubuntu11.10下linux内核主机编译
目前,最新的linux内核版本为3.3版,开始我下载的是2.6.23版发现在这个版本的ubuntu下编译不了,说是这个自带的gcc4.6编译器版本不支持内核编译的一些属性,但是修改之后还是不对,错误越来越多。试了一上午,没有结果,决定改用其他版本内核,我选用了linux2.6.35.13版。对比其与之前版本的差别,发现文件结构及makefile等内容均有较大差别。1.直接去官网下载,或者使用w原创 2012-04-03 15:31:26 · 1145 阅读 · 0 评论 -
Android套接字编程
第一步,使用本机和本机上Android模拟器通信,出现无法通信现象。原因是android的主ui线程不能执行一个工作线程,也就是执行网络操作之类的.两种方法可以解决:1\参考http://android.yyable.com/reference/android/os/StrictMode.html2\删除androidmanifest.xml里的也可以用其他方式处理,如handle原创 2011-12-27 14:54:32 · 5975 阅读 · 3 评论 -
linux系统移植 书
第五章flash硬件方案比较,nor,nand。基于flash的文件系统有jffs2(日志文件系统,主要用于nor,基于mtd驱动层),yaffs(主要用于nand),cramfs(使用时解压缩到ram,因此写操作困难,它是只读的),romfs(只读,顺序)。ramdisk是划分一块内存作分区使用,不是一个实际的FS,而是将实际FS装入内存的一种策略。第六章 LCD驱动程序移植st原创 2012-04-08 20:22:42 · 688 阅读 · 0 评论 -
模块测试函数基于linux2.6
#include #include #include static int hello_init(void){ printk("....\n"); return 0;}static void hello_exit(){ printk("...");}module_init(hello_init);module_exit(hello_e原创 2012-04-07 20:42:58 · 474 阅读 · 0 评论 -
设备驱动开发技术及应用 书
第七章:#include 硬件设备驱动程序中可能存在以不同目的使用相同资源的情况,为了避免冲突,linux内核提供了管理输入输出空间的函数:check_region 确认是否属于可注册的IO空间;request_region 注册IO空间;release_region;输入输出使用的内存空间也需要竞争处理:check_mem_region(); request_mem_re原创 2012-04-08 11:25:25 · 459 阅读 · 0 评论 -
DAI:Digital Audio Interfaces(音频设备的硬件接口)
1 PCM接口 针对不同的数字音频子系统,出现了几种微处理器或DSP与音频器件间用于数字转换的接口。最简单的音频接口是PCM(脉冲编码调制)接口,该接口由时钟脉冲(BCLK)、帧同步信号(FS)及接收数据(DR)和发送数据(DX)组成。在FS信号的上升沿,数据传输从MSB(Most Significant Bit)字开始,FS频率等于采样率。FS信号之后开始数据字的传输,单个的数据位转载 2012-06-22 21:34:33 · 12041 阅读 · 0 评论 -
alsa结构体流程2
Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。我们需要在我们的驱动程序初始化时主动调用snd_pcm_new()函数创建pcm设备,而control设备则在snd_card_create()内被创建,snd_card_create()通过调用snd_ctl_create()函数创建control设备节点。所以转载 2012-07-06 09:32:52 · 2547 阅读 · 0 评论 -
alsa数据结构流程
以声卡驱动的数据结构为切入点分析:/* SoC card */struct snd_soc_card { const char *name; struct device *dev; struct snd_card *snd_card; //在snd_soc_instantiate_card中利用snd_card_create创建声卡 struct module转载 2012-07-06 08:41:23 · 2751 阅读 · 0 评论 -
ALSA相关
音频数据流向: | DMA | | I2S/PCM/AC97 |RAM -------------> I2SControllerFIFO ---------------------------> CODEC ----> SPK/HeadsetPCM模块初始化:struct snd_soc_pl转载 2012-06-24 21:45:20 · 2117 阅读 · 0 评论 -
alsa结构体流程3
/* SoC Audio Codec device */struct snd_soc_codec { const char *name; /* Codec的名字*/ const char *name_prefix; int id; struct device *dev; /* 指向Codec设备的指针 *转载 2012-07-06 14:53:00 · 1155 阅读 · 0 评论 -
DAPM之二:audio paths与dapm kcontrol
转载:http://blog.csdn.net/sepnic/article/details/6334922备注:仅作个人学习资料保存使用,请移步原作者链接进行讨论。在用alsa_amixer controls时,除了我们之前提到的snd_soc_add_controls添加的kcontrols外,还有一些多出来的controls。其实多出来的那些都是属于dapm kc转载 2012-07-05 17:19:55 · 964 阅读 · 0 评论 -
FXS FXO
FXS (Foreign Exchange Station)FXS is an interface which drives a telephone. FXS interfaces get phones plugged into them, deliver battery, and provide ringing. The FXS interface initiates and sends a转载 2012-06-19 13:44:15 · 2193 阅读 · 0 评论