1、23:28,1,嵌入式系统开发与应用,江苏大学计算机科学与通信工程学院 通 信 工 程 系 陈祖爵 E-mail: TEL:13775360008,23:28,2,嵌入式系统应用开发实例,1.基于嵌入式Linux的智能手机系统设计2.基于ARM-Linux和CDMA的远程视频监控系统,23:28,3,1.基于嵌入式Linux的智能手机系统设计,随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。集成了这些功能的手机被称为智能手机。近年,嵌入式处理器的运行速度和功能都有了很大的提高,使得
2、许多以前只能在PC上实现的应用,现在都可以在手持设备上实现。PDA发展的趋势和潮流就是计算、通信、网络、存储、娱乐、电子商务等多功能的融合。,23:28,4,智能手机系统设计,目前,市面上的智能手机主要采用Microsoft公司的ocket PC、Palm OS等商用操作系统,但这些操作系统开放的程序不够高,限制了许多第三方应用软件的移植。为使智能手机能够为第三方应用软件提供一个更为开放的嵌入式平台,提出一种以Linux作为嵌入式操作系统、Motorola的MX1作为微处理器、以Wavecom的Q2403A作为射频模块的智能手机系统的设计与实现。,23:28,5,1.1 智能手机系统的硬件电路
3、结构,23:28,6,智能手机的主要参数,CPU:ARM920T 200MHz(Motorola MC9328MXL); 显示:AU3.5“Reflective TFT LCD with LED front light 65,536色; ROM:32MB Flash; RAM:64MB SDRAM; 音效:内置单声道麦克风、单声道扬声器、立体声耳机插口;触屏:电阻式触摸屏;SD/MMC:1个SD卡插槽,MMC Ver3, 1.0标准SDMC; USB:USB 2.0主,从口; 红外:IrDA, 115Kpbs;,23:28,7,智能手机的主要参数,串口:RS-232口; LED: 红(在充电指
4、示)、绿(软件运行或电池故障指示) 电源管理:Full featured-Sipports Run,Idle and Sleep modes 复位:设置复位开关; 电池:3.7V锂离子电池 物理尺寸:主板尺寸为65x53x5.5mm 电源适配器:5V直流; 外部连接器:Possible integration、CF卡、Sensor、Bluetooth、SIM Card、其他,23:28,8,智能手机系统的硬件设计,智能手机系统的硬件设计如上图所示。该设计采用Motorola公司的MX1(MC9328)高性能的32位微处理器、Wavecom公司的Q2403A无线收发模块等实现智能手机的GSM通话
5、、GPRS上网及其它PDA应用等功能。,23:28,9,MC9328MX1微处理器,MC9328MX1是Motorola DragonBall系列微处理器。采用节电的ARM920T核心,速度最高200MHz。集成了LCD控制器、SRAM、USB接口、一个A/D转换器(支持触摸屏控制)、一个MMC/SD主机端控制器。256-pin的MPPBGA封装。,23:28,10,存储器系统,存储器的物理实质是一组或多组具备数据输入输出和数据存储功能的集成电路,用于充当设备缓存或保存固定的程序及数据。存储器按存储信息的功能可分为只读存储器ROM和随机存储器RAM。嵌入式系统中的固态存储一般用Flash存储器
6、。,23:28,11,Flash Memory,16 Megabit (2 M x 8-Bit/1 M x 16-Bit) CMOS 3.0 Volt-only Boot Sector Flash Memory,23:28,12,SD存储卡电路,23:28,13,Q2403A无线收发模块,系统采用WAVECOM公司的Q2403A专用无线收发模块。是双频GSM模块(EGSM900/1800MHz),其设计及开发符合ETSI GSM Phase 2+标准。具有话音、GSM电路数据/传真、GPRS分组数据、短消息等功能。该模块支持AT指令集,通过RS232与MX1通信。,23:28,14,Q2403
7、A无线收发模块功能,数据特征:Q2403A(支持class2),下载26.8kbits/s,上传13.4kbits/s; 话音,数据/传真,短信息功能: 话音功能 数据/传真功能 短信息服务功能 呼叫转移 呼叫限制 多方通话 呼叫等待及呼叫保持 来电显示 显示呼叫转移 其他功能:电话簿管理、个人信息管理(PIM)、固定拨号、实时时钟、闹钟管理,23:28,15,复位电路部分原理图,23:28,16,系统电源电路原理图,23:28,17,LCD控制器功能模块图,23:28,18,74LVC16245驱动LCD引线,23:28,19,LCD控制器硬件连接,23:28,20,CS8900A的以太网接
8、口设计,以太网接口电路主要由MAC控制器和物理层接口(Physical Layer,PHY)两大部分构成,目前常见的以太网接口芯片,如RTL8019、RTL8029、RTL8139、CS8900、DM9000等,其内部结构也主要包含这两部分。本系统采用CS8900芯片。,23:28,21,TCP/IP协议结构分层示意图,23:28,22,CS8900A的连接CPU部分,23:28,23,USB2.0总线接口,23:28,24,音频电路原理图,23:28,25,麦克风电路原理图,23:28,26,1.2 智能手机系统的软件设计,系统分析和软件设计是智能手机系统实现的难点之一,关系到系统的稳定性、
9、扩展性等。因为要兼顾到GSM语音控制与其它智能手机应用之间的互相切换及关联关系,智能手机软件系统的设计就变得相对复杂。系统设计将软件分为三层结构,如下图所示。最下面一层为操作系统层,主要实现对Linux操作系统的移植,其中包括Bootloader引导程序、LCD等设备的驱动程序。中间层为服务程序层,该层主要包括GUI服务器以及GSM/GPRS控制服务器。智能手机系统设计的关键在于各项功能应用的实现。对智能手机软件进行分层设计,有利于各个功能有机地协调运转,同时也便于软件的开发与调试。,23:28,27,智能手机系统的软件层次框图,23:28,28,1.2.1 嵌入式Linux操作系统,Linu
10、x最初是由Linux Torvalds编写及发布的源代码公开、可免费使用的操作系统。后来,又通过Internet上成百上千的程序员的加入,使Linux成为一个几乎支持所有主流32位CPU的操作系统。其特点主要有:内核高效稳定、公开源代码、可移植性、可裁减、支持多任务等。 设计中采用的Linux内核是ARM-Linux基础上,编写符合硬件设计的引导程序及电源管理控制程序;并针对本系统的硬件设计,编写了LCD、触摸屏等硬件设计驱动程序。智能手机基于Linux操作系统工作时,首先初始化CPU;然后加载各个设备驱动程序,初始化存储器及外围设备;最后启动各服务程序,进入待机状态。,23:28,29,1.
11、2.2 服务程序的设计,智能手机系统中的服务程序主要有GUI Server和GSM/GPRS Server,它们是上层应用赖以实现的基础。GUI Server为使系统能够很好地支持浏览器及MMS等界面复杂的应用,具有良好的可扩展性,本系统中的GUI Server设计采用了客户机/服务器模式,并以动态链接库的形式对图形设备接口进行封装,具体如下图所示。,23:28,30,GUI Server程序设计框图,23:28,31,GUI Server,服务进程与应用进程之间采用Linux提供的消息队列进行通信。服务进程保存系统GUI环境的描述信息,为应用进程提供注册及一些计算任务,如计算当前剪切域内容等
12、。此外,还负责显示桌面。应用程序的启动后,首先与服务进程建立连接并进行交互,将自身的一些描述信息发送到服务进程。服务进程和应用进程通过调用动态库实现基本窗口显示功能。其中窗口树与剪切域都定义在动态库中,对于服务进程或应用程序而言,它们是透明的,不需要进行管理。因服务进程与客户进程分别运行在不同的进程空间中,所以虽然在动态库中定义了相同的数据,但它们之间不会产生任何冲突。,23:28,32,GUI Server,设计对动态库中封装的函数进行了分层。其中直接针对Framebuffer进行输出的函数位于系统最低层,其上是设备上下文。因每次对一个窗口输出的时都要首先建立设备上下文,所以设备上下文总可以
13、引用窗体结构,自然也可以引用到窗口剪切域,在剪切域范围内才可以进行输出。图形设备接口建立在设备上下文之上,主要包括点、线、面、文本等。如上文所述,输出之前,首先建立设备上下文,即其输出的目标是设备上下文,而不是窗口。图形设备接口的上层是应用开发接口即API层,桌面进程与客户进程都通过调用API函数实现系统功能。另外,系统建立了输入的抽象层,屏蔽了不同输入设备。,23:28,33,1.2.3 GSM/GPRS Server多工通信服务器软件,GSM/GPRS Server多工通信服务器软件是电话、短信及数据业务的守护进程,负责响应应用程序转发的用户操作事件及从串口的获得的无线通信模块事件,是整个
14、智能手机系统的核心。在这部分的工作中要实现多链路的数据通信、事件优先级判别,并在执行数据通信时,保证电话、短信的接入。具体程序设备结构如下图所示。,23:28,34,GSM/GPRS Server程序设计框图,23:28,35,1.2.4 智能手机系统中的应用程序设计,有了中间层的服务程序,上层应用程序可以根据GUI Server及GSM/GPRS Server提供的接口进行移植和开发。本设计中实现了电话控制程序、短信收发的管理及数据业务的应用等。下面以电话控制程序为例,介绍智能手机应用程序的设计与实现。,23:28,36,电话控制程序状态切换关系图,23:28,37,电话控制程序状态切换,电
15、话控制程序设计分为三个运行态:PowerOn State(上电态)、Idle State(空闲态)、Execution State(执行态)。上图表示了三个状态之间的关系和进入各个状态的条件。电话控制程序在智能手机系统上电复位、GSM/GPRS Server启动后,进入Power-on State(上电态)。在上电态,程序首先进行初始化工作,与GSM/GPRS Server通信,获得系统状态。初始化后,即进入Idle State(空闲态)。在空闲态,程序循环等待GSM/GPRS Server的呼入事件及来自键盘的呼出事件;当这些事件发生时,程序进入Execution State(执行态)。在执
16、行态,用户进行语音通信,通话结束后,程序又回到空闲态。 如将CPU主频进一步提高,无线通信模块换成符合3G标准的,就可以实现更为广泛的手持设备应用。,23:28,38,2.基于ARM-Linux和CDMA的远程视频监控系统,CDMA(码分多址)无线网络具有覆盖面广,高效、低成本的特点,CDMA网络的数据传输速率可达200kb/s。嵌入式远程视频监控系统就是充分利用CDMA无线网络技术和嵌入式系统的特点而搭建的数据传输系统,特别适合边远偏僻或不具备常规网络传输条件的地方使用,例如车载视频监控系统、交通路口(车牌实时监视)及城市路灯的监控等。,23:28,39,2.1 嵌入式Linux系统,Lin
17、ux作为一个桌面系统,其最大的特点是操作系统源代码公开并且遵循GPL协议,内核采用模块化的设计,易于裁减,特别适合嵌入式系统的小型化要求,在嵌入式系统中占据了半壁江山。 监控系统选用的处理器是SAMSUNG公司ARM9内核的CPU-S3C2410,内建有MMU(内存管理单元),主频可达到200MHz,运行嵌入式Linux2.4系统,不但保持了嵌入式系统小型化、低功耗、易携带的特点,又充分利用了Linux系统的内存、文件、线程管理功能,大大方便了程序的开发和程序中多任务功能的实现。,23:28,40,2.2 监控系统结构,监控系统一般可分为实时监控和触发模式监控两种,可以根据具体的情况设计合适的
18、监控方式,如果采用实时监控,将占用较多网络资源,成本相对较高,采用触发模式的运行成本较低,这里采用触发模式,监控系统结构见下图。,23:28,41,嵌入式远程视频监控系统示意图,23:28,42,监控系统工作原理,当遇异常情况后,触发监控终端拍摄图片,同时其内部的嵌入式控制模块和CDMA模块协同运作,完成Internet的接入(包括拨号、PPP和TCP/IP协议的处理等),并把拍摄到的图片数据经打包后发送给控制中心主机,或发送给指定的E-mail地址,控制中心主机登录到Internet上后运行服务器端软件就可以浏览由监控点发来的图片。,23:28,43,2.3 硬件系统设计,要能够正确运行一个
19、操作系统,硬件方面至少应该包括CPU、内存和固态存储器、系统内部总线以及外设接口,具体硬件系统结构见下图。,23:28,44,硬件配置,SAMSUNG公司的S3C2410 CPU具有3个UART、1个RTC和触摸屏接口,还具有I2C总线、USB Host、USB Device等接口,充分满足了系统的需要,而且性价比高。 由于剪裁后的Linux系统所占得存储空间非常小(只有几MB),选择E28F128J3A150 Nor Flash作为固体存储器,容量为16MB,通过16位数据总线与CPU交换数据,并利用其上端8MB空间(00800000H-00ffffffH)开辟了一个jffs2文件存储系统,
20、存储系统的配置文件。 64MB的SDRAM为2片K4S561632C,通过32位数据总线与CPU交换数据。,23:28,45,硬件配置,通过MAX3232C电平转换芯片和RTL8019网络芯片转换成一个RS-232接口和一个以太网接口,用串口线和以太网网线与PC机相连,组成可以交叉编译的开发环境。 通过CPU上集成的USB Host接口直接与USB摄像头连接,考虑到监控与控制模块接口的要求,选用USB1.1接口的红外线摄像头。 通过CPU上集成的UART接口直接与CDMA Modem模块相连接,选用价格适中的AnyData公司的DTGS-800 CDMA模块。,23:28,46,2.4 软件系
21、统设计,控制终端软件的核心是嵌入式Linux操作系统,一切功能的实现都基于Linux操作系统完成。需要解决的问题主要包括硬件支持、提供二次开发的环境以及小型化(裁减内核)等。作为一个操作系统,Linux内核主要负责程序的管理与调度、内存的管理及对外设的驱动和管理等,由于Linux内核采用模块化的设计,很多模块可以独立地加载或卸载,这里只需要串口驱动、USB摄像头接口驱动(包含USB Host,USB Core和USB Device)还有拨号网络应用,还要支持PPP、TCP/IP网络协议,其他都可以删除掉,使系统运行所需要的内核显著减小至1Mb以内。,23:28,47,控制终端程序流程,23:2
22、8,48,程序设计,具体程序设计包括Bootloader启动代码、设备驱动程序(USB摄像头接口驱动程序、串口驱动程序)、拨号、PPP及TCP/IP协议处理,监控接收转发控制程序等。控制流程如上图所示。a)系统加电后复位b)Bootloader初始化CPU、SDRAM、分配地址空间等。,23:28,49,程序设计,c)Bootloader把Linux内核的压缩文件解压到SDRAM中,同时把控制权从Bootloader移交到Linux。Linux的内核有两种运行方式。可在Flash存储器上直接运行,也可以加载到内存中运行。Flash存储器运行方式就是把内核的可执行映像烧写到Flash存储器上,系
23、统启动时从Flash存储器的某个地址开始运行内核,进入SDRAM继续运行。这种做法能减少内存需要,实际上很多嵌入式系统都采用这种方法;内存加载方式把内核的压缩文件存放在Flash存储器上,系统启动时自动读取压缩文件并在内存中解压,然后开始执行,这种方式相对较复杂,但运行速度更快,这里采用这种方式。,23:28,50,程序设计,d)开始执行SDRAM中的代码,Linux内核初始化,完成堆栈,中断的分配等。 e)加载串口驱动模块和USB摄像头驱动模块,完成串口和USB口的初始化。 f)运行PPP拨号程序,通过CDMA网络与Internet进行连接,在Linux下的PPP包是专门为解决Modem拨号
24、上网问题而编写的,并且是公开源代码的,PPP拨号脚本程序主要是通过调用pppd和chat这两个应用程序,并通过AT指令实现对Modem的操作。,23:28,51,程序设计,已建立了从图像采集到图像传输的完整的嵌入式监控系统,但作为一个嵌入式操作系统,是为某一专门的用途而设计的。运行不同的用户应用程序,就可以实现用户要求的不同功能,生动地体现了嵌入式系统的灵活性。 这里运行的用户程序是一个无限循环的过程,控制终端在不断等待拍照请求,通过比较识别认为有请求后,CPU通过USB摄像头驱动控制摄像头拍照,同时接收图片并发送控制中心,或通过SMTP协议,发送到指定的Email地址,完成一次请求。,23:
25、28,52,2.5 控制中心服务器程序设计,服务器软件主要功能:接收、保存和重显监控图片,控制中心主机通过拨号、带宽上网等方式登录到Internet,要求申请一个静态IP地址。主机登录Internet后,即可运行服务器端软件。服务器端程序设计主要包括网络通信、接收、保存、重显图片,通过该软件可方便地浏览由控制终端发来的图片。 另一种方案是不设置控制中心服务器,控制终端抓拍到的图片直接发送到某Email地址。该方案管理容易,只需定期查收Email,清除Email存储空间,运行成本很低,但可靠性差。利用无线网络与IT技术对传统监控领域进行革新,是市场的需要,嵌入式系统因其体积小、处理能力强、支持网络服务等功能,扮演了重要角色。,23:28,53,