Linux智能终端论文

2024-10-18

Linux智能终端论文(精选8篇)

Linux智能终端论文 篇1

0 引 言

近些年来, 伴随着移动通信需求的不断增长以及新技术在移动通信中的应用, 移动网络得到了迅速发展。第三代移动互联网络正保持着蓬勃发展的势头。随着我国TD-SCDMA的成长和3G通信时代的到来, 我国的3G手机及其相关通讯产品的生产更将出现飞跃式发展。3G市场的国际竞争不断加剧, 移动终端软件平台在手机软件领域的作用也日益凸显。然而, 目前国内缺乏具有完全自主知识产权的智能手机软件平台, 这正是我国3G产业链的瓶颈所在。

本研究提出一个开放的、面向3G (特别是TD-SCDMA) 智能手机的移动Java软件平台。该平台基于Linux手机操作系统, 具有易于移植、安全性高、维护方便、支持丰富的业务能力等特点。

1 手机软件平台的现状

在2G时代的手机软件领域, 争夺的焦点都集中在手机操作系统上。然而在3G时代, 软件平台将成为与操作系统并重的上游产业链环节之一。一方面, 以数据业务为主要卖点的3G时代中, 运营商大规模定制手机是必然趋势。另一方面, 从技术发展趋势上看, 3G终端需要支持如流媒体、VoIP、在线浏览、高速下载等丰富的移动业务应用。种种迹象表明, 软件平台在产业链中的地位将随着3G通信时代的到来而大大提升。

长期以来, 智能手机平台一直以Symbian, Windows Mobile和Linux三大主流操作系统为主导。随着各手机厂商间竞争的加剧, 市场格局不断发生变化。苹果推出的iPhone获得了巨大成功并打破了市场平衡。Google联合众多手机终端厂家组成了开放手机联盟, 大力提倡平台开放。Google新推出的Android平台, 以其开放和容易使用等特点而受到市场的广泛青睐。

2 系统研究

2.1 移动Java平台的软件体系结构

智能手机的系统软件设计是智能手机系统实现的关键难点, 设计的优劣直接关系到系统的稳定性、可移植性和可扩展性。传统软件平台与经过改造的移动Java软件平台的体系结构比较, 如图1所示。

从图1中可以明显看出, 移动Java平台在最上层为应用开发人员提供的接口全部为Java API, 软件平台具有简化应用开发等优点。传统软件平台层次结构复杂, Java执行性能也较为低下, 而移动Java平台的软件体系结构优化了Java的执行性能, 提高了内在使用效率和分配效率, 并使平台更加紧凑。移动Java平台最底层是系统层, 主要实现对嵌入式Linux内核的移植、剪裁, 以使它直接支持Java虚拟机 (JVM) ;第2层是系统服务层, 包括通信协议栈、设备驱动模块接口和本地引擎等;第3层是中间层, 包括智能手机中间件系统和嵌入式浏览器层, 嵌入式GUI实现人机交互接口, 以及各种3G业务组件等;最上层是应用组件层, 为应用开发人员提供Java API接口。

2.2 Linux内核的移植及JVM的优化

为实现软件系统结构的开放性和可扩展性, 以及对内存的高效利用, 需要对Linux操作系统内核进行改造以直接支持JVM。

本平台选用Linux2.6进行移植和裁剪。Linux 2.6内核中作了提高中断性能和调度响应时间的改进, 系统的移植更加方便, 还改善了I/O子系统, 增添了更多的多媒体应用功能。Linux移植包括硬件设备驱动的Linux内核和文件系统。针对ARM平台, 对源码进行必要的修改, 然后根据智能手机硬件设备的需要, 添加修改一些设备的驱动, 在编译内核时做一些裁减工作, 针对ARM平台的交叉编译, 生成一个内核映像文件, 然后将内核映像文件烧写到智能手机Flash存储设备的相应位置上[1]。

Linux的启动速度是智能手机平台性能的一个关键。嵌入式Linux的启动过程大致分3个阶段:引导装载程序 (Bootloader) , Linux内核, 文件系统[2,3]。Bootloader最基本的功能是在系统启动时把Linux内核从Flash中拷贝到内存中。Linux内核是在内存中运行的, 为了改善Linux的启动速度, 在BootLoader阶段可以采用XIP (Exexute In Place) 技术, 操作系统内核直接在Flash中运行, 不需要拷贝到RAM[4]。

由于嵌入式手机资源有限, 在它上面运行多任务Java程序时, Java的执行性能也是平台性能的一个关键因素。改造后的Linux内核是多线程的, 它提供内存管理、资源封锁、线程控制和调度以及一个设备驱动接口, 内核的进程模型如图2所示。

与传统的Java环境不同, 改造过的Linux内核运行一个JVM的实例, 而不是为每一个应用程序单独创建一个JVM。这个JVM与系统内核高度集成, 支持多任务管理, 并能很好地支持J2ME的CLDC与CDC两种配置模式。当一个应用程序启动时, 就有一个新的Java线程 (JProc) 被创建, 每一个Java线程都有它自己的应用程序类载器和自己的安全管理器。应用程序使用单独的线程能够保证它们之间不会相互干扰。尽管每个Java线程都有自己的类装载器, 但Linux内核只有一个系统类装载器来装载系统的类, 这些系统的类只在系统启动时初始化一次, 而为以后的所有应用程序所共享并多次使用, 这样就节省了时间和内存上的开销。单独的JVM以及系统类的共享使用优化了内存的使用效率和Java执行效率。

