嵌入式Linux软件平台系统设计说明书.docx
《嵌入式Linux软件平台系统设计说明书.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux软件平台系统设计说明书.docx(26页珍藏版)》请在冰豆网上搜索。
![嵌入式Linux软件平台系统设计说明书.docx](https://file1.bdocx.com/fileroot1/2022-12/14/4e698411-6599-4560-b26f-fc60018c119b/4e698411-6599-4560-b26f-fc60018c119b1.gif)
嵌入式Linux软件平台系统设计说明书
面向行业手持设备的嵌入式Linux软件平台项目
嵌入式Linux软件平台系统设计说明书
编写者:
CY
版本说明
日期
版本号
发布说明
作者
批准人
签字
岗位
1引言
1.1编写目的
本文档是为保证“面向行业手持设备的嵌入式linux软件平台”项目在整个开发过程中的完整性、可追溯性,并保证软件产品与《面向行业手持设备的嵌入式Linux软件平台项目系统需求规格说明书》保持一致性而编写的。
预期读者为项目相关开发人员、项目管理人员和SCM、SQA人员、客户代表。
1.2背景
项目名称:
面向行业手持设备的嵌入式Linux软件平台
用户:
无线手持通信设备厂商
1.3基线
《面向行业手持设备的嵌入式Linux软件平台项目系统需求规格说明书》
1.4范围
本软件结构设计说明书所涉及的内容范围包括总体的结构设计,系统单元的结构设计,系统主要数据结构说明,接口设计,运行设计,系统出错处理设计和维护设计。
1.5定义
无。
1.6参考资料
1)《面向行业手持设备的嵌入式Linux软件平台项目系统需求规格说明书》
《面向行业手持设备的嵌入式Linux开发平台项目总体开发计划》
2)本文件中引用的其他文献、资料以及软件开发标准。
2总体设计
2.1概述
2.1.1功能描述
本产品要实现的功能包括:
●嵌入式Linux系统
●目标系统的软件开发环境
●对运行平台提供的各种接口,提供稳定的驱动程序
●基于QT/embedded的图形用户界面
●中文图形界面
●中英文手写输入、键盘输入
●多媒体播放器
●个人助理套件
●英汉词典
●浏览器
●面向交通、物流行业的应用编程接口
本参考平台包括开发包和运行包。
要求参考平台具备高度的可配置性,方便开发人员根据其需要在参考平台的基础上进行添加、裁减和上层开发,快速形成产品。
2.1.2运行环境
开发平台的运行环境:
推荐采用PIII650以上CPU,内存大于128M,硬盘空间大于4G;推荐完全安装普华Linux3.0,并安装开发包和目标系统源代码。
运行包硬件环境:
硬件采用PXA250开发板,规格如下:
●socketedprocessorforeasyupgrades
●64MBytesSDRAM
●32MBytesBootROM
●32MBytesFlashMemory
●1MByteSRAM
●oneIntel®SA-1111®CompanionChip,whichprovides:
—onePCMCIAslot
—oneCompactFlashslot
—oneUSBHostport
—PS/2keyboardandmousesupport
●StandardMicrosystemsLAN91C96*Ethernetcontroller
●touch-screenpanelcontrollers:
—PhilipsUCB1400*
—BurrBrownADS7846*
●audioCODECswithMIC,LINEIN,andHEADPHONEconnectors:
—PhilipsUCB1400
—CirrusCS4201*
●SharpLM8V31LCDpanel,withsupportforotherLCDtypes
●oneUSBClientport
●pulsewidthmodulationcontrol
●oneinfrared(IrDA)transceiver
●FullFunctionandBluetoothUARTserialports
●oneslotforoneSecureDigitalmemorycardorMultiMediaCard
●I2Cbuscommunications
●logicanalyzerconnections
●oneexpansion-cardslotforcustomdevelopment
●isolatableprocessorcorevoltageforprecisepowermeasurements
●eight7-segmentLEDdigits,eightdiscreteLEDs,eightdiscreteswitches,andtwo
hexadecimal-encodingswitchesforusebyapplicationsoftware
2.2设计思想
2.2.1系统构思
本项目向用户提供参考平台包含开发包和运行包,在系统设计中因此也分为开发平台和运行平台,其中
开发平台系统构思如图1所示,运行平台构思如图2所示。
图2运行平台系统构思
2.2.2关键技术与算法
关键技术:
嵌入式Linux操作系统:
主要是基于IntePXA250硬件平台进行嵌入式Linux系统优化,保证系统具备良好的可移植性和可扩展性,此过程主要涉及的技术包括:
●系统可剪裁可配置技术;
●支持无硬盘及闪存工作方式技术;
●JFFS2文件系统技术;
●支持随时直接关机;
●支持运行时核心模块动态加载机制;
嵌入式图形用户界面:
●支持基于Framebuffer的GUI系统;
●支持GIF、JPEG、XPM、PNG、BMP等常用图像格式;
●提供易用的、可定制的、功能完善的人机交互界面;
●提供已预制的应用模块接口,提供对应用程序添加的扩展机制等;
●图形界面支持完整的中文机制及环境;
●为提高用户的开发效率,提供丰富的控件集和开发工具;
面向行业类的应用编程接口库:
●提供具体行业的API函数的实现机制;
●实现不同系统平台间的通讯;
●使开发出的API函数能够让开发人员较方便地实现上层应用程序与底层硬件之间的通讯;
嵌入式JAVA:
●嵌入式Java虚拟机;
●提供Java处理程序;
●支持Javaapplet和Javaapplication;
●提供Java工具;
●提供Java运行环境;
嵌入式中文信息处理子系统:
●全面的中文显示支持;
●提供多种中文输入法;
●嵌入式中文字体;
●支持嵌入式手写输入;
本项目目的是提供系统平台,所以具体算法主要由合作厂商提供相关接口,本项目设计的主要算法有:
●基于IPP的多媒体编解码算法
●矢量字体的轮廓描绘、填充、平滑算法(算法分析见附录A)
●高效、准确的手写笔迹匹配识别算法
2.2.3关键数据结构
无
2.3基本处理流程
(1)系统流程图
开发平台系统流程如图3所示:
图3开发平台系统流程图
运行平台系统流程图如图4所示.
图4运行平台系统流程图
(2)数据流程图
本项目提供系统平台,因此项目没有核心数据流程,相关模块的数据流程见附录B。
2.4产品的系统体系结构
系统单元如下例表所示:
单元名称
标识符
功能
开发平台包
kfptb
交叉编译源代码,并打包下载到PXA开发板
设备/接口驱动程序
qdcx
访问设备/接口的IO端口/寄存器/配置空间,进行设备检测和参数设定,并初始化设备。
处理中断请求,完成数据读写操作检测错误和处理异常
中软嵌入式Linux操作系统
czxt
嵌入式Linux核心、基本库和扩展库(C库、网络、多媒体、图形库)
嵌入式中文GUI
zwgui
QPE图形环境(窗口管理、中文字库、中文手写)
上层应用
scyy
QPE下的上层应用程序(包含个人助理套件、多媒体应用等)
2.4.1系统层次结构
运行平台系统层次结构如图5所示:
图5运行平台系统层次结构图
2.4.2系统单元设计
开发平台:
将现有的交叉编译工具、调试器、软件包下载工具等整合在一起,并增加裁减、打包工具。
设备/接口驱动程序:
在现有的相关驱动程序源代码基础上,对PS/2,USB,以太网口,LCD以及音频口进行测试,并实现x86平台到PXA平台的移植。
中软嵌入式Linux操作系统:
使用开发平台提供的交叉编译工具编译基于PXA平台的嵌入式Linux核心和基本库以及启动程序,并使用开发平台的相关工具下载到开发板上。
嵌入式中文GUI:
开放源码的图形环境QPE的修改和汉化(另包括全屏中文手写单元和嵌入式中文字库单元),然后交叉编译修改后的QPE源码并下载到开发板上(全屏中文手写流程图见附录C)
上层应用:
修改一些已有源码的应用并交叉编译下载到开发板上,关键是实现一个基于IntelIPP的多媒体播放器,主要方法是在分析QPE多媒体软件底层接口的基础上,移植替换底层解码库。
(多媒体解码流程图见附录D)
2.5功能需求与系统单元的关系
开发平台:
●可以在PC机上交叉编译PXA的应用程序
●可对生成的PXA目标代码进行裁减
●可对生成的系统进行打包集成
●可以将软件包下载到PXA开发板,并写入Flash
●提供minicom,可通过串口进行调试
●可在PXA开发板上通过gdb/gdbserver调试二进制代码
设备/接口驱动程序:
●能使用PS2接口的键盘和鼠标
●能通过USB口使用外接设备
●能使用10M以太网接口
●能使用LCD和触摸屏
●能使用外接的音频输入输出设备
中软嵌入式Linux操作系统:
●在开发板上Linux核心正常启动
●在开发板上能使用Linux基本指令
嵌入式中文GUI:
●完善稳定的QPE图形界面
●全面汉化处理
●手写识别率高
●中文字体美观、清晰
●字符显示能够无级缩放
上层应用:
●嵌入式中文套件
●邮件客户端
●多媒体应用软件(能正常播放MPEG4和MP3文件,多媒体文件播放流畅,播放速率至少达到25帧/秒)
2.6人工处理过程
开发平台:
根据目标系统需求,修改配置文件或Makefile
软件的配置、编译过程,包括configure、make、makeinstall等
软件裁剪、打包和下载过程。
运行平台:
无。
3系统主要数据结构说明
3.1数据结构
本项目主要是提供一个系统平台,因此没有全局的数据结构,系统单元的数据结构如下:
a)嵌入式中文字库主要数据结构
FT_Outline_
typedefstructFT_Outline_
{
shortn_contours;/*numberofcontoursinglyph*/
shortn_points;/*numberofpointsintheglyph*/
FT_Vector*points;/*theoutline'spoints*/
char*tags;/*thepointsflags*/
short*contours;/*thecontourendpoints*/
intflags;/*outlinemasks*/
}FT_Outline;
n_contours:
表示在一个glyphoutline中所有的字形轮廓的数目
n_points:
表示在一个glyphoutline的矢量表示中,所有坐标点的数目。
Points:
一个指向有`n_points'个FT_Vector元素的数组的指针,给出了outline's点坐标
Tags:
一个指向有`n_points'个char元素的数组的指针,给出每个outlinepoint的类型。
Contours:
一个`n_contours'个短整型元素的数组,给出了每个contour的结束点的索引。
Flags:
一系列bitflags用来表示outline的特征。
b)全屏中文手写主要数据结构
classQMatcher{//识别库标准接口类
public:
QMatcher();//初始化
virtual~QMatcher();//析构
virtualvoidsetType();//设置识别类型
virtualvoidsetSpeed();//设置识别速度
virtualunsignedlonggetType();//获得识别类型
virtualshortgetSpeed();//获得识别速度
virtualintRecognize();//识别处理
virtualstructrangelist*TypeRange();//获得识别类型表列
};
structQ_PACKEDQIMPenGlyphLink//每个点的坐标结构
{
signedchardx;
signedchardy;
};
classQIMPenStroke//记录每一个笔画中的各个点
{
public:
QIMPenStroke();//初始化
voidclear();//清空
boolisEmpty();//判断是否为空
intlength();//返回点的个数
constQArray&chain();//返回各个点
QPointstartingPoint();//返回开始点
voidbeginInput(QPointp);//开始记录
booladdPoint(QPointp);//把点加入links数组
voidendInput();//某个笔画结束
protected:
QArraylinks;//某个笔画的各个点的坐标
};
typedefQListQIMPenStrokeList;//一个字的所有笔画
c)多媒体软件移植主要数据结构
(1)mp3解码所用到的结构
typedefstruct{
/****************************************/
1.ippsUnpackFrameHeader_MP3
***********************************/
IppMP3FrameHeaderFrameHdr;/*MP3帧头信息*/
Ipp8uHdrBuf[HDR_BUF_SIZE];/*MP3帧头缓冲区*/
Ipp8u*pHdrBuf;/*MP3帧头缓冲区指针*/
/***********************************
2.ippsUnpackSideInfo_MP3
***********************************/
IppMP3SideInfoSideInfo[MAX_GRAN][MAX_CHAN];/*MP3side信息表*/
/***********************************
3.ippsUnpackScaleFactors_MP3_1u8s
***********************************/
Ipp8sScaleFactor[MAX_CHAN*IPP_MP3_SF_BUF_LEN];/*mp3scalefactors信息表*/
intScfsi[MAX_CHAN*SCF_BANDS];/*Scalefactor信息选择表*/
/*******************************
4.ippsHuffmanDecode_MP3_1u32s
********************************/
Ipp32sIsXr[MAX_CHAN*IPP_MP3_GRANULE_LEN];/*Huffman解码缓冲区和IMDCT流缓冲区*/
intNonZeroBound[MAX_CHAN];/*Non-zeroboundsonHuffmanIMDCTcoefficientsetforeachchannel*/
/*******************************
5.ippsReQuantize_MP3_32s_I
********************************/
Ipp32sRequantBuf[IPP_MP3_GRANULE_LEN];/*Workspacebufferrequiredbyrequantizationprimitive*/
/*******************************
6.ippsMDCTInv_MP3_32s
********************************/
Ipp32sXs[MAX_CHAN*IPP_MP3_GRANULE_LEN];/*IMDCT输出/PQMF输入缓冲区*/
Ipp32sOverlapAddBuf[MAX_CHAN*IPP_MP3_GRANULE_LEN];/*Overlap-addbufferrequiredbyIMDCTprimitive*/
intPreviousIMDCT[MAX_CHAN];/*NumberofIMDCTscomputedonpreviousgranule/frame*/
/*******************************
7.ippsSynthPQMF_MP3_32s16s
********************************/
Ipp32sPQMF_V_Buf[MAX_CHAN*IPP_MP3_V_BUF_LEN];/*"V"buffer-usedbyfastDCT-basedalgorithmforsynthesisPQMFbank*/
intPQMF_V_Indx[MAX_CHAN];/*IndexusedbythePQMFforinternalmaintainenceofthe"V"buffer*/
/*******************************
MainDataDecodingBuffer
********************************/
Ipp8uMainDataBuf[MAIN_DATA_BUF_SIZE];/*数据区解码缓冲区*/
intMainDataEnd;/*数据区指针*/
/*******************************
ApplicationInterfaceParameters
********************************/
intChannels;/*通道数量*/
intpcmLen;/*pcm输出缓冲长度*/
}MP3DecoderState;
(2)mpeg4解码所用到的结构
/*视频属性结构*/
typedefenum{
IPP_VIDEO_LUMINANCE,/*亮度*/
IPP_VIDEO_CHROMINANCE,/*色度*/
IPP_VIDEO_ALPHA/*Alphacomponent*/
}IppVideoComponent;
/*MacroblockTypes*/
typedefenum{
IPP_VIDEO_INTER=0,/*PpictureorP-VOP*/
IPP_VIDEO_INTER_Q=1,/*PpictureorP-VOP*/
IPP_VIDEO_INTER4V=2,/*PpictureorP-VOP*/
IPP_VIDEO_INTRA=3,/*IandPpicture,orI-andP-VOP*/
IPP_VIDEO_INTRA_Q=4,/*IandPpicture,orI-andP-VOP*/
IPP_VIDEO_INTER4V_Q=5,/*PpictureorP-VOP(H.263)*/
IPP_VIDEO_DIRECT=6,/*BpictureorB-VOP(MPEG-4only)*/
IPP_VIDEO_INTERPOLATE=7,/*BpictureorB-VOP*/
IPP_VIDEO_BACKWARD=8,/*BpictureorB-VOP*/
IPP_VIDEO_FORWARD=9/*BpictureorB-VOP*/
}IppMacroblockType;
/*矢量动作结构*/
typedefstruct_IppMotionVector{
Ipp16sdx;
Ipp16sdy;
}IppMotionVector;
/*透明状态结构*/
enum{
IPP_VIDEO_TRANSPARENT=0,
IPP_VIDEO_PARTIAL=1,
IPP_VIDEO_OPAQUE=2
};
3.2数据结构与系统单元的关系
嵌入式中文字库单元,在对矢量字库的处理中,数据结构FT_Outline_中描述了字形轮廓的矢量表示,按照设置的字体格式,对字形轮廓的矢量表示的进行转换,并以此生成位图,输出显示字符。
全屏中文手写单元,在鼠标输入过程中,利用数据结构QIMPenStroke记录每一个笔画中的各个点,利用Qmatcher识别引擎作为调用识别库标准接口,在手写识别程序和识别库之间进行数据交换,并产生候选字列表。
多媒体软件移植单元,主要通过这些数据结构在解码过程来描述媒体文件,并在最后通过数据结构返回上层软件。
4接口设计
4.1外部接口
4.1.1用户接口
开发平台:
采用命令行方式与用户交互信息。
运行平台:
用户