软件概要设计说明书IDE.docx
《软件概要设计说明书IDE.docx》由会员分享,可在线阅读,更多相关《软件概要设计说明书IDE.docx(32页珍藏版)》请在冰豆网上搜索。
软件概要设计说明书IDE
四川长虹技术中心
软件概要设计说明书
版权所有,翻版必究
文档修订记录
版本编号或者更改记录编号
*变化
状态
简要说明
(变更内容和变更范围)
日期
变更人
批准日期
V1.0
C
创建
2007-4-27
展华益
2007-6
V1.0.1
M
修改5.1、5.2的描述;增加1.5设计约束条件
2009-7-3
赵斌
*变化状态:
C——创建,A——增加,M——修改,D——删除
1引言
1.1编写目的
本概要设计说明书是为了指导ApolloProIDE的详细设计,同时为本系统的测试提供必要的信息。
本概要设计说明书的读者包括本系统的系统分析员、测试人员、概要设计人员、详细设计人员。
1.2背景
在当前竞争激烈的嵌入式产品市场,芯片厂商不仅仅要提供高集成化和最优性价比的SoC芯片产品以及基于该SoC芯片的软件整体解决方案,同时还需要向用户提供简单易用的应用程序开发调试工具,使得基于该芯片方案的最终产产品能快速推向市场。
本产品定义为嵌入式软件开发平台,用于支持采用虹微公司的ApolloProSoC芯片的嵌入式系统的应用软件开发。
1.3运行环境
1.3.1硬件设备
列出运行该软件所需要的硬设备。
说明其中的新型设备及其专门功能。
1.3.2软件运行环境
列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。
1.4术语定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.5设计约束条件
列出本设计的约束条件
2总体设计
ApolloProIDE的模块组成如图1所示。
图2.1ApolloProIDE模块组成图
1.应用仓库配置
应用仓库配置模块提供给用户良好的用户体验,用于指导用户根据自己的需求快速、准确地开发产品。
该模块包含两个字模块:
远程仓库配置,本地仓库配置。
远程仓库配置:
终端从服务器下载配置文件manifest.xml,终端通过解析该文件将服务器所提供的应用展示给用户,用户可根据自身的开发需求选择相应项目模板进行开发,同时用户可选择服务器提供的可选配置项,以进行组件重用,实现快速开发。
本地仓库配置:
初始情况下本地仓库仅欲置若干应用程序供用户使用,用户从远程服务器获取相应的应用保存在本地,避免了以后进行相同产品开发带来的通信时延。
本地仓库的另一功能是当服务器不可达时,用户的需求能够从本地库中得到满足。
应用仓库存储的库类型包含以下四种:
原子库、模块、解决方案和应用程序。
其中,原子库不可再分,模块可包含原子库,解决方案可由若干模块组成,应用程序在解决方案的基础之上实现。
3.代码分析模块
代码分析模块提供静态代码分析和动态代码分析。
静态代码分析对某个工程或文件中的函数进行结构检查、静态结构分析和代码质量度量等,方便软件开发人员了解整个工程的函数分布和相互依赖关系,并能够帮助软件开发人员检查一些低级而常见的错误,例如:
变量没有初始化、从空指针中读取值、可能的缓冲区溢出、代码的安全性问题、“==和=”误用的问题等。
静态代码分析结果以树状图形式显示。
动态代码分析可以统计出程序运行过程中各个函数消耗的时间和被调用的次数,这个特性对于用户开发和性能优化密切相关的应用,例如视频编码、解码、数据加密、解密等计算密集型应用而言非常重要。
动态代码分析以柱状图形式显示。
4.Makefile和Configure可视化管理模块
Makefile和Configure可视化管理模块为不熟悉Makefile和Configure规则的用户提供了以图形窗口界面形式的Makefile和Configure文件的配置和解析。
为IDE提供了广义的Makefile管理能力,一方面允许IDE使用者通过图形化方式自由选择自己所需的选项,然后按照用户选择的选项执行配置脚本,生成对应的Makefile或Configure文件;另一方面可以对已有的Makefile或Configure文件进行解析,以图形化方式显示出各编译选项及库的依赖关系。
5.调试管理模块
调试管理模块提供用户应用程序的多种形式调试功能的选择,包括调试器子模块、Flash烧写子模块和仿真器子模块。
(1)调试器模块
调试器模块是ApolloProIDE与目标板直接通过通讯线路连接时所采用的一种调试方式。
调试器模块具备单步、全速运行、CPU复位、设置断点、支持存储器、变量、寄存器查看等功能。
调试器面向用户应用程序支持串口、以太网、USB形式的GDB调试协议。
(2)Flash烧写模块
由于Flash芯片的多样性,只要求实现将长虹提供的Flash烧写驱动程序集成到ApolloProIDE中。
(3)仿真器模块
仿真器模块是ApolloProIDE与仿真器相连再与目标板相连时所采用的一种调试方式。
仿真器模块需要支持LPT和USB两种接口的仿真器,当前版本要求为LPT接口的Multi-ICE仿真器和USB接口的Multi-ICE仿真器、盗版J-LINK、FT2232(OPENJTAG)电缆。
为了降低一个开发团队为其中的每个开发人员重复购买多个JTAG仿真器而增加的开销,ApolloProIDE提供了仿真器共享调试功能,将与仿真器相连的PC机作为服务器,其他需要共享仿真器支持的PC机作为Client与服务器以以太网相连,通过服务器提供共享仿真器调试的功能,方便同一个开发团队的不同用户协同开发。
6.配置管理模块
配置管理模块提供对工具集和支持库的管理功能,使用户能够根据自己的应用需求选择所需要的工具集和支持库,形成个性化的应用程序开发环境。
7.工具集
工具集由长虹公司或其他第三方公司提供。
8.支持库
支持库由长虹公司或其他第三方公司提供。
3接口设计
3.1用户接口
以图形用户方式为用户提供一个类MFC或Eclipse的软件开发环境,用户可以通过菜单或快捷键实现对ApolloProIDE的操作。
3.2外部接口
ApolloProIDE需要的外部接口如下:
1.通过串口、以太网口或USB与目标板相连实现调试器功能;
2.通过LPT或USB与仿真器相连实现仿真器功能;
3.通过以太网口与其他计算机相连实现仿真器的共享调试。
3.3内部接口
ApolloProIDE基于Eclipse平台设计,内部的各模块(如代码分析、调试管理、GUI设计器等)都以插件形式集成到系统中。
4系统数据结构设计
4.1数据结构设计要点
配置管理模块的数据结构如表4-1所示。
数据类型
数据描述
库文件基类
基类主要设置了库文件的共同属性,如所属分类,初始化信息,相关属性等
支撑库类
支撑库类都继承自库文件基类,同时又根据各自实现的功能来实现不同的接口
引用库
通过引用库可以进一步把库文件中的类加载到系统中
XML文件
XML文件包含了加载入系统的库文件的描述信息,从而定义了该文件如何与系统进行交互
4.2数据结构与程序的关系
说明各个数据结构与访问这些数据结构的各个程序之间的对应关系。
[程序1]
[程序2]
[……]
[程序m]
[数据结构1]
√
[数据结构2]
√
[┇]
[数据结构n]
√
5各软件子模块的概要描述
对系统中的各个软件子模块进行概要描述,描述方法可以是流程图、结构框图、调用关系图等等。
5.1应用仓库配置模块
应用仓库配置模块包含两个字模块:
远程仓库配置,本地仓库配置。
远程仓库配置用户可与远程服务器连接,并从服务器下载相应解决方案及可选库进行快速开发。
5.1.1远程仓库配置
1.流程图
远程仓库子模块的流程图如图5.1.1所示:
图5.1.1远程仓库配置
远程仓库配置子模块:
在服务器可达的情况下,解析从服务器下载的manifest.xml,以工程向导方式指导用户完成工程配置建立。
在用户选定工程类型和可选配置后向服务器请求所有文件,并下载到本地仓库中保存。
之后对于用户的同样需求可直接读取本地仓库中的数据。
本地仓库子模块的流程图如图5.1.2所示:
图5.1.2本地仓库配置
本地仓库配置子模块:
解析本地配置文件manifest.xml。
根据解析内容生成工程向导。
用户依据向导流程完成工程配置及新建。
2.结构图
应用仓库配置模块的结构图如图5.1.3所示。
图5.1.3结构图
1)工程向导向服务器请求manifest.xml配置文件
2)解析manifest.xml文件,生成工程向导页面指导用户完成工程配置建立
3)向服务器请求用户所选工程及配置,并下载到本地仓库中。
4)将用户工程相关文件复制到Eclipseworkspace下,配置工程属性。
3.调用关系图
应用仓库配置模块的调用关系图如图5.1.4所示。
图5.1.4调用关系图
工程向导得到manifest.xml文件(两种途径:
从服务器获得或从本地文件系统获得)、用户工程的模板文件以及可选库文件后,解析manifest.xml文件。
依据Eclipse工程项目规范建立工程,并将模板文件及库文件拷贝到Eclipseworkspace下,若模板文件中存在扩展点,向导将扩展程序添加到扩展点,同时根据环境变量读取系统库文件并添加到工程属性中。
最终在IDE视图、编辑器中显示完整工程。
5.2代码分析模块
5.2.1动态代码分析
1.结构框图
图5.2.1动态代码分析模块组成结构图
动态分析模块中各子功能块的功能作用说明:
(1)输入模块,
完成动态模块输入参数的接受和发送,接受待分析代码的路径和文件,用户设置和选择参数。
(2)GCC模块
完成对目标代码文件的动态编译,为动态性能分析做准备。
(3)Gprof模块
Gprof模块则完成代码的统计分析,并生成相应的Gmon.out动态性能数据文件,Gmon.out文件包含代码动态分析数据结果。
然后Gprof对性能数据文件的解析,并从数据文件中析取出所需的性能统计数据。
(4)(Gprof_out)输出模块
接受从Gprof模块析取出的数据,经本模块处理后完成对工程中各源文件中各个函数块运行时间的柱状化图形输出及运行次数输出。
(5)跳转模块
跳转模块主要完成从用户柱状输出跳转到对应的源代码中对应函数的定义处的跳转定位功能。
(6)源代码输出模块
完成选中文件源代码的文件跳转输出。
2.流程图
图5.2.2动态代码分析流程图
3.调用关系图
图5.2.3动态代码分析调用关系图
5.2.2静态代码分析
1.结构框图
5.2.4静态代码分析总体设计图
通过静态代码分析的用户接口,用户可选择查看函数关系调用图和对代码质量进行量度。
函数调用关系树状图是通过graphviz画出树状图,这个树状图是由calltree分析得来。
cppcheck分析工程文件,将得到的警告信息反馈给用户。
函数调用关系图流程:
从用户所给的工程的头文件及源文件目录,得到-I选项;利用calltree–gb–m的参数获得字符界面的函数调用关系;进一步生成.dot文件;再利用graphviz画出树状的函数调用图。
图5.2.5静态代码分析流程图
代码检测流程:
获得用户所给的工程的头文件及源文件目录,得到-I选项;利用cppcheck-a的参数获得程序中存在的一些警告信息;将警告信息展现给用户。
5.2.3用户接口
1.静态分析接口
1)用户接口
函数关系调用图
接口名称
接口标记
实现功能
工程头文件所在目录
头文件路径(-I)
用来指定要分析的头文件的路径
工程源文件所在目录
源文件路径
从该目录下获得所有要分析的源文件
工程头文件所在目录:
建议把工程头文件统一放在一个目录下,如Include。
工程源文件所在目录:
建议将要分析的工程的源文件放在一个目录下,如Src。
注:
只分析c语言编写的工程文件。
用户还可以通过浏览按钮选择某个工程文件所在的目录。
当用户选择代码质量量度时,出现如下对话框。
接口名称
接口标记
实现功能
变量没有初始化
uninitialized
检测声明但没有赋初值的变量
==和=误用
parentheses
检测条件语句中常见的==和=误用问题
可能的缓冲区溢出
Overbuffer
检测程序中可能的缓冲区溢出问题
从空指针读值
Nullpointer
检测程序中读取空指针的情况
内存泄露
Memoryleak
检测程序中的分配内存后未释放的问题
变量没有初始化:
如inta;//a没有赋初值
==和=无用:
如if(a=5)printf(“….”)
可能的缓冲区溢出:
如chara[10],…a[10]=’v’
从空指针读值:
如char*p=”abcdefg”;….free(p);…..printf(“%s\n”,p)
内存泄露:
如char*a=(char*)malloc(sizeof(char)*10);….程序结束时却没有free(a)
用户可选择要检测的项目(建议全选)。
2)外部接口
(1)Eclipse上的calltree插件
对calltree进行裁剪,选择我们所需的功能,并把裁剪后的calltree写成插件安装在Eclipse上。
(2)Eclipse上的cppcheck插件
对cppcheck进行裁剪,选择我们所需的功能,并把裁剪后的cppcheck写成插件安装在Eclipse上。
(3)函数结构分析:
calltree与graphviz之间的接口
利用calltree工具,使用命令(calltree-I/root/Test/Include-gb–m/roo/Test/*.c>temp.c)。
将得到的temp.c解析,生成合适的.dot文件:
Temp.dot。
用dot工具执行命令:
dot–Tpngtemp.dot-otemp.png,生成png文件的函数调用图。
(只分析c语言工程,且必须包含定义main函数的文件)。
(4)代码质量量度:
gcc/g++的-Wuninitialized:
自动变量没有初始(必须与-O一起使用);
gcc/g++的-Wparentheses:
==和=误用;
cppcheck检测c/c++程序中存在的内存泄露及看、可能的堆栈溢出、读空指针。
2.动态代码分析接口
1)外部接口
与eclipse平台的接口:
将gcc,gprof以插件的形式集成到eclipse平台下面
Start_dynamic():
:
在eclipse平台下启动动态代码分析功能
2)内部接口
(1)gcc与gprof的接口:
在gcc编译的时候加参数–pg,执行程序,生成供gprof分析的gmon.out文件。
使用gprof程序分析你的应用程序生成的数据(即使用命令:
gprof–ba.outgmon.out|less).
(2)gmon.out与输出柱状图的接口:
接口标记:
Qt_gmon();//l利用qt的绘图函数来调用gmon.out中的数据画出柱状图
5.3Makefile和Configure可视化配置和解析模块
Makefile和Configure可视化配置和解析模块分成两个子模块,即Makefile可视化配置和解析子模块和Configure文件可视化配置和解析子模块。
5.3.1Makefile可视化配置和解析子模块
1.流程图
Makefile可视化配置和解析子模块的流程图如图5.3.1、5.3.2所示。
图5.3.1Makefile配置
Makefile可视化配置:
由用户在GUI上添加或删除规则,根据GUI上的改动改变DOM中对应的数据,然后根据DOM生成记录构建规则的xml文件,最后使用Makefile生成器从xml生成Makefile。
图5.3.2Makefile解析
Makefile可视化解析:
使用Makefile分析器将Makefile转换为xml,然后加载xml生成DOM树,最后使用DOM数据生成GUI来显示Makefile。
2.结构图
Makefile可视化配置和解析子模块的结构图如图5.3.3所示。
图5.3.3结构图
1)GUI根据DOM数据来显示Makefile构建规则,并将用户改动反映到DOM树中。
2)DOM树通过加载xml文件来生成,并在用户完成操作后重新生成xml文件。
3)在生成阶段,Makefile作为最终产品,通过Makefile生成器读取xml文件来生成;在显示阶段,Makefile则由Makefile分析器转换为xml格式供上层模块使用。
3.调用关系图
Makefile可视化配置和解析子模块的结构图如图5.3.4所示。
图5.3.4调用关系图
GUI显示在Makefile处理过程中转化过的DOM数据,用户通过GUI所作的改动也在处理之后转化到DOM数据中;xml文件是DOM生成的依据,同时DOM中数据变化后在保存时也要更新xml文件;xml文件作为数据转化的中介,在生成Makefile时要将xml格式的内容转化为Makefile,在显示Makefile时要从Makefile文件通过分析生成xml格式文件。
5.3.2Configure文件可视化配置和解析子模块
1.流程图
Configure文件可视化配置和解析子模块的流程图如图5.3.5、5.3.6所示。
图5.3.5Configure配置
Configure配置提供GUI供用户设置Configure,根据用户操作改变DOM数据,将Configure设置以xml文件格式保存。
图5.3.6Configure显示
Configure解析加载xml文件生成DOM树,根据DOM数据生成GUI显示Configure设置。
2.结构图
Configure文件可视化配置和解析子模块的结构图如图5.3.7所示。
图5.3.7Configure结构框图
GUI根据DOM数据来显示Configure设置,并将用户改动反映到DOM树中,DOM树通过读取xml文件来生成,并在改动产生之后由DOM树重新的生成xml文件,Configure设置直接保存为xml格式。
3.调用关系图
Configure文件可视化配置和解析子模块的调用关系图如图5.3.8所示。
图5.3.8Configure调用关系图
GUI显示由Configure处理过程转化的DOM数据,用户通过GUI所作的改动也在处理之后转化到DOM数据中;xml文件是DOM生成的依据,同时DOM中数据变化后在保存时也要更新xml文件,Configure设置的内容以xml格式保存。
5.4调试管理模块
5.4.1结构框图
1.系统硬件结构图
系统硬件结构图如图5.4.1所示。
错误!
未指定应用程序。
图5.4.1系统硬件结构图
调试通过两种方式实现,软件调试和仿真器调试。
软件调试首先需要将调试主机(ICE_HOST)通过USB,网线,RS232电缆与目标板直接相连。
调试主机(ICE_HOST)上的调试器与目标板上的GDBserver通信,完成调试功能。
仿真调试通过ICE_server共享在线仿真器。
ICE_HOST端的调试器与ICE_server连接成功后,ICE_HOST通过ICE_server控制在线仿真器(ICE)对目标板进行调试。
2.系统功能结构图
系统功能结构图如图5.4.2所示。
错误!
未指定应用程序。
'
图5.4.2功能结构图
3.系统逻辑结构图
系统逻辑结构图如图5.4.3所示。
错误!
未指定应用程序。
图5.4.3系统逻辑结构图
5.4.2接口描述
1.用户接口
本系统通过GUI接供用户与IDE交互的接口。
可以分成三部分:
(1)调试控制:
接口名称
接口标记
实现功能
运行
run
全速运行,忽略断点
单步跟踪
step_over
不进入函数单步执行每条语句
单步步进
step_in
进入函数单步执行
单步跳出
step_out
跳出函数或循环
继续执行
continue
从断点处继续执行
重新开始
restart
程序重新执行,遇断点会停下
程序下载
download
将程序下载到目标板上
(2)断点设置:
接口名称
接口标记
实现功能
增加断点
break
在指定行添加断点
删除断点
clear_break
删除指定的断点
清除所有
clear_all
清除所有断点
显示断点
break_info
显示所有断点的位置和其它信息
(3)窗口设置:
(变量,寄存器,内存,表达式显示窗口)
接口名称
接口标记
实现功能
窗口切换
window_switch
共享寄存器窗口,实现切换
格式选择
format_select
选择数值的格式(oct,dec,hex)
信息排列
display_sort
按名称,出现顺序等排列
(4)配置选择:
接口名称
接口标记
实现功能
连接设置
link_mode
选择PC与目标机的连接方式(RS232,
Ethernet,USB).
显示设置
display_config
选择哪些窗口会出现在透视图中
2.外部接口
(1)软件接口
接口名称
接口标记
实现功能
启动
debugger_start
在IDE开发环境中启动调试器
关闭
debugger_close
调试完成后,在IDE中关闭调试器
(2)硬件接口
接口名称
接口标记
实现功能
串行接口
debug_RS232
与目标板之间通过RS232协议通信
网络接口
debug_ethernet
与目标板通过以太网通信
USB接口1
debug_usb1
与目标板通过USB通信
LPT接口
debut_lpt
实现ICE_server与仿真器的连接
USB接口2
debug_usb2
实现ICE_server与仿真器的连接
以及网接口
debug_ethernet
实现调试主机与ICE_server的连接
3.内部接口
内部接口分成两大部分,GUI通过GDB/MI调用GDB内核的接口,以及GDB通过RSP协议与目标板通信的接口。
GDB调用接口分成3大类:
指令解析,数据传送,配置选项;
接口名称
接口标记
实现功能
指令传送
MI_transt_inst
实现GUI调试操作到GDB指令的解析
数据传送
MI_transt_data
实现GUI中信息与GDB中信息的交互
配置选项
MI_config
将GUI的配置选项解析后配置到GDB
通信接口:
接口名称
接口标记
实现功能
指令传送
RSP_transt_inst
实现GDB与目标板之间的指令传送
数据传送
RSP_transt_data
实现GDB与目标板之间的数据传送