上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页
  2013年7月14日
摘要: 基本概念库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。ln -s libhello.so.1.0 libhello.so.1ln -s libhello.so.1 libhello.so1、使用库当要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了 阅读全文
posted @ 2013-07-14 23:26 Daniel.G 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。3.库存在的意义库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。现实中每个程序都 阅读全文
posted @ 2013-07-14 23:25 Daniel.G 阅读(1090) 评论(0) 推荐(0) 编辑
摘要: 原子性这个概念初想是非常简单的。它表示一个操作序列就像一个操作一样不被打断,而不像一个操作序列一样中间容许被打断。但是细想下来还是挺有点意思的。首先需要确定的就是什么是一个操作?而什么不是一个操作却是一个操作序列?其次需要确定的是如何叫做像?怎么着就是不像了?另外,还有一个牵扯进来的概念就是原子性的范围和其在什么程度上实施这种保证。或许我这儿说的有点形而上,那我们就形而下的举出例子抓住原子性这个概念的直观感觉。 先举一个CPU指令集中常见的一个指令:CAS。看到这个指令我就仿佛看到了大家脸上的某种意味的笑容。呵呵,是的,它完成两个操作,一个比较,一个交换,后一个完不完成依赖于前一个操作的... 阅读全文
posted @ 2013-07-14 23:09 Daniel.G 阅读(598) 评论(0) 推荐(0) 编辑
  2013年7月9日
摘要: 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。 用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经离线。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。 比如有.. 阅读全文
posted @ 2013-07-09 10:22 Daniel.G 阅读(4270) 评论(0) 推荐(0) 编辑
  2013年5月8日
摘要: 在Linux环境下,串口名从ttyS0开始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作为通信串口。在打开ttyS0的时候,选项 O_NOCTTY 表示不能把本串口当成控制终端,否则用户的键盘输入信息将影响程序的执行; O_NDELAY表示打开串口的时候,程序并不关心另一端 的串口是否在使用中。在Linux中,打开串口设备和打开普通文件一样,使用的是open()系统调用。比如我么打开串口设备1也就是COM1,只需要:fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );打开的串口设备有很多设置选项。本文中 阅读全文
posted @ 2013-05-08 16:16 Daniel.G 阅读(3674) 评论(0) 推荐(0) 编辑
摘要: 串口的设置主要是设置struct termios结构体的各个成员值:#include<termios.h>struct termios{unsigned short c_iflag; //输入模式标志unsigned short c_oflag; //输出模式标志unsigned short c_cflag; //控制模式标志unsigned short c_lflag; //本地模式标志unsigned char c_line; //行标识unsigned char c_cc[NCCS]; //控制字符};这个结构中最重要的是c_cflag,通过对它赋值,用户可以设置数据传输率、 阅读全文
posted @ 2013-05-08 16:15 Daniel.G 阅读(1469) 评论(0) 推荐(0) 编辑
摘要: 串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIARS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于4%的情况下,传输电缆长度应为50英尺。Linux操作系统从一开始就对串行口提供了很好的支持 阅读全文
posted @ 2013-05-08 16:14 Daniel.G 阅读(3019) 评论(0) 推荐(0) 编辑
  2013年4月26日
摘要: USB描述符主机是通过标准的USB请求命令中的GET_DESCRIPTOR获得一个USB设备属性的描述符的。关于Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中,用于描述一个USB设备的所有属性。它的作用就是通过响应主机的请求命令操作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息,并为设备分配资源后,设备才能真正开始工作。标准的描述符有5种,USB为这些描述符定义了编号:1——设备描述符2——配置描述符3——字符描述符4——接口描述符5——端点描述符一个设 阅读全文
posted @ 2013-04-26 14:47 Daniel.G 阅读(649) 评论(0) 推荐(0) 编辑
  2013年4月22日
摘要: 1介绍1.1概览1.2当前OS支持2API2.1设备与接口2.2超时2.3数据类型2.4同步2.5返回值3函数3.1核心函数3.2设备操作3.3控制传输3.4块传输3.5中断传输3.6不可移植4例子4.1简单例子4.2源码包的例子4.3其他应用本文档描述libusb的API,以及如何开发USB应用。1介绍1.1概览本文档描述libusb-0.1的API和USB相关内容。1.2当前OS支持Linux 2.2或以上FreeBSD/NetBSD/OpenBSDDarwin/MacOSX2API2.1设备与接口一个设备可能有多个接口,所以一个句柄可以返回多个接口实例。不要忘记调用usb_claim_i 阅读全文
posted @ 2013-04-22 22:16 Daniel.G 阅读(2426) 评论(0) 推荐(0) 编辑
摘要: 驱动开发向来是内核开发中工作量最多的一块,随着USB设备的普及,大量的USB设备的驱动开发也成为驱动开发者手头上做的最多的事情。本文主要介绍 Linux平台下基于libusb的驱动开发,希望能够给从事Linux驱动开发的朋友带来些帮助,更希望能够给其他平台上的无驱设计带来些帮助。文章是我在工作中使用libusb的一些总结,难免有错误,如有不当的地方,还请指正。 Linux 平台上的usb驱动开发,主要有内核驱动的开发和基于libusb的无驱设计。对于内核驱动的大部分设备,诸如带usb接口的hid设备,linux本身已经自带了相关的驱动,我们只要操作设备文件便可以完成对设备大部分的操作,而另外一 阅读全文
posted @ 2013-04-22 22:12 Daniel.G 阅读(41250) 评论(0) 推荐(3) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页