为提高JVM的执行速度, 本研究优化了系统资源的共享, 引入即时编译JIT[5]和Native线程等改造字节码加速器, 优化本地方法接口NMI (同时支持JNI, 但优先采用NMI) , 提高JVM垃圾回收效率。垃圾回收主要采用标记/清除 (Mark-Sweep) 算法, 它对堆空间中的所有对象进行标记, 可以做到精确可靠地回收, 并且不占用额外的内存空间。

2.3 系统服务层

系统服务层集成了GSM/GPRS/TD-SCDMA等2G/3G多模协议栈, 为设备驱动模块提供统一的接口以及支持本地引擎和多媒体编解码器的开发, 使平台支持多种通信标准和多个芯片组方案, 增强平台的可移植性和可扩展性。对于TD-SCDMA/GSM/GPRS双模终端, 可以做到自动模式切换。在GSM/GPRS模式下, 终端可以监测和报告LCR (TD-SCDMA采用时分双工 (TDD) 的工作方式, 码片速率为1.28 Mchip/s, 是一种低码率的TDD工作模式) 小区的信息, 并且如果LCR小区满足条件, 终端可以重选到LCR小区或网络的控制之下发起小区改变或者切换到LCR小区;在TD-SCDMA模式下, 终端也可以监测和报告GSM/GPRS小区的信息, 并且能够根据无线资源的情况, 自动切换到GSM模式工作[6,7]。自动双模终端软件体系结构的设计方案如图3所示。

自动双模主要体现在无线资源管理部分 (RR) , 它实现了对原有成熟的GSM/GPRS和TDD-LCR单模稳定系统的升级和重用, 这样的设计满足目前协议的要求, 而由于它重用了以前的模块, 故工作量小。

2.4 中间层

中间层包括智能手机图形用户接口、智能手机中间件系统以及嵌入式浏览器层, 嵌入式GUI实现人机交互接口, 中间件支持Java程序和游戏的下载与运行。

本平台的重要特点之一就是开放, 它提供支持3GPP、OMA及OMTP规范、多媒体引擎和编/解码器、图形等Java库、图形引擎及渲染、设备管理、主题管理、WAP协议栈、网络与连接、数字证书管理、J2SE安全特性、支持TD-SCDMA/GSM双/多模的通话、应用程序管理, 以及各种3G数据业务组件的开发。另外引入了优化的Swing图形组件以增强用户一致体验, 平台图形子系统的设计如图4所示。

通过基于JSR-184的3D引擎、渲染和帧缓冲管理技术来优化性能和保持一致的界面风格。本平台还将支持JCP后续发布的新JSRs。

2.5 平台应用服务组件开发

追求个性化的手机在界面、键盘等方面采用非统一的标准, 所以手机操作系统很难真正统一。为保证不同业务在不同终端的互通, 本平台在应用软件层统一了API接口, 开发了支持GSM/TD-SCDMA等协议栈的通话等业务组件及应用程序管理器、事件服务等服务组件, 并为上层应用开发全部以Java APIs的方式提供接口, 支持面向J2ME标准JSR的Java APIs。这些组件及Java应用可以完全移植到其他平台。平台Java API的结构图如图5所示。

3 结束语

现阶段手机操作系统及软件开发平台基本上都是国外产品, 特别是在高端智能手机领域, 国内手机操作系统及软件开发平台与国外产品有着非常大的差距, 产品附加值不高, 核心竞争力低下。本研究提出了基于Linux系统和Java技术的手机开发平台的研究。通过研究开发自主知识产权的移动Java软件开发平台, 不但可以减少对国外技术的依赖、降低产品成本, 还能够增加出口, 带动各种增值服务的大力发展, 具有巨大的经济效益和社会效益。

摘要:为了研究具有自主知识产权的智能手机软件平台, 提出了一个基于Linux的开放手机操作系统和采用Java技术的手机软件平台。平台共分4层:最底层是操作系统层, 实现对嵌入式Linux内核的移植、剪裁;第2层是系统服务层, 通信协议栈、设备驱动模块接口和本地引擎等都由此层来处理;第3层是中间层, 包括智能手机中间件以及各种3G业务组件等;最上层是应用组件层, 为应用程序提供JavaAPI。研究结果表明, 该研究缩小了与国外技术水平的差距, 提高了竞争力。

关键词:Linux,智能手机,Java虚拟机

参考文献

[1]周绪宏, 梁阿磊, 戚正伟.基于嵌入式Linux的智能手机系统软件的设计与实现[J].计算机应用与软件, 2008, 25 (3) :59-62.

[2]LABROSSE J J.嵌入式系统构件[M].北京:机械工业出版社, 2002.

[3]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社, 2006.

[4]崔烨.基于Linux平台的智能手机软件设计与实现[D].成都:电子科技大学计算机科学与工程学院, 2007.

[5]GIUSEPPE D G, ANTONELLA D S, GIOVANNI M, et al.JITCompiler Optimization for Stack-gased Processors in Em-bedded Platforms[C].Proceedings of the 4th InternationalWorkshop on Java Technologies for Real-time and EmbeddedSystems.Paris:[s.n.], 2006.

[6]苗强, 汪秋辉, 梅顺良.TD-SCDMA/GSM/GPRS双模终端实现浅析[J].电信科学, 2006 (3) :73-75.

[7]朱九英.基于Linux系统智能控制节点的通讯应用协议[J].机电工程, 2009, 26 (3) :38-40.

Linux智能终端论文 篇2

#关闭数据包缓存,测试时开启查询时直接读缓存不经过lua preresolve

代码如下复制代码disable-packetcache=yes

forward-zones=com=108.61.242.102

local-address=0.0.0.0

lua-dns-script=/tmp/b.lua

#转发所有域到pdns server

forward-zones=.=127.0.0.1:54

lua:

代码如下复制代码

function preresolve ( remoteip, domain, qtype )

