论文_3g手机的数字基带部分硬件方案设计书及驱动开发_第1页
论文_3g手机的数字基带部分硬件方案设计书及驱动开发_第2页
论文_3g手机的数字基带部分硬件方案设计书及驱动开发_第3页
论文_3g手机的数字基带部分硬件方案设计书及驱动开发_第4页
论文_3g手机的数字基带部分硬件方案设计书及驱动开发_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第1章绪论11介绍111背景3G最早在1985年国际电讯联盟提出,当时考虑到该系统可能在2000年左右进入市场,工作频段在2000MHZ,且最高业务速率为2000KBPS,故在1996年正式更名为IMT2000(INTERNATIONALMOBILETELECOMMUNICATION2000)。3G是一种能提供多种类型、高质量多媒体业务的全球漫游移动通信网络,能实现静止2MBPS传输速度,中低速384KBPS,高速144KBPS速率的通信网;但由于各国、各厂商的利益差异,产生目前三大主流技术标准WCDMA、CDMA2000和TDSCDMA,随着3GPP和3GPP2的标准化工作逐渐深入和趋向稳定,ITU又将目光投向能提供更高无线传输速率和统一灵活的全IP网络平台的下下代移动通信标准,称为BEYOND3G。2007年3月,备受瞩目的中移动TDSCDMA设备采购招标正式启动。中国移动、中国电信和中国网通在北京、上海、天津、沈阳、秦皇岛、厦门、广州、深圳、保定和青岛等(含奥运六个城市在内)十个城市大规模建网已经拉开序幕,3G时代已经到来了TDSCDMA终端市场已经越来越清晰,当今年10月份TDSCDMA网络建成后,对TDSCDMA终端的采购也随即展开。淘这第一桶金,需要终端业务集成多,性能比较稳定,通过了SMS、MMS、WAP、JAVA、流媒体、VT等多项业务功能测试。虽然语音通信仍然是无线手机最主要的功能,但消费者的需求和3G网络的日益成熟,把语音通信和数据传输两者结合起来,用一台3G手机为消费者提供无以伦比的网上娱乐活动,进行无中断的通讯和安全的交易活动的。这样的手机将会占很大的市场份额。在这样的背景下,我实习所在公司也正在着手3G手机的设计制造,并针对目前开发3G手机需要解决的问题,根据大唐移动的技术平台提出了一种解决方案,构建了基于ANERA平台的TDSCDMA制式3G手机的软硬件平台。本人的工作主要是负责3G手机数字基带部分外设的电路设计以及底层驱动的开发,其他硬件设计如RF部分、模拟基带部分、应用软件有另外的同事们共同完成。因此本文结合自己的工作,主要介绍了3G手机的数字基带部分外设电路的设计和驱动软件的设计,也简要地介绍了整个手机的软硬件的总体技术。2112本文的工作和贡献本文以设计一个除了能完成高质量的日常通信外,还能处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务进行多媒体通信的3G手机为目的,采用系统工程和软件工程的原理,将移动通信、嵌入式系统、操作系统、GUI、TDSCDMA等技术手段相结合,进行技能新研究,以形成一个综合的技术体现,构建一个3G手机的硬件平台和驱动软件。因此本文主要有以下工作和贡献。3G手机的系统设计包括系统目标、软件硬件模块的规划、和功能设计等3G手机数字信号基带处理子系统设计存储系统、人机接口部分、外设扩展等。驱动软件平台的设计与模块化编程。基于3G手机的硬件驱动实例针对硬件平台实现了LCD、MV3018、CAMERA、KEYPAD的驱动编程,以及测试数据。提出了手机的软硬件测试方案,进行了系统的软硬件测试。总结了实现情况,以及存在的一些缺陷及今后的改进方向。12TDSCDMA的概述TDSCDMA的中文含义为时分同步码分多址接入,该项通信技术也属于一种无线通信的技术标准,它是由中国第一次提出并在此无线传输技术(RTT)的基础上与国际合作,完成了TDSCDMA标准,成为CDMATDD标准的一员的,这是中国移动通信界的一次创举,也是中国对第三代移动通信发展的贡献。在与欧洲、美国各自提出的标准的竞争中,中国提出的TDSCDMA已正式成为全球3G标准之一,这标志着中国在移动通信领域已经进入世界领先之列。该方案的主要技术集中在大唐公司手中,它的设计参照了TDD时分双工在不成对的频带上的时域模式。TDSCDMA的无线传输方案灵活地综合了FDMA,TDMA和CDMA等基本传输方法。通过与联合检测相结合,它在传输容量方面表现非凡。通过引进智能天线,容量还可以进一步提高。智能天线凭借其定向性降低了小区间频率复用所产生的干扰,并通过更高的频率复用率来提供更高的话务量。基于高度的业务灵活性,TDSCDMA无线网络可以通过无线网络控制器(RNC)连接到交换网络,如同三代移动通信中对电路和包交换业务所定义的那样。在最终的版本里,计划让TDSCDMA无线网络与INTERNET直接相连。3TDSCDMA所呈现的先进的移动无线系统是针对所有无线环境下对称和非对称的3G业务所设计的,它运行在不成对的射频频谱上。TDSCDMA传输方向的时域自适应资源分配可取得独立于对称业务负载关系的频谱分配的最佳利用率。因此,TDSCDMA通过最佳自适应资源的分配和最佳频谱效率,可支持速率从8KBPS到2MBPS的语音、互联网等所有的3G业务。143G手机的特点及发展3G手机就是第三代(THETHIRDGENERATION)手机的简称,它与前两代手机的区别在于语音通信和多媒体通信紧密结合,集成图像、音乐、网页浏览、电话会议以及其它一些信息服务等增值服务。3G手机完全是通信业和计算机工业相融合的产物,和此前的手机相比差别实在是太大了,因此越来越多的人开始称呼这类新的移动通信产品为“个人通信终端“。即使是对通信业最外行的人也可从外形上轻易地判断出一台手机是否是“第三代“大多数的3G手机都有一个超大的彩色显示屏往往还是触摸式的。3G手机的名称繁多,国际电联称之为“IMT2000“,欧洲的电信业巨头们则称其为“UMTS“,3G手机可能应用的技术标准有WCDMA、CDMA2000、TDSCDMA等等。极高的数据传输速度是3G手机具备强大功能的基础,目前的GSM移动通信网的传输速度为每秒96K字节,而第三代手机最终可能达到的数据传输速度将高达每秒2兆字节。3G手机除了能完成高质量的日常通信外,还能进行多媒体通信。用户可以在3G手机的触摸显示屏上直接写字、绘图,并将其传送给另一台手机,而所需时间可能不到一秒。当然,也可以将这些信息传送给一台电脑,或从电脑中下载某些信息;用户可以用3G手机直接上网,收发电子邮件、浏览网页、联机游戏或收看在线视频;有不少型号的3G手机还自带功能强大的摄像头,使用户可以利用手机进行视频电话会议。4第2章3G手机平台总体概述213G手机系统架构开发原则虽然语音通信仍然是无线手机最主要的功能,但消费者的需求和3G网络的日益成熟,为设计师们开辟了一条新蹊径把无线电子产品和消费电子产品结合起来。具有多媒体功能的高性能产品将利用3G网络,把语音通信和数据传输两者结合起来,用一台无线设备为消费者提供无以伦比的网上娱乐活动,进行无中断的通讯和安全的交易活动。但是,就目前而言,要把功能丰富、无线电子产品和消费电子产品两者结合起来的手机推向市场,手机开发须规划良好的系统架构来降低设计上的复杂度。为达成这项要求,已出现不少的晶片架构及系统作法,但仍有一些设计上的共识,包括专业分工、开放性、标准化、阶层化和提高可再利用性及定制弹性等等原则。以下介绍几项开发原则1专业分工在专业分工上,最明显的作法即是采取通信与应用分离的平行架构,由基频处理器专心处理通信数据,其他的多媒体等应用功能则交给应用处理器来处理。这是一种独立于数据机的处理架构,一方面让应用处理器能充分发挥实时操作系统的应用能力,另一方面也能确保各种服务与应用不会受到无线技术的影响,进而赋与产品更高的可携性。在此架构下,基频元件能随GSM/GPRS/WCDMA/HSDPA等规格的演进而发展,应用元件也能因应视频、音频、绘图等需求的改变而扩充其功能,例如支持高达每秒30讯框的VGA解码和H264/VC1视频编码、VGA彩色显示、QVGA辅助显示以及多达5M画素的数字照相机功能、2D/3D图形、3D声音和立体声喇叭等。2再利用性就再利用性来说,将通过验证合格、可用于生产的通信处理即时软件独立出来,就不会受到应用功能的限制,而能重覆且直接的再次被使用。这样做的好处很明显,软件开发一向是影响手机上市时间一大主因,往往为了小部分软件的更动,就得对整个系统进行重新验证和测试的工作,相当耗时。在独立出成熟的程式码后,可以将设计、验证及测试上的复杂度降低,大幅缩短开发的时间。3阶层化沟通介面5但如何做好通信与应用两者之间的沟通,仍是设计上的一大挑战。前面提到开放性架构中基于硬件抽象的介面作法,此架构同时提供上层和下层的观点,上层的观点提供应用软件开发者一套针对特定作业系统的统一软件介面,并对底层的处理器设计加以抽象化;底层观点是针对LCD控制器、影像感测器或照相机等一般性应用的一组标准硬件介面。此架构因採用标准化的介面,因此与系统中个别单元的技术或架构作法无关,只需透过一组一致性的API来进行上层作业系统与下层硬件的沟通。如此一来,应用软件从底层的平台架构给分离出来,开发者只需从上层架构的观点对应用程式做抽象层级的开发,而不用对底层的实体平台做直接的呼叫,这让产品能更快速的开发,在平台更新时也不需牺牲效能或软件的可互操作性,应用功能只需要写一次就够了。不仅如此,由于此一架构的平台具有通透性,制造商也很容对硬件和软件做各种功能升级。4硬件平台架构在智能型手机的硬件架构中,应用处理器已是其灵魂的中心。目前市场上接受度最高的应用处理器核心,无疑当属ARM核心,它可以说是产业标准的手持设备处理器核心。除了採用ARM主处理器外,还搭配采用智能加速器来分担应付所有在音频和视频上的前、后处理任务,让这颗主处理器能长期处于省电模式下,并更专注于适合它来发挥的控制工作。随着手机应用需求的增加,未来可能有更多的专属加速器将出现在硬件平台中,以满足3D绘图、资料加密和生物辨识等服务或应用功能。此外,由于移动设备内部的资料传输日趋复杂而频繁,移动平台中的各个硬件单元也得採用理想的互连技术来沟通。5操作系统手机软件系统涵盖了操作系统、通信协定、多媒体处理、API、DRIVER、UI等开发,这些在手机开发上的重要性不断提升,对于手机来说,更是如此。就核心的操作系统来说,在语音手机或功能手机中,仍可到专用的实时操作系统(RTOS)。622系统的总体结构APP/MMI(应用程序、人机接口开发)PLATFORMAPIMMIFRAMEWORKMOBILESENABLEMECODEVICEMANGERLOCALAPPENABLERSDATASERVICESENABLEGUIAOSBSPDRIVERHARDWAREDESIGN图213G手机总体结构3G手机系统的总体结构见图21,3G手机硬件平台核心系统是维持3G手机平台平台工作的最小系统,包括DBB、ABB和RF、存储器系统以及少量的外围维系部件如复位、时钟电路等组成。在硬件系统的基础上,系统软件通过AOS、GUI、MMIFRAMEWORK、PLATFORMAPI构成了一个基本的、稳定的应用编程框架,向下可以根据硬件参考设计定制BSP和DRIVER。23硬件平台功能模块的规划目前电子产业的设计动力,无疑将很大的一部分集中在移动终端,在应用上则带动了VOIP、EMAIL、简讯、JAVAGAME甚至是MOBILETV等网路、广播服务的出现。这对于移动终端的设计都是新的挑战,本小节简要说明多媒体3G手机的硬件规划。7ABB子系统AUDIO电源管理基带收发中断信号串行接口DBB子系统数字基带处理器AD6901存储系统128MBIT2NORFLASH64MBITSRAMARM7DSP运行协议ARM/DSPJTAG等测试口KEYPADUSBIRDAVIBRATORCAMERAMIDILCDUART2UART1SIM外设接口FM串行通信接口人机接口提供CSPORT与DBB接口通信。触发DBB中断RF子系统TDSCDMA模拟基带上下行信号控制和时钟信号,自动频率校准和温度采样信号提供系统数字和模拟电压复位电路SD图223G手机硬件平台的总体结构3G手机硬件平台的总体结构见图22,随着多媒体任务愈来愈繁重,单单依赖基频已难以承受所有处理工作,因此应用处理器的角色就因应而生。将应用处理功能从基频中分离出来,在本系统的硬件设计分为DBB(数字基带处理)ABB(模拟基带处理)RF系统。DBB部分采用ARMDSP双核心架构,由ARM的RISC核心主要进行控制工作,大量的信号加、解码工作则交给DSP来执行,主要实现数字基带信号处理、协议栈、平台应用、外设管理等功能;ABB主要实现模拟基带信号处理、PMU、充电、背光、VOICE、电源管理等功能。RF模块主要包括TDSCDMA模拟基带上下行信号,控制和时钟信号,自动频率校准和温度采样信号等。24软件系统模块划分如图21,在3G手机软件系统内部实现了各种能力集,并且能在不影响3G手机8软件平台编程框架的情况下,持续不断的扩展和升级这些能力集。所有能力集向上提供一套编程接口APIS,连同操作系统的接口APIS、GUI提供的接口APIS,共同构成完整的PLATFORMAPI接口层。这使得应用开发无需知道各种能力集的实现细节,就可以通过PLATFORMAPI完成各种应用程序的开发。操作系统模块(AOS),基于优先级的抢占式系统,及一套丰富的系统服务集,有利于实时性需求苛刻的嵌入式应用程序开发。该AOS采用组件式设计,包括内核组件,文件系统组件和网络系统组件。形成一个KERNEL、FS、NET的抽象层,保证上层软件的无缝移植。GUI模块,主要提供图形抽象、输入设备的管理、通用设施、窗口管理及消息机制、GDI函数、控件集等功能模块,为应用开发提供丰富GUI接口。MMIFRAMEWORK模块负责MMI框架的实现,主要提供一种应用管理机制和应用执行环境。包括了任务管理、消息分发机制、UI框架、国际化支持、主题管理、输入法管理等功能。移动业务能力集(MOBILEENABLES)实现对高层协议栈的接口封装,提供基本的电信业务、补充业务和承载业务能力。为MMI/APP应用软件、MECO软件以及各种系统维护应用软件(DAEMONS)提供实现的接口。本地应用能力集(LOCALENABLES)负责提供各种终端本地应用需要的能力,包括电话本、PIM、输入法引擎、本地游戏等应用的支撑能力,并向这类应用提供开放的接口API。设备管理能力集(DEVICEMANAGERENABLES)实现对终端上各种设备的管理,并向应用层提供统一的接口API,包括背光管理、电池电量管理、震动管理、本地通信接口管理、多媒体设备管理等。数据业务能力集(DATASERVICEENABLES)软件平台提供灵活的扩展机制,可以方便地增加新的能力集(例如WAP、MMS、EMS、JAVA等)。第3章DBB子系统总体设计DBB子系统主要负责承载手机系统所有的软件,包括整个通信协议软件,操作系统和应用软件平台。31需求分析主要实现数字基带信号处理、协议栈、平台应用、外设管理等功能。9一、数据处理功能系统对传输的数据需要进行处理,如图像、音频的采集与解压和压缩,以及DSP数字基带信号的处理、协议栈等。图象输出格式为JPEG格式,大小支持160120、320240、640480等可调;视频格式为视频上针对MPEG4的编解码提供30FPS的CIF画质、24FPS的VGA画质和384KBIT/S的传输率。二、数据存储功能手机系统应具有数据存储的功能,如将拍照、摄像的保存等。三、数据通信功能包括系统与上位机之间的通信,以及系统与ABB、RF等子系统之间的数据传输。四、调试功能上位软件可以对DBB子系统进行在线调试功能。五、人机接口功能如键盘输入、LCD输出等。六、软件驱动等实现模块化驱动,便于驱动的移植。32DBB子系统总体设计DBB的总体结构如下图32所示,MONACOLCR数字基带处理器AD6901包括ARM7TDMI处理器和BLACKFINDSP处理器。两个处理器共同分享外设和内存等系统资源。灵活的中断控制器允许大多数中断映射到两个处理器。AD6901的系统资源都映射到32位的地址空间,基本寻址单元为字节。整个地址空间包括四个子系统MCU子系统,DSP子系统,内部存储器子系统和外部存储器子系统。DSP有自己专用的DMA控制器,系统DMA被两个处理器共享。两个处理器都有自己的中断控制器,JTAGTAP控制器和本地的控制/状态寄存器。芯片内部逻辑,模拟PLL,RTC和外围I/O都单独供电,便于电源管理。提供动态的内核电压和频率管理,当内核电压提高时,可以提高MCU和DSP的运行频率来提高两个处理器的处理能力。MCU的最高运行频率为75MHZ,DSP的最高运行频率为300MHZ。其中DSP主要是用来运行协议算法,MCU子系统构成3G手机工作的最小系统。10ARMJTAGABBARMJTAGKEYPADUSBSIMEGSPBRTCUSEEGSPAARMJTAGARMJTAGKEYPADUSBSIMUART232768KHSLUART1IRDAVIBRATORVIBEGSPBEGSPFAPPINTFACEFMVBATLDOBATEBUSRFAD6091DBBMCPMV3118MIDILCDCAMERA图32DBB的总体结构图MCU子系统主要包括ARM7TDMI处理器,BOOTROM和MCUJTAG。DSP子系统主要包括BLACKFINDSP处理器、SRAM、DSP总线接口单元、DSPJTAGTAP控制器和DPBUS上的各种外设。DSP总线接口单元负责各种总线资源的仲裁和管理,维护从MASTER(DSP、DSP、DMA、MCU和MCUDMA)向SLAVE(包括DPBUS上的外设,L1RAM,L2RAM和通过DSPBUS访问的系统资源)的访问请求。两个子系统内部沟通、资源共享以及对外部资源的控制是通过芯片内部七条总线实现的。其中PBUS是外部接口总线,包含三个主要的组MMI组、HOUSEKEEPING组和COMMUNICATION组。EBUS用于地址、数据控制以及扩展,部数据总线宽度为16位,地址总线为25位。外部存储器子系统MCPAD6901外接2X128MBITNORFLASH和64MBITPSRAM。FLASH存放系统所有的软件的代码和相关需存储的数据;PSRAM作为各软件运行时的内存。视频方面搭配手机图象压缩芯片影像控制处理器MV3018来控制SENSOR和LCD并进行图象的编解码,满足游戏的临场感,视频上针对MPEG4的编解码提供30FPS的CIF画质、24FPS的VGA画质和384KBIT/S的传输率,也具备图像前后处理的能11力。音频方面中星微电子公司的MIDI芯片VC0937,具有SPEAKER功放和声音均衡电路,支持立体声40合弦和MP3硬件解码。以8BIT并行数据线形式与CPU进行数据交互。33驱动总体设计如前所述,驱动软件运行在AD6901上,同时通过CSPORT口控制AD6857的AUDIO部分。各个驱动模块主要对应如图32手机硬件系统中AD6901上面的各种外设资源,如LCD,CAMERA,KEYPAD,USB,MMC,SDCARD,SIM等,还包括AD6857上面的RECEIVER,SPEAKER,HEADSET和MICROPHONE。在ARM核上运行的操作系统是THREADX,使用ADS集成开发环境,还需要使用TRACE32JTAG仿真器同目标板相连。DSP侧代码运行于AD6901的DSP核中,DSP侧代码主要运行的是协议算法类。DRIVER的主要功能是对MANAGER提供统一的驱动接口,MANAGER借助于这些接口能够实现其所有的功能。驱动的软件框架如图33所示MANAGERLAYERDRIVERABSTRACTLAYER(DAL)DRIVERLAYERPERIPHERALACCESSLIB(PAL)图33驱动架构图从MANAGER层向下看到的是DRIVERLAYER,该层中的所有驱动都会包含由DRIVERABSTRACTLAYER定义的统一接口,驱动层下面还有一个底层库PAL,这个PAL的主要功能是对芯片硬件体系的抽象,作为资源提供给DRIVER层,下面分别对DAL,DRIVER和PAL做一说明。DAL作为DRIVER的抽象接口主要提供以下函数接口,OPEN,RELEASE,READ,WRITE,CONTROL。DRIVER是实现对应MANAGER中所有需求的功能单元,该层中的各个模块间具有相对的独立性,实现特定的功能,应体现一定的粒度和松散性,如CAMERA,LCD,AUDIO,IRDA,USB,I2C,SPI等。可能有多个DRIVER的功能组合来实现MANAGER的某个具体功能。同时,多个DRIVER之间可能也会有一定的依赖关系,12比如SPI可以作为独立的驱动模块收发数据,也可以被LCDDRIVER用来控制LCD模块的具体功能参数。PAL库的主要功能是对芯片硬件资源的抽象,比如中断的注册,驱动对DMA资源的共享,对GPIO资源的申请等。PAL库从功能上讲不需要实现驱动的接口,只要提供对驱动需要使用到的公共资源的抽象,以安全和合理的方式使用片上和片内外设。331DRIVER功能描述DRIVER实现对应MANAGER中的所有需求功能,各个驱动模块间具有相对的独立性,实现特定的功能。驱动模块以实现最小功能需求为目的,会存在有调用多个PAL库的情况。有关驱动对PAL库调用的具体关系与实现有关,也与具体的芯片体系有关,这里只举例描述几个驱动实现的功能。LCDDRIVER主要实现上层应用对LCD的写屏功能,需要达到尽量少的拷贝,减少对系统处理器资源和内存资源的消耗。其控制模块主要实现对LCD的背光调整、使能及关闭。而涉及电源管理部分的LCD的各种状态例如挂起、激活、STANDBY、SLEEP等模块也可以包含到该模块中。中断处理模块通过查询状态寄存器可以得到产生中断的原因,执行相应操作。CAMERADRIVER主要是对将摄像头采集到的数据送往上层,并且提供控制接口,达到设置帧率,图象大小格式,明亮度,图象反转等基本功能。另外,现在许多方案采用外挂图像处理器(MOBILEGRAPHICENGINE)连接CAMERA,并能提供硬件的JPEG/MJPEG编解码、画中画、翻转、色彩渲染等各种特效功能,能最大程度的减少CPU的负担,依据具体的器件选型可以增添这些控制接口。UARTDRIVER主要提供通用串口功能,可以用于主机同终端的通信以及调试接口,在其控制接口中实现对串口速率的调整。USIMDRIVER主要实现同SIM卡之间的数据收发功能,可以提供控制接口实现激活/去活SIM,查询SIM卡状态等功能。FLASHDRIVER本驱动负责完成FLASH的读、写和擦除功能,提供擦除一个FLASHBLOCK和整块FLASH擦除功能。KEYPADDRIVER主要用来识别键盘的按键输入,并将扫描结果上传给KEYPADMANGER。存在两个中断处理过程,一个是按键中断,反应当前的一个按键动作;还有一个时钟中断,表示当前一段时间内得到的所有按键值。AUDIODRIVE实现音频解码后的数字信号发送给放音模块,实现音频播放。采用一个DMA通道实现数据发送,提供控制功能实现音频到SPEAKER,RECEIVER和13HEADSET的数据通道,以及音量的调整。MIDIDRIVER实现播放应用层所需要的和弦铃声,MIDI等各种音效,并提供控制功能,包括进行播放、停止各种音效,是否进行渐进,是否播放MIDI格式文件等。SDDRIVER通过对SD控制器的操作,实现对SD卡的初始化,关闭,读、写操作。本驱动的读、写和信息模块按照FILEX的I/ODRIVER架构来实现,主要目的是为I/ODRIVER提供操作SD卡的接口。332PAL功能描述这部分内容描述各个PAL库实现的主要功能,存在PAL被多个驱动调用的情况,PAL应能满足对外设的安全操作,不会因为操作过程被打断而导致数据读写出错。ASPLIB提供对ASPORT的配置和数据收发功能。ABBINTLIB提供ABB上外设的中断注册和响应机制,包括耳机,RECEIVER和SPEAKER,充电模块等。BSDLIB提供的功能包括将SBUS,EBUS或者RBUS映射到MCU地址0和得知当前映射到地址0的是哪个总线,SBUS,EBUS还是RBUS。CACHELIB提供CACHE的操作功能,包括INVALIDATECACHELINE等,提供给驱动层使用。CDNLIB提供对整个系统时钟活动的集中控制,可以配置MCU和DSP的工作频率,控制时钟源的分布。DAILIB提供了对DAI接口的配置和数据收发功能。DMALIB提供了对DMA外设和DMA中断的配置功能。EGCLIB提供对GSP和EGSP的访问控制,并抽象出GSP和EGSP的实例,可以使应用初始化和释放对象,提供对GSP的寄存器操作,可以发送和接收数据,并提供中断操作接口。EMCLIB提供中断的使能和禁止功能。GPPLIB配置GPIO进行数字的输入和输出通道,并提供读写功能。同时,也可以设置特定GPIO为EDGE/LEVEL方式出发IRQ中断,并将中断送往MCU或DSP。GPTLIB用来提供时刻敏感性应用,如配置TIMER以规定的时刻,启动和停止TIMER,以及毫秒级延时。MCMLIB配置不同EBUS地址段的CACHE功能。MSSLIB提供对AD6531引脚的配置功能,配置为GPIO,或者EGSP;以及EGSP映射到GPIO和USC的功能。SBCLIB提供对EBUS配置功能。14SDSLIB允许MCU控制DSP的运行,包括复位/释放DSPRESET,进入/退出DSP的POWERDOWN模式,以及读/写DSP内存。SICLIB提供使能/禁止MCU中断,注册一个中断服务程序;触发MCU和DSP核的软中断;使能/禁止中断嵌套;选择ARM中断源;选择中断处理表,以及将FIQHANDLER放入ITCM。TWSLIB是一个串行通信协议栈,用于MCU同LCD,外部I/O端口,RAM,EEPROM,或者DAC。TWS也支持I2C接口,数据速率达到400KBPS。USCLIB提供配置USC的接口,包括配置USC的极性,方向和输入端口等。YAMLIB提供给TONE和MIDI驱动使用YAMAHA芯片发声的功能。333接口说明DAL接口MANAGERLAYER通过DAL调用驱动设备,完成驱动设备读写和控制操作。具体调用过程通过以下外部API函数实现。DAL为驱动的统一接口,包括以下函数1OS_OPEN,对驱动的软硬件资源初始化功能。2OS_RELEASE,与OPEN功能相对,执行资源的释放。3OS_READ从硬件通道返回数据给上层。4OS_WRITE上层数据写到硬件底层。5OS_CONTROL对驱动相关的外设的各种控制选项,包括电源管理部分相关的SUSPEND和RESUME。基于会存在一个驱动被多个MANAGER调用的原因,每个MANAGER在使用驱动前都需要调用其OPEN函数先行打开,驱动的OPEN函数中应设置打开次数计数,当打开次数为零时,表明为第一次打开操作,进行初始化操作,并将打开计数加1。当驱动允许多个线程同时调用时,在被其他线程继续调用打开函数时,返回成功并增加打开计数值;对于不允许多线程调用的驱动,返回错误代码。MANAGER不使用驱动时,要调用其CLOSE函数。驱动的CLOSE函数对计数值减1,只有在打开次数零时,表明已经没有任何MANAGER需要其操作功能时,才可以释放所有软硬件资源。DRIVER与DAL接口描述DAL接口函数中的OS_FDFD参数为设备操作符,其他参数包括USER_BUF,COUNT和OP_FLAG与DRIVER函数接口一一对应。这些函数我们把它称为驱动内部API、驱动内部API是由各个驱动实现,并注册到DAL的接口,包括以下函数15(1)SINT32DRV_OPENUINT32OP_FLAG,对驱动的软硬件资源初始化功能。对于需要在初始化时指定启动参数的应用,如MP3等,需要在OPEN函数后调用CONTROL实现。(2)SINT32DRV_RELEASE,与OPEN功能相对,执行资源的释放。(3)SINT32DRV_READCHARUSER_BUF,UINT32COUNT,UINT32OP_FLAG从硬件通道返回数据给上层。(4)SINT32DRV_WRITECHARUSER_BUF,UINT32COUNT,UINT32OP_FLAG上层数据写到硬件底层。(5)SINT32DRV_CONTROLUINT32CMD,VOID支持带参数的控制选项。(6)SINT32G_DRV_INITVOID,驱动模块加载时执行的操作。(7)VOIDG_DRV_EXITVOID,驱动模块卸载时执行的操作。DRIVER与PAL接口一个DRIVER会调用多个PAL库实现硬件访问,比如IRDA驱动需要使用EGCLIB配置特定EGSP为IRDA接口,调用DMALIB来申请DMA通道进行数据收发和DMA中断处理,调用SICLIB来使能中断和注册中断处理函数,使用GPPLIB配置GPIO为输入输出端口。也会存在多个DRIVER调用同一个PAL库的情况,但不会同时调用。比如DMALIB会被许多驱动使用,还有GPPLIB,SICLIB等。DRIVER内部接口原则上驱动之间不存在依赖关系,即驱动之间不会相互调用。如果出现一些功能需要调用另外的驱动实现的情况,需要将那个驱动对应函数接口声明为全局函数。PAL内部接口PAL库内部存在相互调用关系以实现稍高层次的功能,比如USCLIB对EGCLIB调用实现DAI接口到USC的路由。会存在一个PAL被多个驱动调用的情况,PAL库的初始化部分需要在BSP中完成。34驱动模型编程驱动软件从范畴上讲应该包括如前面讲的驱动软件的总体架构上的与驱动部分相关的MANAGER部分功能,DRIVERABSTRACTLAYER,DRIVER层,以及DRIVER下面的PAL库。MANAGERLAYER的功能主要是向上提供业务控制接口,对下进行驱动的管理功能。对于驱动编程模型而言,重要包括驱动软件架构的DAL,DD,PAL三个部分。这里只从驱动模块注册对驱动模型加以描述。所有外设都必须进行注册,注册包括两种中断处理程序注册和设备注册。其中中16断处理程序注册是为了能根据预先设定处理入口及时响应相应的中断事件。而设备注册是为了能够实时跟踪各设备的状态。对于设备注册而言,注册机制必须提供一种驱动外部接口到驱动内部接口的映射。(1)中断注册中断注册涉及两张表中断登记表和中断向量表;其中,前者是一张逻辑表,可以根据需要扩充其中的表项,同时在中断登记表中,支持一个设备的多个ISR登记的情况暂不考虑后者是实际的中断向量表,只包括中断组号GROUP,中断等级LEVEL及中断处理程序入口,如下表所示GROUPLEVEL设备名称中断处理程序入口11122122中断登记表数据结构TYPEDEFSTRUCTUINT32DEV_NOVOIDHANDLERIRQ_REGISTER_STRUCTIRQ_REGISTER_STRUCTG_OS_IRQ_REGISTER_TBLOS_MAX_IRQ_GROUP_NUMOS_MAX_IRQ_LEVEL_NUM(12)中断向量表GROUPLEVEL中断处理程序入口11122122数据结构TYPEDEFSTRUCTVOIDHANDLERIRQ_VECTOR_STRUCTIRQ_VECTOR_STRUCTIRQ_VECTOR_TBLOS_MAX_IRQ_GROUP_NUMOS_MAX_IRQ_LEVEL_NUM(2)设备注册17依然存在两种表设备登记表和设备注册表。其中前者记录驱动设备的初始化入口,这些驱动设备必须在系统初始化时进行初始化。后者包括设备号,设备名称,设备状态,设备处理程序入口等。(21)设备登记表设备号设备初始化函数12数据结构TYPEDEFSTRUCTVOIDINITVOIDEXITDEV_REGISTER_STRUCTDEV_REGISTER_STRUCTG_OS_DEV_REGISTER_TBLOS_MAX_DEV_NUM驱动程序通过OS_MODULE_INIT(DEV_NO,DEV_INIT)完成设备登记表的注册。DEFINEOS_MODULE_INITDEV_NO,DEV_INITG_OS_DEV_REGISTER_TBLDEV_NOINITDEV_INIT驱动程序通过OS_MODULE_EXIT(DEV_NO,DEV_EXIT)完成设备登记表的注销。DEFINEOS_MODULE_EXITDEV_NO,DEV_EXITG_OS_DEV_REGISTER_TBLDEV_NOEXITDEV_EXIT(22)设备注册表设备号设备名称设备状态设备操作函数指针1234为了在驱动程序初始化时完成注册,需要提供设备注册和注销接口供驱动G_DRV_INIT()和G_DRV_EXIT()调用。18第4章DBB子系统硬件设计如图41所示,DBB可通过EBUS管理/访问MEMORY、MIDI、LCD/LCD显示区域的宽度起始象素值,0127/UINT8STARTYPIXEL/LCD显示区域的高度起始象素值,0159/UINT8WIDTH/需要LCD显示区域的宽度象素值,1128/UINT8HEIGHT/需要LCD显示区域的高度象素值,1160/UINT16PWM/背光强度,0256逐步加强/LCD_COMMAND_PARAM/LCD_WRITE函数返回值DEFINELCD_ERR_WRITE11DEFINELCD_ERR_AREA12初始化模块初始化模块主要向操作系统注册设备初始化模块主要向操作系统注册设备函数原型SINT32G_LCD_INITVIOD功能描述注册设备参数描述无返回值SUCCESS成功SINT32G_LCD_INITOS_REGISTER_DEVLCD,“LCD_DRV“,/注册LCD驱动设备/RETURNSUCCESS卸载模块主要向操作系统注销设备函数原型SINT32G_LCD_EXITVIOD功能描述注销LCD设备参数描述无返回值SUCCESS成功SINT32G_LCD_EXITOS_REMASK_IRQGROUP_T7,PRIO_T10/REMASKHALLINTERRUPT/OS_UNREGISTER_DEVLCD/UNREGISTERLCDDEVICEDRIVER/RETURNSUCCESSOPEN模块包括相关GPIO的配置、EBUS总线寄存器的配置、及MV3018和LCD的初始化。函数原型SINT32LCD_OPENVOID功能描述配置GPIO,EBUS总线寄存器以及LCD初始化参数描述无返回值SUCCESS成功32LCD控制器的功能是输出显示驱动信号,驱动LCD显示内容。用户只需要通过读写一系列的寄存器,完成配置和显示驱动。对LCD芯片的硬件初始化比较简单主要是通过MV3018的LCD_CTRL来根据LCD屏芯片规格书对几个主要寄存器负值。接口函数LCD_OPEN的软件流程图如下所示。MV_INIT01开始申请GPIO50,GPIO33,GPIO12配置GPIO50为LT1DISPLAYCS1,OUTPUT配置GPIO33为LT0BACKLIGHT,OUTPUT设置默认背光亮度并关闭背光配置EBUS总线寄存器配置总线时序复位MV3118调用LCD初始化函数INITMAINLCD()打开预览电源模式配置预览时钟MV3018初始化函数MV3INITDEVICE()MV_INIT0MV_INIT1MV_INIT0MV_INIT1结束WRITE模块主要包括对不同的开发环境执行不同的LCD的写屏操作。函数原型SINT32LCD_WRITECHARUSER_BUF,UINT32COUNT,UINT32OP_FLAG功能描述主要实现对LCD的写屏功能,直接调用此函数默认全屏操作USER_BUF写到LCD的数据指针COUNT数据长度参数描述OP_FLAG操作标志位33SUCCESS成功LCD_ERR_AREA写屏范围超出返回值LCD_ERR_WRITE写屏未完成SINT32LCD_WRITECHARUSER_BUF,UINT32COUNT,UINT32OP_FLAGINTXINTYINTCNUINT16FRAMBUFFERIFUSER_BUFNULLPTRRETURNERR_GPPFRAMBUFFERUINT16USER_BUFCNCOUNT/2IFCOUNTWIDTHHEIGHT2RETURNLCD_ERR_AREA/设置为LCD最大显示区域/对LCD相应GRAM地址写图片翻转的数据/MV3LCDBANKSELECTMV3LCDCMDWRITE0X21MV3WRITEDATATOMAINLCDLCD_STARTYPIXEL_GRAMSTARTXPIXELLCD_STARTYPIXEL_GRAMLCD_COMMAND_PARAMPARAMSTARTYPIXELLCD_STARTXPIXELLCD_COMMAND_PARAMPARAMSTARTXPIXELLCD_STARTYPIXELLCD_COMMAND_PARAMPARAMSTARTYPIXELLCD_WIDTHLCD_COMMAND_PARAMPARAMWIDTHLCD_HEIGHTLCD_COMMAND_PARAMPARAMHEIGHTBREAKCASELCD_IOCTL_CLEARGRAMCLEARMAINLCD0X0000/清屏/BREAKCASELCD_IOCTL_BACKLIGHT_SETUP/设置背光/PINID33GPP_READPINIFPINSTATEGPP_LOWPINSTATEGPP_HIGHGPP_WRITEPINCSP_TRANSMITDATA0X30,255LCD_COMMAND_PARAMPARAMPWMBREAKCASELCD_IOCTL_BACKLIGHT_DISABLE/关闭背光/PINID33PINSTATEGPP_LOWGPP_WRITEPIN/DISABLEBACKLIGHT/BREAKCASELCD_IOCTL_STANDBY_MODEMAINLCD_STANDBY/LCD进入STANDBY模式/BREAKCASELCD_IOCTL_FULL_MODEMAINLCD_CANCELSTANDBY/取消STANDBY模式进入FULL模式;/BREAKRETURNSUCCESSRELEASE模块主要是对GPIO资源的释放背光的关闭以及关闭LCD以及MV3018函数原型SINT32LCD_RELEASEVOID功能描述对硬件资源的释放,对LCD及背光的关闭参数描述无返回值SUCCESS成功SINT32LCD_RELEASEVOID35MAINLCD_STANDBY/LCD进入STANDBY模式硬件资源的释放/PINID33PINSTATEGPP_LOWGPP_WRITEPIN/关闭背光/RETURNSUCCESS53CAMERA的驱动实现通过MV3018的I2C控制接口向CAMERA模块发送I2C控制字,AD6532通过系统总线控制MV3018,实现MV3018关于图像摄取处理方面的各项功能。CAMERA驱动提供给上层打开和关闭模块、控制模块,可以实现PREVIEW,CAPTURE,渲染特效、翻转、镜像、缩放、JPEG编解码、相框、SNAPSHOT直接将CAPTURE的图片压缩成JPEG格式、MJPEG功能。531CAMERA驱动软件的功能描述和性能要求本系统主要完成上层应用与底层硬件的的接口关系,完成图像摄取和处理功能的实现,以及底层的硬件驱动。在与应用层的接口中,主要提供OPEN、CONTROL、RELEASE等接口函数,上层应用通过调用相关接口函数实现开启CAMERA,预览、拍照、特效等功能。在与底层硬件的接口中,主要是在OPEN、CONTROL、RELEASE函数中完成对MV3018的控制,再通过MV3018来驱动SENSOR模组,使得再更换SENSOR是只需要修改相应的SENSOR寄存器的值。532子系统软件功能设计CAMERA驱动主要包括初始化模块、卸载模块、OPEN模块、CONTROL模块、RELEASE模块,其中CONTROL主要包含一些上层应用需要的一些特殊命令以及读底层芯片的设置函数的调用。驱动模块功能结构如图55所示。36上层应用初始化模块OPEN模块COTROLRELEASE模块卸载模块MV3018SENSORMODULE模块图55SENSOR驱动模块功能结构打开模块和关闭模块上层应用通过驱动程序的打开模块拉高CAMERAPOWERDOWN,打开给CAMERA的15V核电压供电的LDO,即给CAMERA正常供电。SINT32CAM_OPENUINT32OP_FLAGGPP_PIN_INSTANCEPIN/申请DBB的GPIO34用于给CAMERA供电/PINID34PINFUNCTIONGPP_OUTPUTPINSTATEGPP_HIGHPINALTMODEGPP_ALT_MODE0GPP_RELEASEPINGPP_ACQUIREPINPINSTATEGPP_HIGHGPP_WRITEPIN/ENABLEGPIO34TOSUPPLYVOLTAGETOCAMERA/RETURNSUCCESS上层应用通过驱动程序的关闭模块拉低CAMERAPOWERDOWN,关闭给CAMERA的15V核电压供电的LDO,即切断CAMERA供电。SINT32CAM_RELEASEVOIDMVUINT8SENSORDATA120X03,0X40,0X1F,0X80,0X0D,0X80,0X1E,0X18,0X59,0X03/对SENSOR写值,停止SENSOR工作/MV3I2CWRITE0X78,/HIZ/MV3I2CWRITE0X78,GCAMERAFLGSENSORPWRONMV3_FALSE/关闭电源/G_CAMERA_PREVIEWCAMERA_OFF/关闭预览/RETURNSUCCESS初始化模块和卸载模块37上层应用通过调用初始化模块,向OS注册CAMERA驱动设备。上层应用调用卸载模块,从OS中卸载CAMERA驱动设备。SINT32G_CAM_INITOS_REGISTER_DEVCAMERA,“CAM_DRV“,RETURNSUCCESSSINT32G_CAM_EXITOS_UNREGISTER_DEVCAMERARETURNSUCCESS控制模块上层应用通过驱动程序的控制模块实现PREVIEW时缩放、镜像、翻转、渲染特效、像框等设置以及PREVIEW启动;CAPTURE时翻转、镜像、像框等设置以及CAPTURE启动,CAPTURE图片的读取;JPEG压缩设置、启动及数据读取;JPEG解压缩设置、启动及数据输入;SNAPSHOT设置、启动及数据读取;MJPEG设置、启动及数据读取。函数SINT32CAM_CONTROLUINT32CMD,VOIDPARAM的设计实例见附件。54KAPAD驱动实现541KAPAD驱动软件的功能描述和性能要求KEYPAD驱动软件是运行在AD6901ARM核上的THREADX系统中的驱动程序,它利用AD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论