中国新通信(技术版)2007.
9CHINANEWTELECOMMUNICATIONS(TechnicalEdition)常,则任何终端机器都可以连接数据库服务器.
而且相对于互联网而言,局域网是相对安全的,可以不必要再进行很强的VPN保护.
其不足在于要求能够在总公司和分公司的网关级进行有关VPN虚拟网络的路由设置,对公司的网关级设备要求比较高;同时局域网内的数据传输没有得到VPN的安全保护,存在安全隐患;另外一点就是VPN安全连接需要对数据进行加密和解密的工作,对总公司的VPN服务器和分公司的VPN客户端的机器性能要求会比较高.
VPN组网方案二在总公司的接入网关处设立VPN服务器,在数据库服务器和所有能够访问数据库服务器的终端机器设立VPN客户端,将所有终端机器和数据库服务器组成了一个虚拟的安全的局域网,从而对在互联网之上的数据传输和局域网内的数据传输都进行了保护,其优势在于提供了更安全的数据保护,而且VPN服务器可以安装在总公司局域网内的任何一台机器上,从而不需要在总公司和分公司的网关级进行任何的路由设置,对网关级设备是透明的.
其不足在于需要在所有的终端机器上安装VPN客户端并设置有关VPN网络的路由,提高了VPN系统的复杂性,增大了VPN系统的安装和维护工作.
5总结随着网络安全的问题日益突出,通过VPN组建虚拟的安全的局域网已经被越来越多的单位和公司所接受.
同时,VPN还能把分布在不同网络环境下的终端机器组成一个局域网,方便了网络系统的访问和管理.
我们提出的两种VPN解决方案都利用了VPN技术的这两个优势,同时每个方案各有自己的优势和侧重点,用户可以从中选择最适合自己的方案来进行实施.
I2C(Inter-IntergratedCircuit)由Philips公司推出,是近年来在微电子通信控制领域广泛采用的一种新型总线标准.
它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信Linux系统下基于I2C接口的数据通信的实现高伟石江宏(厦门大学通信工程系厦门361005)摘要介绍在Linux系统下I2C总线结构、驱动编写以及I2C总线的软、硬件实现方式,并介绍了多线程技术在驱动调用过程中的应用.
该方案已在以MPC850芯片为核心的监控平台上实现.
关键词I2C总线多线程Linux系统网络与应用NETWORKANDAPPLICATION29NCHINANEWTELECOMMUNICATIONS(TechnicalEdition)SEP2007No.
17CHINANEWTELECOMMUNICATIONS(TechnicalEdition)速率较高等优点.
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据.
采用I2C总线的系统可以对周边硬件进行有效集中的管理,安全、便捷.
1I2C控制器如图1所示,MPC850的I2C控制器包含数据发送和数据接收模块、一个独立的波特率发生器BRG和一个控制单元.
SCL总线传输统一的收发时钟,SDA总线用于传输双向串行数据,并支持7bit的I2C地址.
I2C单元的工作状态分为主模式和从模式两种.
系统时钟由工作在主模式下的I2C单元的BRG模块通过SCL总线提供;当I2C单元工作于从模式状态下,该单元BRG模块停止工作,时钟由外部处于主模式工作状态的I2C单元通过SCL线提供.
并且同一时间,同一个串行信道上只有一个I2C单元可以工作在主模式状态下,其他的I2C单元都应工作在从模式下.
I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号.
如图2所示.
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据.
结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据.
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据.
不同I2C单元之间的数据总线SDA和时钟总线SCL相互连接时,需要通过一个上拉电阻与电源Vdd相连,当总线空闲时,两条总线都被置为高电平,互不影响通信.
I2C单元的SDA、SCL总线连接方法如图3所示.
2I2C驱动结构在使用I2C控制器时,首先调用si2c_init()函数进行I2C单元的初始化工作,需要根据不同项目的需要,配置好CPMram中的I2C相关控制器的参数.
如:I2C工作模式寄存器(I2MOD)、I2C波特率寄存器(I2BRG)、I2C中断寄存器(I2CER/I2CMR)和I2C命令寄存器(I2COM).
在初始化过程中,需禁止中断,以免其他进程影响初始化工作.
初始化部分代码如下:intsi2c_init(void);/*初始化I2C控制器、通信处理器CPM,并在系统中注册驱动*/{iip->iic_mrblr=128;/*最大接受字节数*/i2c->i2c_i2add=0x56;/*I2C单元物理地址,且唯一*/init_waitqueue_head(&iic_wait);/*初始化等待队列*/i2c->i2c_i2cmr=0;i2c->i2c_i2cer=0xff;/*禁止中断*/cpm_install_handler(CPMVEC_I2C,si2c_inter-rupt,(void*)i2c);/*中断函数注册*/data->dp_addr=m8xx_cpm_dpalloc(sizeof(cbd_t)*4);iip->iic_tbase=r_tbase=si2c_data.
dp_addr;iip->iic_rbase=r_rbase=si2c_data.
dp_addr+sizeof(cbd_t)*2;/*为接受和发送缓存分配地址空间*/}应用程序通过函数si2c_ioctl()的调用来控制驱网络与应用NETWORKANDAPPLICATION30N中国新通信(技术版)2007.
9CHINANEWTELECOMMUNICATIONS(TechnicalEdition)动.
分别使用I2C_CMD_READ和I2C_CMD_WRITE执行读写命令.
在ioctl中这两个命令会分别调用si2c_read()和si2c_write()函数对总线上的数据做相应的处理.
驱动程序与用户缓冲区交互使用函数copy_from_user()从用户缓冲区读数据以及函数copy_to_user()将数据复制到用户数据缓冲区.
si2c_ioctl()的主要代码如下:staticintsi2c_ioctl(structinode*inode,unsignedintcmd,unsignedlongarg){down_interruptible(&i2c_sem)switch(cmd){caseI2C_CMD_READ:si2c_read(&req);/*读I2C总线上的数据*/copy_to_user((si2c_request_t*)arg,&req,sizeof(si2c_request_t));caseI2C_CMD_WRITE:copy_from_user(&req,(si2c_request_t*)arg,sizeof(si2c_request_t));si2c_write(&req);/*写I2C总线上的数据*/}up(&i2c_sem);}si2c_read()函数的功能是对总线上的数据作读操作.
在作该操作前,需要对寄存器做相应设置.
在没有数据到达时,该线程将处于休眠状态,等待总线上的数据.
si2c_write()的实现同si2c_read()基本类似.
si2c_read()的代码如下:ssize_tsi2c_read(si2c_request_t*request){i2c->i2c_i2cmr=0x13;/*开启中断*/i2c->i2c_i2cer=0xFF;i2c->i2c_i2com=0x0;i2c->i2c_i2mod=(I2C_PDIVi2c_i2com=0x80;/*开启I2C单元*/interruptible_sleep_on(&iic_wait);/*等待I2C数据*/}当有数据到达时,系统将产生中断信号,将数据放入缓存中,调用中断处理函数si2c_interrupt(),等待后续处理.
中断处理函数主要代码如下:staticvoidsi2c_interrupt(void*dev_id){i2c->i2c_i2com=0x0;i2c->i2c_i2mod=0;i2c->i2c_i2cer=0xff;/*关闭中断*/wake_up_interruptible(&iic_wait);/*进程唤醒*/}I2C单元的读写流程如图4所示:3应用层软件的编写在函数调用si2c_read()和si2c_write()对缓存进行读写的时候,如果缓存中没有数据可以读,或者暂时无法向主端的I2C写数据的时,通常要进入中断网络与应用NETWORKANDAPPLICATION31NCHINANEWTELECOMMUNICATIONS(TechnicalEdition)SEP2007No.
17CHINANEWTELECOMMUNICATIONS(TechnicalEdition)等待状态,也就是我们通常所说的阻塞状态.
这时,CPU而正在运行却申请不到某个资源,则调用inter-ruptible_sleep_on()进入睡眠状态.
进入休眠状态可以使cpu不为没有到达的数据空转.
为了不耽误MPC850其余的控制工作,满足系统实习性的要求,有必要在系统的软件设计中采用多线程调度的方式.
即在MPC850处理其他任务的同时中增加一个处理I2C数据的辅助线程.
3.
1线程的创建本系统中,我们使用POSIX线程库进行多线程的编写.
Pthread本来是一套用户级线程库,但在Linux上实现时,却使用了内核级线程来完成,这样的好处是,可以充分的提高程序的并发性,而不必担心会由于阻塞影响其他的线程的运行.
当一个多线程的程序开始执行时,已经有一个线程在运行,它执行程序的main()函数.
此时我们调用pthread_create()函数创建一个新的线程.
线程使用默认属性,调用如下:pthread_create(&p_thread,NULL,process_moni-tor_message,NULL);process_monitor_message()函数是处理I2C数据的主函数.
3.
2线程同步本系统中的几个线程都要运行同一个协议状态机处理模块,而在同一块内存空间运行多个线程时,要注意一个基本的问题就是不要让线程之间相互破坏.
因此,在调用协议处理函数时,须使用互斥量来保证同一个时间只有一个线程调用这个协议状态机处理模块.
创建互斥量,必须先声明一个类型为pthread_mutex_t的变量,然后对它进行初始化.
程序如下:pthread_mutex_ta_mutex;pthread_mutex_init(&a_mutex,NULL);锁定一个互斥锁使用函数pthread_mutex_lock(),这个函数尝试锁定一个互斥量,如果这个互斥量已经被其他线程锁定,此函数把调用自己的线程挂起,一旦互斥量被解锁,该进程将恢复运行并再次锁定这个互斥量.
当线程做完它需要完成的事情以后,必须释放这个互斥量.
锁定和解锁互斥量的代码段如下:intrc=pthread_mutex_lock(&a_mutex);if(rc){/*出现错误*/perror("pthread_mutex_lock");pthread_exit(NULL);}/*mutex已经被锁定,可以处理协议状态机*/……/*软件协议状态机处理代码段*/rc=pthread_mutex_unlock(&a_mutex);/*协议处理完毕,释放mutex*/if(rc){/*出现错误*/perror("pthread_mutex_unlock");pthread_exit(NULL);}4结束语本文主要介绍了一种在Linux系统下的I2C数据通信的实现.
I2C总线技术由于控制方便,速率高等优点,已经在通信领域得到广泛的应用.
本文所介绍的I2C通信方式已经应用于以MPC850为核心芯片的监控系统中.
CHINANEWTELECOMMUNICATIONS(TechnicalEdition)SEP2007No.
17网络与应用NETWORKANDAPPLICATION32N
瓜云互联怎么样?瓜云互联之前商家使用的面板为WHMCS,目前商家已经正式更换到了魔方云的面板,瓜云互联商家主要提供中国香港和美国洛杉矶机房的套餐,香港采用CN2线路直连大陆,洛杉矶为高防vps套餐,三网回程CN2 GIA,提供超高的DDOS防御,瓜云互联商家承诺打死退款,目前商家提供了一个全场9折和充值的促销,有需要的朋友可以看看。点击进入:瓜云互联官方网站瓜云互联促销优惠:9折优惠码:联系在线客...
优惠码50SSDOFF 首月5折50WHTSSD 年付5折15OFF 85折优惠,可循环使用荷兰VPSCPU内存SSD带宽IPv4价格购买1核1G50G1Gbps/3TB1个$ 9.10/月链接2核2G80G1Gbps/5TB1个$ 12.70/月链接2核3G100G1Gbps/7TB1个$ 16.30/月链接3核4G150G1Gbps/10TB1个$ 18.10/月链接阿联酋VPSCPU内存SS...
reliablesite怎么样?reliablesite是一家于2006年成立的老牌美国主机商,主要提供独服,数据中心有迈阿密、纽约、洛杉矶等,均免费提供20Gbps DDoS防护,150TB月流量,1Gbps带宽。月付19美金可升级为10Gbps带宽。洛杉矶/纽约/迈阿密等机房,E3-1240V6/64GB内存/1TB SSD硬盘/DDOS/150TB流量/1Gbps带宽/DDOS,$95/月,...
应用程序错误该内存不能为read为你推荐
海外虚拟主机空间有免费的性能好的国外虚拟主机空间吗?独立ip主机独立IP主机和CDN主机的详细区别?英文域名英文域名与中文域名有啥区别网站空间申请网站空间申请北京网站空间自己弄一个简单的网站,大概需要办理什么,大概需要多少钱?网站空间免备案哪有不用备案的网站空间?郑州虚拟主机请问郑州哪家公司可以做网站还有相应服务器服务的?郑州虚拟主机什么是双线虚拟主机?长沙虚拟主机长沙双线虚拟主机湖南稳定双线虚拟主机湖南双线主机租用推荐一个?华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题
me域名注册 域名反查 国外域名 highfrequency 息壤主机 BWH 韩国加速器 gitcafe 香港新世界电讯 标准机柜尺寸 元旦促销 有奖调查 网站木马检测工具 闪讯官网 免费asp空间 腾讯网盘 netvigator 万网服务器 卡巴斯基官方下载 crontab 更多