pdnslog(“a test message.. received query ”..domain..“ from ”..remoteip..“ on ”..getlocaladdress());

ret={}

if qtype ~= pdns.A then return -1, ret end --非A记录查询跳过,后端查询

local ips = {“192.168.1.1/32”, “10.1.0.0/16”, “127.0.0.0/24”}

if matchnetmask(remoteip, ips) and domain == “www.example.com.”

then

ret[1]= {qtype=pdns.A, content=“85.17.220.215”, ttl=86400}

setvariable()

return 0, ret

else

setvariable()

return -1, ret

end

Linux智能终端论文 篇3

1 设备文件

一般认为,文件是信息的存在方式,文件包含数据,具有属性,通过目录中的名字被标示。可以从一个文件读取数据,也可以向一个文件写入数据。一个带有键盘和显示单元的终端也和文件类似,键盘输入就像数据一样能够被程序读取,而一个进程吧写入终端的字符显示在屏幕上。对于Linux系统来讲,设备和磁盘文件是同一种对象,每个设备都被当做一个文件。每个设备有一个文件名,一个i节点号,一个文件所有者,一个权限位的集合和最近修改时间。不同的是磁盘文件的i节点指向文件的信息,而设备文件的i节点指向设备的驱动程序。

2 终端连接属性

对于磁盘文件来讲,系统调用open建立了进程到文件的一个连接,同样,终端的连接也具有属性,如波特率、奇偶位、暂停位的个数等。还可以关闭终端的回显功能以保证密码的安全,回显字符既不是键盘任务的一部分,也不是程序的工作,回显字符是连接的一个属性。处理进程和外部设备间数据流的内核子程序的集合称为终端驱动程序或tty驱动程序。驱动程序包含很多控制设备操作的设置,进程可以读、修改这些驱动控制标志。

3 tty驱动程序

tty驱动程序包含很多对传入的数据所进行的操作,主要有4类:

输入:如何处理从终端来的字符

输出:如何处理流向终端的字符

控制:字符如何被表示,包括位的个数、奇偶性、停止位等

本地:驱动程序如何处理来自驱动程序内部的字符

改变终端驱动程序的设置的操作分为三个步骤:

使用tcgetattr系统调用从驱动程序获得属性

修改所要修改的属性

将修改的属性通过系统调用tcsetattr送回驱动程序

4 系统调用

对终端的控制使用两个系统调用:tcgetattr()和tcsetattr(),分别简要介绍:

每个属性在标识集中都占有一位。属性的掩码定义在termios.h中,要测试一个属性,需要将标志集与那个位的掩码相与。要启动这个属性,将该位开启。要禁止这个属性,将该位关闭。

每个标志及均有不同的键值,不同的键值代表不同的属性,此处键值和掩码的含义相近,本文不再区分,所谓取值就是将标志集和掩码进行逻辑或操作,如c_flags取键值IHGPAR,就会忽略奇偶校验错误,c_oflag取键值OLCUC,就会将输入的小写字母转换成大大写字母,标志集c_iflag取键值ECHO就会显示输入字符,关于键值的详细取值及含义在文献中一多有解释,不再赘述,也可参看Linux的帮助文档。

5 实际应用实例

5.1 查看终端连接属性

终端连接具有多种属性,查看当前终端连接的属性,通过终端标志集和相应的掩码进行位逻辑操作,可以判断终端连接是否具有某种属性。例如查看当前连接是否开启了字符回显,核心代码如下:

代码分析:

本例首先通过tcgetattr系统调用得到了文件描述符为0的终端连接状态,文件描述符0特指标准输入,在Linux系统中默认为键盘。然后将相应的标志集与实现规定的掩码做逻辑与操作,通过结果判断当前是否开启该属性。

5.2 修改终端连接属性

核心代码:

实例分析:

本例示范了如何打开或者关闭回显,通过命令行给予不同的参数,控制不同的状态。同样首先使用系统调用tcgetattr得到连接属性,然后将属性的标志集与掩码进行逻辑或操作,保证打开相应的属性,然后使用系统调用tcsetattr将修改后的标志集写回内核。

5.3 修改控制字符数组

示例代码:

代码分析:

首先使用系统调用tcgetattr得到连接属性,将连接属性保存在struct termios类型的变量term中,然后将变量term的控制字符数组c_cc[VEOF]位的值修改为0x07,最后将修改后的属性控制结构保存写回内核。控制数组的VEOF为的含义是“end of line”。

6 结束语

终端是控制使用Linux系统的重要方法和途径,Linux使用的环境很多,终端应当能够适应不同的使用环境,如在输入密码时显示器不应当回显密码以保证安全。所以终端与Linux系统的连接方式不是固定不变的而是可以加以调整,本文介绍了终端的属性调整的基本方法,并举例加以说明,实际应用中可能会遇到更加复杂的环境,但是对终端属性进行调整的方法是不变的。

参考文献

[1]祝良荣.Linux下tty终端设备的工作机制的分析及应用[J].现代电子技术,2006(13):112-114.

[2]彭淑芬,张颖江,崔成法.Linux伪终端设备及其在L2TP中的应用[J].计算机工程与设计,2005(7):1955-1957.

[3]关宝金.Linux设备驱动之我见[J].中国新技术新产品,2010(5):30.

[4]张毅,赵子顾.Linux设备驱动中的互斥机制[J].数字通信,2009(6):45-48.

Linux智能终端论文 篇4

