中国新通信(技术版)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
Megalayer 商家主营业务是以独立服务器和站群服务器的,后来也陆续的有新增香港、菲律宾数据中心的VPS主机产品。由于其线路的丰富,还是深受一些用户喜欢的,有CN2优化直连线路,有全向国际线路,以及针对欧美的国际线路。这次有看到商家也有新增美国机房的VPS主机,也有包括15M带宽CN2优化带宽以及30M带宽的全向线路。Megalayer 商家提供的美国机房VPS产品,提供的配置方案也是比较多,...
久久网云怎么样?久久网云好不好?久久网云是一家成立于2017年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,久久网云目前提供有美国免费主机、香港主机、韩国服务器、香港服务器、美国云服务器,香港荃湾CN2弹性云服务器。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为...
天上云服务器怎么样?天上云是国人商家,成都天上云网络科技有限公司,专注于香港、美国海外云服务器的产品,有多年的运维维护经验。世界这么大 靠谱最重,我们7*24H为您提供服务,贴心售后服务,安心、省事儿、稳定、靠谱。目前,天上云香港大带宽物理机服务器572元;20Mbps带宽!三网CN2线路,香港沙田数据中心!点击进入:天上云官方网站地址香港沙田数据中心!线路说明 :去程中国电信CN2 +中国联通+...
应用程序错误该内存不能为read为你推荐
虚拟主机服务器虚拟主机与独立服务器区别asp主机请问虚似主机和Asp服务器软件都是一个意思吗国外空间租用国内和海外空间 域名 服务器托管 租用免费虚拟主机申请谁有1年免费的虚拟主机申请地址吖?台湾主机台湾的第一台电脑虚拟空间免费试用那位给我介绍个可以试用三天的虚拟空间。重庆虚拟空间重庆那里可以租用VSP主机免费网站空间那里有免费网站空间网站空间商网站备案为什么是空间商备案?求解北京网站空间网站空间哪里的好,
域名停靠 查域名 备案域名出售 smartvps 狗爹 42u标准机柜尺寸 名片模板psd 私有云存储 浙江独立 阿里云浏览器 umax120 hdd 腾讯总部在哪 台湾google 免费asp空间 免费蓝钻 域名和主机 葫芦机 hosting24 web是什么意思 更多