USB升级模块软件详细设计书.docx
- 文档编号:23415516
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:52
- 大小:818.16KB
USB升级模块软件详细设计书.docx
《USB升级模块软件详细设计书.docx》由会员分享,可在线阅读,更多相关《USB升级模块软件详细设计书.docx(52页珍藏版)》请在冰豆网上搜索。
USB升级模块软件详细设计书
文档编号
版本号
密级
JL-TD01-XMBH-KHBH-DSD
V1.00
机密
USB升级模块软件详细设计书
文档作者:
朱海峰
日期:
2011-10-20
项目经理:
日期:
审核:
日期:
批准:
日期:
文档历史发放及记录
序号
变更(+/-)说明
作者
版本号
日期
批准
1
创建
朱海峰
1.0
2011-10-20
文档简要功能及适用范围
1.文档的简要功能
[本文档的简要功能说明。
]
文档详细说明了USB升级模块的设计内容。
为代码实现以及测试提供依据,方便维护。
2.文档的适用范围
[本文档适用于哪些人员、哪些项目、哪些领域等。
]
本文档适用于公司内部所有开发人员。
1、引言
1.1背景
[简要说明该产品的市场背景和主要特点。
]
目前,我们的软件中有USB升级模块,但是功能上、设计上都没有很好的规划过。
这使得在实际应用中,我们还是会不断的做重复的工作。
同时,相关文档、代码质量等指标,都没有达到一定的要求。
USB升级模块需求阶段通过。
1.2产品信息
产品名称:
USB升级模块
1.3软件名称
说明本文档对应的软件模块的正式名称和版本号。
USB升级模块
USBUpgradeProc
1.4术语和缩略语
[对文中使用的术语和缩略语进行说明。
]
缩略语/术语
全称
说明
1.5参考资料
[编写本文档时引用或参考的文档资料、有关标准等。
]
《USB升级模块——需求报告.doc》
2、模块系统结构
2.1功能需求
[详细说明本软件模块应实现的所有功能。
]
1、从U盘指定路径读取升级文件(*.img/*.IMG),并存储到内存。
2、校验读取到的升级文件的IMG头信息,同Loader的相关版本信息做比较。
提供强制升级和限制升级两种升级方式的校验处理。
●强制升级:
比较OUI、厂商号和硬件版本号。
●限制升级:
比较OUI、厂商号、硬件版本号、软件版本号。
其他条件暂时不作考虑,有实际需求时再处理。
3、对升级文件进行CRC校验,若有附加数据,则对第一个IMG数据进行校验。
4、判断升级文件IMG头Flag标志位,进行升级数据是否去IMG头的处理。
(适用于素材、字库等情况)
5、判断升级文件IMG头中的文件数据类型Image_type,来处理升级多Flash情况时(高清平台),写在哪个Flash上,调用相应的Flash处理函数。
6、满足可以升级附加数据要求,即在升级过程中,不再以升级文件头部的IMG头信息(如长度,CRC值)为升级数据量大小的依据,而以整个文件的大小来计算存储的数据量。
7、将正确的升级文件数据保存到Flash中。
8、显示升级过程。
9、若升级过程中出错,显示相应的错误信息。
10、升级完成后,自动重启机顶盒。
11、预留平台级别的外部接口:
Flash相关读写调用接口,前面板显示接口。
使模块同平台分享。
12、预留菜单显示级别的外部接口,将菜单分享出来。
13、提供模块测试接口。
14、预留对其它升级文件格式的支持空间。
2.2模块在系统中的位置
[采用图形表示该软件模块在系统中的位置,以说明其在系统中的作用。
]
如图示,USB升级模块属于应用层的一个通用功能模块,在实际项目中应用比较广泛。
模块内部实现相关升级的功能,对外提供相关接口,为功能模块提供平台、菜单等级别的功能支持。
2.3子模块划分
[用图表列出本模块系统内的每个项(包括子模块、子程序和函数)的名称、标识符和它们之间的层次结构关系。
]
●USBUpgrade子模块为USB升级功能模块的主功能模块,升级流程控制均在该子模块中控制。
●CRC子模块:
为USBUpgrade子模块提供CRC校验接口。
●USBUpgrade_cfg子模块:
从USB升级模块中分离出来的,与平台和菜单相关的功能部分,如Flash操作、菜单等。
因为这些在实际应用中,要求都会不同,所以独立开来由用户去配置。
2.4子模块间关系
[说明各子模块、子程序、函数之间的控制、顺序、消息传递等耦合关系,并简要说明有关的重要数据结构或对象在这些耦合关系中所起的作用。
]
如图示:
●USBUpgrade子模块:
为外部提供唯一USBUpgrade_Start()接口,调用该功能模块;
●CRC子模块:
为USBUpgrade子模块提供初始化接口和CRC校验接口;
●USBUpgrade_cfg子模块:
为USBUpgrade子模块提供VerifyImgHeader()、WriteImg2Flash()和MsgProc()三个接口。
ØVerifyImgHeader()和WriteImg2Flash()均返回处理结果的状态码;
ØMsgProc()处理升级过程中的所有错误状态码,并显示在OSD上。
3.数据类型说明
[给出本软件使用的每一个公共数据结构的类型定义、存储方式,以及其内部各元素项的类型定义、初始取值、可能取值范围及相应的含义,必要的话,应说明具体的操作方法。
如果是面向对象的设计,应详细阐述所有类和对象的外部行为特征和内部实现细节,还有所有类的继承关系和多态性实现,以及其他有关的对象设计细节。
]
3.1类型1
类型定义:
typedefstruct
{
UI32uwFileLength;
UI32uwFileAddr;
UI32uwFileCrc;
UI8*pubImgHeader;
UI8*pubImgBuf;
UI8ubImageType;
UI8ubDelHeadFlg;
UI16uhwUserDataLen;
}IMG_INFO;
头文件:
含义:
数据项
含义
UI32uwFileLength;
升级文件长度
UI32uwFileAddr;
升级文件写入Flash地址
UI32uwFileCrc;
升级文件CRC值
UI8*pubImgHeader;
升级文件IMG头部
UI8*pubImgBuf;
升级文件数据缓冲区
UI8ubImageType;
升级文件IMG类型
UI8ubDelHeadFlg;
升级文件去IMG头标志
UI16uhwUserDataLen;
升级用户自定义数据长度
存储方式:
模块内全局变量。
初始取值:
数据项
初始值
uwFileAddr
0x00
uwFileCrc
0x00
uwFileLength
0x00
pubImgHeader
NULL
pubImgBuf
NULL
ubImageType
0x00
ubDelHeadFlg
0x00
uhwUserDataLen
0x00
可能取值范围及含义:
数据项
取值范围
含义
uwFileAddr
Flash大小
Flash地址
uwFileCrc
自然数
CRC32计算结果
uwFileLength
Flash大小
Flash大小,为Flash的最大存储量
pubImgHeader
有效内存地址
指向存储升级文件IMG头部的内存地址
pubImgBuf
有效内存地址
指向存储升级文件数据的内存地址
ubImageType
0
LOADER
1
APP
2
BOOT
3
FONT
4
LOGO
5
BACKGROUND
6
MENU
7
未定义
ubDelHeadFlg
0
存储IMG数据时,保留IMG头部及UserData
1
存储IMG数据时,不保留IMG头部及UserData
uhwUserDataLen
自然数
应用自定义数据长度
3.2类型1
类型定义:
typedefenum
{
USBMSG_OK,
USBMSG_CANT_OPEN_USB,
USBMSG_CANT_OPEN_DIR,
USBMSG_CANT_OPEN_IMG,
USBMSG_FILE_NOT_EXIST,
USBMSG_FILE_READ_ERROR,
USBMSG_OUI_ERROR,
USBMSG_MID_ERROR,
USBMSG_HW_ERROR,
USBMSG_CRC_ERROR,
USBMSG_ERASE_ERROR,
USBMSG_WRITE_ERROR,
USBMSG_OTHER_ERROR
}USBMSG_E;
头文件:
USBUpgradeproc.h
含义:
数据项
含义
USBMSG_OK,
OK
USBMSG_CANT_OPEN_USB,
无法打开U盘
USBMSG_CANT_OPEN_DIR,
无法打开文件夹
USBMSG_CANT_OPEN_IMG,
无法打开IMG文件
USBMSG_FILE_NOT_EXIST,
文件不存在
USBMSG_FILE_READ_ERROR,
文件读取出错
USBMSG_OUI_ERROR,
升级文件OUI错误
USBMSG_MID_ERROR,
升级文件厂商号错误
USBMSG_HW_ERROR,
升级文件硬件版本号错误
USBMSG_CRC_ERROR,
升级文件CRC校验错误
USBMSG_ERASE_ERROR,
擦除Flash出错
USBMSG_WRITE_ERROR,
写Flash出错
USBMSG_OTHER_ERROR
其它错误
存储方式:
初始取值:
数据项
初始化值
USBMSG_OK,
0
USBMSG_CANT_OPEN_USB,
1
USBMSG_CANT_OPEN_DIR,
2
USBMSG_CANT_OPEN_IMG,
3
USBMSG_FILE_NOT_EXIST,
4
USBMSG_FILE_READ_ERROR,
5
USBMSG_OUI_ERROR,
6
USBMSG_MID_ERROR,
7
USBMSG_HW_ERROR,
8
USBMSG_CRC_ERROR,
9
USBMSG_ERASE_ERROR,
10
USBMSG_WRITE_ERROR,
11
USBMSG_OTHER_ERROR
12
可能取值范围及含义:
4.函数说明
4.1函数1
4.1.1原型定义
voidUSBUpgrade_Start(void)
4.1.2头文件
USBUpgradeproc.h
voidUSBUpgrade_Start(void)
4.1.3功能和性能
[说明对该函数的全部功能和性能(包括精度、灵活性和时间特性等)的要求]
本函数为外部接口,供外部调用该模块。
本函数调用初始化函数和USB升级主函数,实现USB升级功能。
4.1.4设计特点
[说明本函数的特点(如,是常驻内存还是非常驻?
是可重入的还是不可重入的?
有无覆盖要求?
是顺序处理还是并发处理等)。
]
4.1.5输入参数
[逐个说明每一个输入参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输入的形式、特殊取值的定义(如跟硬件相关的取值)。
]
4.1.6输出参数
[给出对每一个输出参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输出的形式等。
]
4.1.7返回值
[返回值的说明,成功、失败类型的定义]
4.1.8算法
[详细说明本函数所选用的算法,具体的计算公式和计算步骤。
]
4.1.9逻辑流程
[用图表辅以必要的说明来表示本函数的逻辑流程。
]
4.1.10与其他函数关系
[说明本函数与其他函数之间的关系,说明参数赋值和调用方式,说明与本函数相直接关联的数据结构。
]
本函数调用初始化函数,进行模块数据结构、CRC初始化,置初始化标志位:
●USBUpgrade_Initialize()
调用升级主函数,处理升级流程:
●USBUpgradeProc()
本函数供外部调用,调用USB升级功能。
4.1.11存储分配
[根据需要,说明本函数的存储分配。
]
4.1.12限制条件
[说明本函数运行中所受到的限制条件。
]
4.1.13调试方法
[说明对本函数进行调试的基本方法。
]
4.2函数2
4.2.1原型定义
staticvoidUSBUpgrade_Initialize(void)
4.2.2头文件
staticvoidUSBUpgrade_Initialize(void)
4.2.3功能和性能
[说明对该函数的全部功能和性能(包括精度、灵活性和时间特性等)的要求]
本函数初始化升级过程中要用到的数据结构,进行CRC初始化,以及置模块初始化标志位。
4.2.4设计特点
[说明本函数的特点(如,是常驻内存还是非常驻?
是可重入的还是不可重入的?
有无覆盖要求?
是顺序处理还是并发处理等)。
]
本函数非常驻内容,但是初始化的数据结构体与模块初始化标志位会常驻内存。
4.2.5输入参数
[逐个说明每一个输入参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输入的形式、特殊取值的定义(如跟硬件相关的取值)。
]
4.2.6输出参数
[给出对每一个输出参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输出的形式等。
]
4.2.7返回值
[返回值的说明,成功、失败类型的定义]
4.2.8算法
[详细说明本函数所选用的算法,具体的计算公式和计算步骤。
]
4.2.9逻辑流程
[用图表辅以必要的说明来表示本函数的逻辑流程。
]
●初始化数据结构体;
●初始化CRC模块;
●置模块初始化标志位。
4.2.10与其他函数关系
[说明本函数与其他函数之间的关系,说明参数赋值和调用方式,说明与本函数相直接关联的数据结构。
]
本函数调用CRC子模块初始化接口函数对CRC子模块进行初始化操作:
●Init_Crc_32_Tab()
本函数供模块外部调用接口函数USBUpgrade_Start()调用
4.2.11存储分配
[根据需要,说明本函数的存储分配。
]
4.2.12限制条件
[说明本函数运行中所受到的限制条件。
]
4.2.13调试方法
[说明对本函数进行调试的基本方法。
]
4.3函数3
4.3.1原型定义
staticvoidUSBUpgradeProc(void)
4.3.2头文件
staticvoidUSBUpgradeProc(void)
4.3.3功能和性能
[说明对该函数的全部功能和性能(包括精度、灵活性和时间特性等)的要求]
本函数为功能模块的主流程处理函数,升级过程中的各个处理过程均本函数中控制。
若升级过程中产生错误,本函数将调用USBUpgrade_MsgProc()函数,在OSD上显示错误信息。
4.3.4设计特点
[说明本函数的特点(如,是常驻内存还是非常驻?
是可重入的还是不可重入的?
有无覆盖要求?
是顺序处理还是并发处理等)。
]
本函数为顺序处理过程。
4.3.5输入参数
[逐个说明每一个输入参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输入的形式、特殊取值的定义(如跟硬件相关的取值)。
]
4.3.6输出参数
[给出对每一个输出参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输出的形式等。
]
4.3.7返回值
[返回值的说明,成功、失败类型的定义]
4.3.8算法
[详细说明本函数所选用的算法,具体的计算公式和计算步骤。
]
4.3.9逻辑流程
[用图表辅以必要的说明来表示本函数的逻辑流程。
]
4.3.10与其他函数关系
[说明本函数与其他函数之间的关系,说明参数赋值和调用方式,说明与本函数相直接关联的数据结构。
]
本函数控制整个升级模块的升级流程,调用各个功能函数处理各个过程:
●USBUpgrade_Initialize()
●USBUpgrade_GetImgFile()
●USBUpgrade_ReadImgFile()
●USBUpgrade_VerifyImgHeader()
●USBUpgrade_VerifyImgCRC()
●USBUpgrade_WriteImg()
●USBUpgrade_Restart()
调用错误处理函数,处理升级过程中产生的错误,并在OSD上显示错误信息:
USBUpgrade_ErrorCodeProc()
本函数供模块外部调用接口函数USBUpgrade_Start()调用
4.3.11存储分配
[根据需要,说明本函数的存储分配。
]
4.3.12限制条件
[说明本函数运行中所受到的限制条件。
]
模块初始化函数已经正常运行。
本函数运行前,应该确保STB正常运行,并且留有可观的内存供使用。
通常情况下,会需要数M的内存空间供使用,根据不同的项目、不同的平台,会有不同的软件大小,因此需要的内存空间也就不同。
Flash、USB、文件系统驱动均可正常使用。
4.3.13调试方法
[说明对本函数进行调试的基本方法。
]
4.4函数4
[类似函数1,说明函数2的设计考虑要点。
]
4.4.1原型定义
staticUSBMSG_EUSBUpgrade_GetImgFile(constI8*pubRootPath)
4.4.2头文件
staticUSBMSG_EUSBUpgrade_GetImgFile(constI8*pubRootPath)
4.4.3功能和性能
[说明对该函数的全部功能和性能(包括精度、灵活性和时间特性等)的要求]
本函数将到指定的路径(U盘根目录:
/update)下去查找升级文件,并得到升级文件的相关信息,如文件名、文件类型等。
4.4.4设计特点
[说明本函数的特点(如,是常驻内存还是非常驻?
是可重入的还是不可重入的?
有无覆盖要求?
是顺序处理还是并发处理等)。
]
4.4.5输入参数
[逐个说明每一个输入参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输入的形式、特殊取值的定义(如跟硬件相关的取值)。
]
constI8*pubRootPath:
指定的升级文件查找路径,这字符常量,如:
A:
/update
4.4.6输出参数
[给出对每一个输出参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输出的形式等。
]
4.4.7返回值
[返回值的说明,成功、失败类型的定义]
数据类型:
USBMSG_E
4.4.8算法
[详细说明本函数所选用的算法,具体的计算公式和计算步骤。
]
4.4.9逻辑流程
[用图表辅以必要的说明来表示本函数的逻辑流程。
]
4.4.10与其他函数关系
[说明本函数与其他函数之间的关系,说明参数赋值和调用方式,说明与本函数相直接关联的数据结构。
]
本函数主要调用FS功能函数,来查找U盘中的升级文件:
●DVD_FS_OpenFileSystem()
●DVD_FS_OpenDir()
●DVD_FS_GetDirCount()
●DVD_FS_ReadDir()
调用系统函数申请和释放文件列表的内存空间:
●DOS_FreeMemory()
●DOS_AllocMemory()
本函数供模块主流程函数USBUpgradeProc()调用。
4.4.11存储分配
[根据需要,说明本函数的存储分配。
]
4.4.12限制条件
[说明本函数运行中所受到的限制条件。
]
指定路径应该有效。
4.4.13调试方法
[说明对本函数进行调试的基本方法。
]
4.5函数5
4.5.1原型定义
staticUSBMSG_EUSBUpgrade_ReadImgFile(constUI8*pubRootPath)
4.5.2头文件
staticUSBMSG_EUSBUpgrade_ReadImgFile(constUI8*pubRootPath)
4.5.3功能和性能
[说明对该函数的全部功能和性能(包括精度、灵活性和时间特性等)的要求]
本函数根据函数USBUpgrade_GetImgFile()所查找到的升级文件信息,读取升级文件的数据到内存中,并获取文件的相关IMG头部信息。
4.5.4设计特点
[说明本函数的特点(如,是常驻内存还是非常驻?
是可重入的还是不可重入的?
有无覆盖要求?
是顺序处理还是并发处理等)。
]
升级过程的数据结构体将常驻内存,数据结构体中包含升级文件数据和升级文件IMG头部等信息。
这些内存空间只有在升级完成或者升级失败时才会被释放。
4.5.5输入参数
[逐个说明每一个输入参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输入的形式、特殊取值的定义(如跟硬件相关的取值)。
]
constI8*pubRootPath:
指定的升级文件查找路径,为字符常量,如:
A:
/update
4.5.6输出参数
[给出对每一个输出参数的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、参数值的意义、输出的形式等。
]
4.5.7返回值
[返回值的说明,成功、失败类型的定义]
数据类型:
USBMSG_E
4.5.8算法
[详细说明本函数所选用的算法,具体的计算公式和计算步骤。
]
4.5.9逻辑流程
[用图表辅以必要的说明来表示本函数的逻辑流程。
]
4.5.10与其他函数关系
[说明本函数与其他函数之间的关系,说明参数赋值和调用方式,说明与本函数相直接关联的数据结构。
]
本函数调用FS功能函数,读取升级文件数据,并存储在内存中:
●DVD_FS_Open()
●DVD_FS_GetLength()
●DVD_FS_Read()
调用系统函数,为升级文件数据申请内存空间:
●DOS_AllocAlignMemory()
本函数供模块主流程函数USBUpgradeProc()调用。
4.5.11存储分配
[根据需要,说明本函数的存储分配。
]
4.5.12限制条件
[说明本函数运行中所受到的限制条件。
]
指定路径应该有效。
4.5.13调试方法
[说明对本函数进行调试的基本方法。
]
4.6函数6
4.6.1原型定义
USBMSG_EUSBUpgrade_VerifyImgHeader(void*ptIMGHeader)
4.6.2头文件
USBUpgrade_cfg.h
USBMSG_EUSBUpgrade_VerifyImgHeader(void*ptIMGHeader)
4.6.3功能和性能
[说明对该函数的全部功能和性能(包括精度、灵活性和时间特性等)的要求]
本函数为USBUpgrade_cfg子模块中的函数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB 升级 模块 软件 详细 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)