视频监控系统是指为实现指定应用场所的安全, 并实现对相关情况了解而进行的对视频数据采集、传输及管理的系统。该体系具备便捷性和直观性, 因此已被应用于多个社会生活领域内。随着宽带技术的不断发展以及4G网络的不断普及, 网络视频监控系统的视频数据通过网络传输也已经走进了人们的生活, 将网络视频监控应用于家庭, 可以使用户远程实时查看家居内的视频监控信息, 并且为家庭遭遇恶意入侵提供必要的证据。因此本文设计了基于Linux的智能家居视频监控系统。本文以基于ARM-Cortex A9处理器的FS4412开发平台作为图像处理采集以及处理单元, 并在开发平台上移植Linux操作系统, 并搭建嵌入式web服务器即boa以及视频流服务器Mjpg-streamer, 把摄像头采集到的图像数据压缩后, 再通过内部总线送到web服务器, 实现在网页端的实时查看功能。

2系统总体介绍

本系统核心处理器采用基于ARM Cortex A9架构的三星Exynos 4412。这款处理器采用32nm HKMG (高K金属栅极技术) 制程, 支持双通道LPDDR2 1066, 具有高性能、低功耗的优良特性。摄像头采用的是OV 3640, 本系统通过FIMC操作摄像头。摄像头采集到的图像数据格式为YUYV格式, 由于本设计需要将图片保存在本地以及进行网络传输显示到网页上, 需要将YUYV格式的图像转换为mjpg格式, 因此在开发平台上还进行了jpeg库的移植。通过在FS4412开发平台上搭建的Mjpg-streamer视频流服务器, 可以将图片保存到本地或传输显示到网页, 网页的实现是通过构建的web服务器即boa来完成。

3系统硬件设计

本系统FS4412开发平台芯片采用的是三星Exynos 4412四核处理器, 其基于ARM Coterx A9架构, 主频为1433MHz, 最高可达1.6GHz, 性能强劲且功耗低。板载的DDR3 SDRAM高达1GB, ROM采用了4GB的eM MC, 较传统的Nand Flash多了一个主控IC, 提供了标准接口并管理内存。本系统的硬件设计框图如图1所示。

本系统中摄像头采用的OV3640, 它是一个能提供单片VGA摄像头和影像处理器的所有功能的图像传感器, 支持整帧输出、子采样、取窗口等模式, 支持8位图像分辨率, 支持的数据格式有很多种, 包括RAM RGB、RGB565/555.444、YUV422/420、YCb Cr422等格式, 本系统采用的摄像头数据输出格式为YUV422。

4系统软件设计

4.1 linux交叉编译环境的建立

搭建嵌入式开发平台, 主要工作有:搭建linux交叉编译环境、移植bootloader、移植linux内核、制作根文件系统等。

本课题的代码是在基于X86体系架构的PC端linux开发环境下编写的, 然而最终代码是要运行在基于ARM Cortex-A9的开发平台上的, 因此需要搭载交叉编译环境。本课题使用的是arm-none-linux-gnueabi-gcc编译工具链。我们对从互联网上获得的交叉编译器执行解压操作, 并将其实现于对应文件中的储存, 而后对环境变量进行新增。修改文件/etc/bash.bashrc并添加如下内容:

Export PTAH=$PATH:/home/linux/toolchain/gcc-4.6.4/bin然后重启配置文件

$source/etc/bash.bashrc

4.2 bootloader的移植

在嵌入式操作系统中, BootL oader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图, 从而将系统的软硬件环境带到一个合适状态, 以便为最终调用操作系统内核准备好正确的环境。本系统采用的BootL oader为uboot, u-boot是一种普遍用于嵌入式系统中的Bootloader。将下载好的uboot拷贝到相应的文件夹下, 解压uboot源码并进入目录, 修改顶层Makefile, 在Makefile中需要添加代码, 指定交叉编译工具链, 然后指定产品CPU, 并且在添加了三星提供的初始引导加密后, 编译生成的u-boot就能被引导运行。

4.3 linux内核的移植

操作系统的核心是内核, 内核的职责有:进程调度、内存管理、提供文件系统、创建和终止进程、对设备的访问、联网、提供系统调用应用编程接口。

4.3.1将下载好的内核压缩包拷贝到相应的文件夹下, 并解压

$ tar xvf linux-3.14.tar.xz

4.3.2修改内核顶层目录下的Makefile, 指定本系统所用体系架构以及所使用的交叉工具编译链。

ARCH?=arm

CROSS_COMPILE?=arm-none-linux-gnueabi-

4.3.3导入默认配置

$make exynos_defconfig

4.3.4配置内核

$ make menuconfig

该命令执行时会弹出一个菜单, 我们可以对内核进行详细的配置。

4.3.5编译内核:

$ make u Image

通过上述操作我们就能够在arch/arm/boot目录下生成一个u Image文件, 这就是经过压缩的内核镜像。

4.4嵌入式web服务器

本课题采用boa作为嵌入式web服务器, boa服务器需要很少的资源即可实现很快的速度。本课题通过CGI实现在网页端与FS4412开发平台的交互。

CGI:通用网关接口 (Common Gateway Interface) 是一个Web服务器主机提供信息服务的标准接口。通过CGI接口, Web服务器就能够获取客户端提交的信息, 转交给服务器端的CGI程序进行处理, 最后返回结果给客户端。

4.5 mjpg-streamer视频流服务器

摄像头采集到的数据格式是YUYV, 本课题需要将YUYV数据保存为图片, 且经过网络传输显示到网页上, 因此需要移植jpeg库。

$tar xvf jpegsrc.v8b.tar.gz

$cd jpeg-8b

$./configure--prefix=/home/david/Exynos4412/test/mjpg-streamer/jpeg

--host=arm-none-linux-gnueabi

--prefix用来指定编译后软件的安装路径;

--host用来指定编译时使用的工具链;

输入make命令即可将jpeg库安装成功, 然后将编译好的库文件拷贝到根文件系统中。

然后需要移植视频流服务器Mjpg-streamer。首先修改makefile文件, 修改完毕后需要修改v4l2uvc.c源代码, 经过上述一系列操作后, 就可以在网页上查看摄像头采集到的数据。

5结论

本系统以基于ARM Cortex-A9处理器的FS4412为开发平台, 在开发平台上移植Linux操作系统, 通过搭建的Mjpg-streamer视频流服务器以及嵌入式web服务器, 实现了将摄像头采集到的数据上传到网页及保存到本地的功能。经过测试, 本系统达到了预期效果, 具有一定的价值, 如图3-5所示。

摘要:结合实际, 针对基于Linux的智能家居视频监控系统进行了论述。

Linux智能终端论文 篇5

一、智能家居系统的主要结构组成

在一个通用的智能家居系统中, 主要是根据用户的需求来设置智能节点, 通常包含门禁系统, 视频监控, 家用电器, 数据采集等。智能家居系统主要包括终端节点、智能网关和上机位系统等三个部分, 智能网关是统一管理终端节点的控制设备。如图1所示。

智能家居系统中终端节点主要有家用电器, 水表电表, 门禁节点, 视频监控, 防盗报警等等, 这些设备通过Zigbee网络与智能网关进行通信, 并把数据转输到网关中进行解析, 智能网关把解析后的数据通过以太网传输到用户的手中, 从而实现用户对末端节点的监测和控制。

二、网关的硬件结构

智能网关主要板载嵌入式处理器, Zigbee网关协调器, 天线, 串口, 以太网接口等模块。

1、网关采用三星公司主流Cortex-A8嵌入式处理器, 该处理器是采用的芯片是Samsung S5PV210, S5PV210采用了ARM Cortex TM-A8内核, ARM V7指令集, 主频可达1GHZ, 64/32位内部总线结构, 32/32KB的数据/指令一级缓存, 512KB的二级缓存, 可以实现2000DMIPS (每秒运算20亿条指令集) 的高性能运算能力。其该处理器支持TCP/IP协议, 安卓软件和Zigbee等应用。。

2、Zigbee网关协调器是采用德州仪器设备公司主流CC2530无线收发芯片组成智能网关协调器, 它作为Zig Bee网络的协调器, 负责家庭内网络的建立, 对各个终端节点的入网加以验证。Zigbee发收模块部分, 是将接收到的无线Zigbee信号通过串行通信的方式传送到处理器芯片, 另一个面, 处理器发送数据的时候, 也是通过串行通信的方式, 将数据传送到Zigbee收发模块, 然后模块将数据以Zigbee协议进行发送。其采用的无线协议是zigbee2007。

3、网关通过外扩LAN9220网卡芯片和RJ-45的水晶头来实现联网功能。LAN9220集成了以太网的MAC和PHY, 符合IEEE802.3/802.3u标准, 支持全双工和半双工的模式, 能够自动生成并检查32位的CRC, 其引脚数少且体积小巧, 适用于小型系统设计。

三、嵌入式Linux网关的软件设计

由于智能网关要处理的数据量比较大, 不同设备之间的协议转换复杂, 因此软件设计考虑采用多线程的编程技术。多线程的编程技术优点在它可以把上行数据和下行数据分开处理, 且两个线程可同时运行, 节省了运行时间。这样既充分发挥嵌入式Linux网关的网络性能, 又能获得最大的通讯效率和稳定性[1]。网关的网络编程是通过Socket接口来实现的, 系统在网关和上机之间建立了一个面向连接的服务, 使网关用无线或者有线的方式和上位机进行通信。在系统工作的主程序中, 网关服务器不断地检测来自设备终端和来自用户终端的连接请求, 当从任一端收到请求命令时, 服务器被激活并创建一个子进程与发送请求端通信, 直到通信结束服务器方才结束该进程, 而主程序返回继续检测来自其他终端的连接请求。智能网关软件设计主流程图如下图所示:

3.1网关数据库的选择

嵌入式系统可用的数据库是很多种, 本文选用SQLite数据库, SQLite是一种开源数据库, 免费使用, 功能完善, 体积小巧, 具有可自由授权, 可移植且有多种API接口等特点[2]。首先把SQLite源码移植到网关平台上, 然后在SQLite中创建一个用户终端信息表和一个设备终端信息表。用户终端信息表主要存储用户终端的信息, 包括用户名和密码等。设备终端信息表主要记录设备终端的状态, 从Zig Bee协调器发来的数据经解析后存在这张表中。

3.2创建网关的多线程

在嵌入式Linux系统中, 创建一个进程必须分配给它独立的地址空间, 同时还要建立从多的数据表, 而创建一个线程, 可以共享相同的地址空间和很多数据, 节约了运行时间。但时在创建线程时必须考虑到其执行的先后顺序, 这样线程运行时才不会冲突[3]。在Lunux中, 线程的创建要遵循POSIX线程接口, 称为pthread。在编写程序时要先要调用pthread.h做为头文件, 然后使用函数pthread_create来创建一个线程。在线程结束时, 通过函数pthread_exit来结束一个线程, 并返回相关参数。

3.3与串口RS-232的通信

RS-232是工业设备中常用的一种串口, 由于其通讯简单, 连线少而被定义为标准接口。嵌入式Linux网关调用串口进行通信的基本流程为打开串口, 初始化串口, 读写串口, 关闭串口。串口初始化包括串口选择、波特率设置、数据位数选择、校验码选择、停止位设置等。

3.4网关服务器的socket编程

Socket (套接字) 是两组网络数据实现双向通信并进行数据交换的一个端口, 主要是描述IP地址和端口。Socket可看成是在网络应用层和传输层之间的一个虚拟层, 当成一个接口以供不同程序的调用, 以实现网络进程之间的双向通信。网络的Socket数据传输是一种特殊的I/O, 因此Socket也是一种文件描述符, 常用的有以下三种类型:流式Socket、数据报Socket和原始Socket[4]。本文所采用的是流式Socket编程技术, 对客户端而言, 智能网关相当于Socket的服务器。

四、结语

本系统的中软件设计, 可以实现智能网关的功能, 一方面可以读取终端节点的数据, 另一方面可以通过Internet与电脑或手机通信, 使人们可以方便地通过手机、平板电脑等设备与智能家居系统进行通信, 远程读取信息, 远程控制系统中的终端设备。但是智能家居系统是非常复杂且庞大的, 涉及到的技术领域广泛, 在设计网关的过程中, 发现网关还有许多地方需要改善, 比如网关的功能还比较单一, 接口较少, 在未来的研究工作中, 还应多拓展网关的功能接口。另外, 网关的系统安全性能还有完善, 提高网关的安全性会使大大增加用户的满意度。

参考文献

[1]吴晟, 苏庆堂, 罗斌等, 基于Soctet和多线程技术的并发服务器的研究[J].昆明理工大学学报 (理工版) , 2006, 4:6-9.

[2]王京谦, 万莅新, 开源嵌入式数据库Berkeley DBt SQLlite的比较[J]。单片机与嵌入式系统应用.2005 (2) :5-7

[3]Stevens W.R, Rago S A, Advanced Programming in the UNIX Environment (Second Edition) , [M].London:Pearson Education, 2013.154-155

Linux智能终端论文 篇6

一、智能DNS实现

Linux系统是服务器方面比较稳定的操作系统, 而bind是现今互联网上最常使用的DNS服务器软件。通过在linux系统下安装bind便可实现智能DNS解析。

主要的实现原理及方法如下:对于内网的IP地址如192.168.88.100浏览网页的大致过程如下, 当打开一个网址时, 首先需要请求内网的DNS服务器来获得对应网址的IP地址, DNS服务器收到请求后, 首先查询自己缓存中是否存在对应的记录, 若有, 直接返回结果, 若没有, 则根据用户的来源地址, 进行智能解析, 判断是移动还是电信或是联通, 若采用了移动的线路上网, 送往移动出口解析, 解析结果返回本地作为缓存保存, 以便下次解析。

以上实现方法可以通过在BIND的主配置文件named.conf下添加一条ACL规则, 本ACL规则可以单独做一个acl.conf文件来引用, 更方便维护。本条定义了根据目的地址区分的去缓存的解析ACL

其余的可据此分别定义根据源地址区分的去电信、联通、移动等方面的ACL文件, 如去电信方向的如下

acl TELECOM

{10.20.0.0/16;};

ACL文件主要是为了区分不同网络出口对应的内网地址。以下为name.conf文件, 主要包含两部分文件, 一是视图view_CACHE, 作为本地的缓存解析对应的文件, 缓存常用的网址及本地的视频文件, 作为一个缓存服务器, 另一部分是view_TELECOM等作为高速缓存及转发服务器用, 对内网无法解析到的地址, 直接转发到外网来解析。

Name.conf主配置文件主要有四个视图组成, 第一个视图文件主要结构如下:

第一个视图文件, 主要是根据目的地址解析了本地缓存的地址, 当用户请求特定的网址, 如视频网站的某个视频资源时, 自动定位到本地的一个缓存服务器上面去, 从而节省了出口的流量, 提升了用户的体验度。其余的几个视图分别定义去电信, 去联通和移动方向, DNS作为高速转发缓存服务器, 匹配用户的源地址, 根据不同的源地址, 指向对应的出口, 如去电信方向的视图可配置如下

根据匹配不同的地址来采取不同解析方法, 同时创建对应的本地zone文件, 包含主要的顶级域名的IP地址映射, 如com, cn, net, edu等顶级域名, 而不需要通过递归或迭代等查询方式出外网查询。另外建立本地的缓存文件, 以便相同的查询能够从缓存中查到, 而不需要重复查询, 以提高解析速度。

二、智能DNS测试

经过以上过程建立后的DNS服务器, 便具备了对多路出口智能解析的能力, 用nslookup命令查询常用的几个网站, 发现解析一次的地址第二次可以很快就解析出来, 实际测试发现移动或电线的出口可以准确地查询到对应的移动或电信的网站服务器地址, 从而提升了用户的浏览网页的速度及满意度。

三、结束语

在目前三网融合的大趋势下, 广电传统的视频业务, 不断地受到来自其他运营商的IPTV业务的冲击, 如何提高广电业务的竞争力, 只有采取多样化经营, 提供双向业务, 在发展传统电视业务的基础上, 大力发展宽带业务, 才能提升广电整体行业的竞争力, 在广电不具备自主出口, 只能采取多路出口的情形下, 拥有自主的DNS服务器, 采取多路智能解析, 显得尤其迫切和必要。

参考文献

Linux智能终端论文 篇7

电子不停车收费系统(ETC)是智能交通系统的重要组成部分,随着高速公路交通流量的日益增长,低效的人工半自动收费渐渐地不能满足需求[2],将被ETC所替代。OBU是ETC系统中的车载单元模块,存储重要的系统信息和个人车辆信息。目前,国内OBU发行多是在PC机上操控的,采用通用操作系统,实时性差,容易受病毒破坏,系统、硬件故障多,伴随外部接口少、成本高、体积大、功耗大的缺点[3]。嵌入式系统软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗等方面有特殊要求的场合。因此,本文提出了一种基于嵌入式Linux的OBU发行终端设计方案。

1 系统硬件平台

图1为OBU初始化系统结构,本设计是替代图1中PC机部分的功能。因此系统需具备界面显示、数据输入和串口通信三个基本功能。系统硬件平台包括主CPU、USB接口、JTAG调试接口、以太网、串口、存储系统、显示模块等。硬件结构如图2所示。

S3C6410处理器主频最高可达到667MHz,根据外设时钟需求,选择12M无源晶振。通过JTAG接口,可进行软件仿真和单步调试以及下载u-boot。2G的NAND FLSH每页大小为4k,两片SDRAM,每片容量是256M,一个RS-232串口用于与OBU发行设备通信。USB接口用于下载linux内核、文件系统和输入设备接口,4.3英寸的LCD分辨率480×272。以太网用于挂接网络文件系统(NFS),避免开发时多次烧写文件系统到NAND Flash,供设计开发使用。

2 系统软件平台

从软件的角度,嵌入式OBU发行终端可分为四个层次,如图3所示。Bootloader是系统上电后运行的一小段程序,用来初始化硬件,如关中断、设置时钟、设置SDRAM、FALSH控制器的初始化,将内核复制到SDRAM中,传递内核启动参数,跳到内核启动地址。Linux内核负责管理进程调度、内存、设备驱动程序,向用户提供的API函数等,是整个系统的灵魂。文件系统包含常见的命令,如cd、mkdir、ls、cp,和应用程序需要的库、资源、脚本、配置文件及系统应用程序等。OBU发行应用程序是供用户实现OBU发行操作的软件,是系统最上层的软件。

本文使用通用Bootloader,官网下载u-boot-2012.10.tar.bz2,执行tar jxvf u-boot-2012.10.tar.bz2解压后,参考已经支持的smdk6400单板文件结构,在此基础上移植支持smdk6410,顶层目录下执行make smdk6410_config;make;ls后,生成u-boot.bin和u-boot-nand.bin文件,前者可通过JTAG直接下载到内存运行,后者支持Nand Flsah启动。官网下载linux-3.0.1-tar.bz2解压,修改顶层目录Makefile文件ARCH=arm与CROSS_COMPILE=/usr/local/arm/4.4.1/bin/arm-linux-,将arch/arm/configs/s3c6400_deconfig内容替换根目录下.config文件内容,make menuconfig完成内核配置后,make uImage生成内核镜像arch/arm/boot/uImage。Linux内核在系统启动期间所进行的最后操作就是挂载根文件系统,文件系统对系统中的文件和设备进行组织,为设备和用户提供统一接口[4]。使用Busybox制作Yaffs2格式文件系统,解压Busybox1.21.0进入源码目录,执行make menuconfig配置Busybox后,make;make install后,添加需要的类库、应用程序、脚本文件,执行mkyaffs2image_install rootfs.yaffs生成文件系统镜像。Nand Flsah分区如下:

3 应用软件的设计

QTE是QT产品家族中专门开发的面向嵌入式系统的QT版本,一个跨平台的C++图形用户界面库,本文设计的应用程序运行在嵌入式Linux平台上。Qt Creator是跨平台集成开发环境[6],新建QT对话框工程,在可视化图形设计完毕后,系统自动生成dialog.ui.h文件,OBU发行应用程序的设计的要点如下,设计完成后界面如图4所示。

3.1 信号与槽

与Windows的消息运行机制不同的是QT使用了信号与槽的概念,它可以让互不了解的对象通过connect函数绑定在一起,每当发射信号的时候,就会自动调用这个槽。Connect语句如下:

这里的sender和receiver是Qobject的指针,signal是信号函数和slot是槽函数,都是不带参数的,槽函数在类中声明的时候需要加slot指明。

3.2 中文显示与多线程

QT内部使用的是unicode编码,Qstring类使用的是unicode存储字符串,中文使用的是GB编码,因此显示中文时需要编码转换,如本程序中使得pushButton按钮正确显示“一次发行”具体方法如下:

QT中的多线程实现可以直接继承QThread类,重新实现virtual void run()函数,然后在主线程中调用函数start()开辟新的线程。

3.3 串口通信

在Linux系统下,所有外设都被看做是一种特殊的文件,称为设备文件[6],使用Linux系统的打开文件open函数打开串口1,设置好波特率,代码如下:

QsocketNotifier对象用来监听系统文件操作,将操作转换为Qt事件进入系统的消息循环队列。并调用预先设置的事件接受函数,如上述代码屏蔽的部分是使用recvSerialData函数处理Read事件对接受到的数据解析处理。为了使用户操作更流畅,本文最终选择使用线程来接收处理串口数据,m_recvCom是CmyThread的对象,CmyThread声明定义为class CmyThread:public Qthread。

4 结束语

嵌入式系统的特点是可以运用于特殊的应用场合,本文设计改善了使用PC机端发行的缺点,根据硬件平台和应用软件的需要,定制了u-boot、内核、文件系统,根据《收费公路联网电子不停车收费技术要求》文件要求,重点介绍了使用Qt Creator设计OBU发行终端程序的过程和要点,实际运用中表现出了良好的性能。本设计具有成本低、实时性好、体积小、功耗低、操作简单等优势。

参考文献

[1]收费公路联网电子不停车收费技术要求[Z].中华人民共和国交通运输部公告.2011年第13号.

[2]吴京蓬.ETC中射频识别系统的研究与开发[D].北京交通大学,2007.

[3]邬满.嵌入式ETC系统研究与实现[D].长安大学,2011.

[4]王剑飞,程耀瑜.基于S3C2440的嵌入式Linux系统移植[J].电子测试,2012(11):84-89.

[5]Qt参考文档[EB/OL].http://www.qiliang.net/qt/index.html.

Linux智能终端论文 篇8

关键词:嵌入式系统,GPS,uclinux,S3C44B0X

Linux是一种很受欢迎的操作系统,它与UNIX系统兼容,开放源代码。它原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正逐渐的应用于嵌入式设备。uClinux正是在这种氛围下产生的。uClinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。

GPS(全球定位系统)是为海上、陆地和空中各种运输工具和移动设备的导航和定位而开发的,具有高精度、全天候、全球性和点间无需通视等优点,使测量技术发生了质的飞跃。GPS技术引入我国后,特别是美国取消SA政策后的这几年发展十分迅速。随着中国的城市化的程度不断加快,使得越来越多的人口与事业单位集中在一个狭小范围内生活与工作。城市的迅速膨胀直接导致了交通网络的日趋复杂,人员流动的日益频繁也使得每个人对空间信息有了更多的依赖。盾。正是基于uclinux的开源及简单高效,本文采用uclinux作为嵌入式系统的平台研究并实现一个有效的解决数字地理集成应用方案。

1 系统总体设计

S3C44B0X是常用的一款基于ARM7TDMI内核的RISC处理器。uclinux操作系统可以很好地支持此类无MMU的处理器。三星公司的S3C44BOX是一款16/32位的高性能嵌入式微处理器,为手持设备和一般类型的应用提供了高性价比高性能的解决方案。由于它可用于手持设备,所以它提供了好多用于手持设备的功能。S3C44BOX为了减小系统成本,在它的内部集成了8K cache,可选择的内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,系统管理器(片选逻辑,FP/EDO/SDRAM控制器),I/O端口和实时时钟。S3C44BOX采用了ARM7TDMI内核,低功耗的设计可用于功耗敏感的应用。S3C44BOX通过提供一套全面的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。

GPS终端系统要解决以下三个基本问题:1)卫星信号的收集问题,GPS卫星信号强度随着地理位置的变化而变化,不同的地理位置收集到的卫星信号强度也是有差异的。此外,卫星信号的收集是一个很复杂的过程,涉及到射频,信号处理,信号传输等多方面的内容。本系统采用了GR-85GPS芯片来完成卫星信号的收集;2)卫星信号的转化和传输。GR-85输出的信号是TTL电平标准,如果希望利用RS232标准电平进行传输,就必须把TTL电平转化为RS232电平,因此本文选择了MAX3223作为转换芯片;3)卫星信号的如何利用,在uclinux操作系统平台上面搭建了一个基于microwindows的GUI程序,用于在屏幕上显示从串口传输过来的GPS信号。

2 硬件实现

系统硬件分为GPS模块,信号转换模块,信号处理模块。其中GPS模块主要功能是采集GPS卫星发送的GPS定位信息,然后进行加工处理,计算得出相应的具体数据。信号转换模块是把GPS模块输出的信号进行相应的转换。信号处理模块是在接受GPS信号的基础上,利用接受到的信号进行相应的运算,然后利用得到的数据。

图1为GPS模块的内部构造图,核心是一块Sirf芯片,卫星信号通过射频过滤器送给sirf芯片进行处理,信号以TTL电平标准输出。

MAX3223是一块电平转换芯片.提供双通道的TTL到RS232电平标准转换。信号转换模块把GR85输出的TTL电平转换成为RS232电平,然后通过串口输出给计算机或者其他支持RS232标准的设备。

3 系统平台

Linux内核采用模块化的设计,即很多功能块可以独立的加上或卸下,开发人员在设计内核时把这些内核模块作为可选的选项,可以在编译系统内核时指定。因此一种较通用的做法是对Linux内核重新编译,在编译时仔细的选择嵌入式设备所需要的功能支持模块,同时删除不需要的功能。通过对内核的重新配置,可以使系统运行所需要的内核显著减小,从而缩减资源使用量。本系统采用的是uclinux操作系统,uclinux是linux的一个嵌入式版本,继承了linux的许多优秀品质。本系统采用了uclinux作为系统平台。在uclinux平台的基础上进行开发和测试。另外,uclinux还提供的相应的串口驱动,是系统数据收集必不可少的一部分。

4 应用程序

在uclinux平台的基础上,开发了一个基于microwindows的GUI程序GPS viewer。GPSviewer是消息驱动的,程序开始创建了两个线程,一个界面线程,用于界面控制,一个数据线程,用于接受串口数据,并且解析传输协议计算相应的数据。两个线程通过消息耦合在一起,数据线程在计算出一个数据后,发送一系列的消息至消息队列中,界面进程在消息循环中响应相应的消息,修改界面显示,完成相应的数据显示功能。

5 结束语

经过以上研究工作,实现了一个GPS终端的基本功能,终端系统能够稳定地工作,及时响应信号,界面也十分友好,可作为对精度要求不高的民用地理定位。本系统通过数据驱动,耦合度很低,系统具有很强的扩展性。但是系统也有不足,由于硬件环境的限制,没有把GIS系统融合进系统,这也是这个系统以后的方向所在。另外这个系统没有记录状态,缺少数据库的支持,得到的数据没有得到充分的利用。相信在系统的后续开发中,可以逐步完善。

参考文献

[1]雅默.构建嵌入式LINUX系统[M].韩存兵,龚波,改编.北京:中国电力出版社,2004.

[2]斯洛斯(Sloss,A.N.)等,著.ARM嵌入式系统开发:软件设计与优化[M].沈建华,译.北京:北京航天航空大学出版社,2005.

[3]杨水清,等.ARM嵌入式Linux系统开发技术详解[M].北京:电子工业出版社,2008.

上一篇:造景文化下一篇:教师暑期