嵌入式系统概论课程大作业-程序设计说明书

更新时间:2024-01-04 16:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京航空航天大学 软件学院

THE COLLEGE OF SOFTWARE BEIHANG UNIVERSITY

《嵌入式系统概论》课程大作业 在BootLoader里添加开机画面功能的实现

程序设计说明书

Program Design Specification

编制部门: 北航软件学院 07级 《嵌入式系统概论》课程实验小组 实验小组人员:夏凯(GS0721C15) 李祺(GS0721782)

吕喆鹏(GS0721783) 吕昊阳(GS0721794)

编制时间:2008年1月5日

程序设计说明书2008年1月5日

目录

1 概述 ............................................................................................................................ 2

1.1 引言 .................................................................................................................. 2 1.2 编写目的 .......................................................................................................... 2 1.2 背景 .................................................................................................................. 2 1.3 定义 .................................................................................................................. 3 1.4 参考资料 .......................................................................................................... 3 2 需求概述 ................................................................................................................. 4

2.1 开发意图 .......................................................................................................... 4 2.2设计目标 ........................................................................................................... 5 2.3 需求分析 .......................................................................................................... 5

2.3.1需求描述 ................................................................................................. 5 2.3.2需求初步分析 ......................................................................................... 6 2.4 性能要求 .......................................................................................................... 7 2.5 运行环境需求 .................................................................................................. 7

2.5.2开发环境要求 ......................................................................................... 7 2.5.2运行环境要求 ......................................................................................... 7 2.6 接口 .................................................................................................................. 7 3 详细设计 ................................................................................................................. 8

3.1 总体设计 .......................................................................................................... 8

3.1.1模块函数说明 ......................................................................................... 8 3.1.2 主函数启动位置说明 ............................................................................ 8 3.2 层次模块设计流程 .......................................................................................... 9

3.2.1 OEMPlatformInit ( )说明 ..................................................................... 11 3.2.2 MainMenu()函数说明 ..................................................................... 12 3.2.3 WriteBMP( )说明 .................................................................................. 13 3.2.4 ShowBMP( )函数说明 ......................................................................... 14 3.3 主要函数说明及其层次关系 ........................................................................ 14

第 1 页 共 16 页

程序设计说明书2008年1月5日

1 概述

1.1 引言

北京航空航天大学软件学院2007-2008学年第一学期《嵌入式系统概论》课程已经基本结束了。在课程结束之际,为了检验同学们的学习成果,更为了锻炼大家的动手和理论联系实际的实践能力,加深对嵌入式系统知识的认识和了解,我们以完成一份大作业的形式来向任课老师交出一份合格的学习总结答卷。

本学期在《嵌入式系统概论》课程之内还包含了上机实验环节。通过上机实践环节的锻炼,我们对嵌入式系统的知识有了更多的了解,自然对我们完成最后的大作业也提供了很好的锻炼和准备机会。

为了能够准确的检验自己的学习成果,同时结合个人的实际情况(技术基础、工作领域、课余时间等),本着总结和学习的态度,我们以实验内容为基础,在实验的基础上完成我们实验小组的大作业。希望各位老师和同学能够对我们的完成大作业给予批评和指正。 1.2 编写目的

编写本篇程序设计说明书的目的在于对我们所编写的程序提出需求分析,并在具体实现程序前进行详细的程序设计,以为后续的程序开发与维护提供基础和保障。

本说明书共包含二个部分。第一部分是需求分析,用以对我们所要完成的大作业程序的功能、性能及其价值做出说明和规定,并作为今后程序开发完毕后的验收标准。第二部分是详细设计,用以对需求分析中提出的问题和解决方案进行具体分析和实现;给出总体功能并分析各模块功能;详细设计程序中各组成模块的实现流程、功能、接口、等内容,便于对程序的编码进行指导和约束,为软件综合测试提供评审依据,为下一阶段的代码实现做好充分的文档准备。 1.2 背景

◆ 程序名称:在BootLoader里添加开机画面功能的实现

◆ 程序开发者:北航软件学院 07级 《嵌入式系统概论》课程实验小组

第 2 页 共 16 页

程序设计说明书2008年1月5日

◆ 主要用户:对在嵌入式系统启动时运行开机画面有需求的所有用户。 ◆ 程序开始时期:2008-1-5 1.3 定义

BootLoader:简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

NAND flash:flash指的是闪存,它是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何 flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND flash是 flash中的一种结构,它强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。

Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。 1.4 参考资料

◆ GB 8566 计算机软件开发规范

◆ GB 8567 计算机软件产品开发文件编制指南

◆ 《嵌入式系统设计与实例开发(第二版)》 清华大学出版社 2003.10

第 3 页 共 16 页

程序设计说明书2008年1月5日

2 需求概述

2.1 开发意图

当我们满怀憧憬与希望跨入二十一世纪大门的时候,计算机技术也开始进入一个被称为后PC技术的时代。 在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机“机器”;各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式。嵌入式软件已经在悄然的改变着我们的生活。嵌入式系统的开发已经成为一个热门的领域,人们对嵌入式系统产品的要求也在不断的提高。无论是在嵌入式系统产品的外观上、功能和性能上都要求达到甚至超过普通计算机系统,这个从事嵌入式系统开发的工程人员来说提出了越来越高的要求。

嵌入式系统与计算机系统一样,在使用前必须有个系统软硬件初始化的过程。由于系统资源及其算法的不同,在造成了初始化的过程时间有长有短。站在用户的角度出发,用户在使用电子产品的时候,希望自己使用的产品从一启动开始,在很短的时间内就能达到系统正常运行的状态。减少用户在系统启动时的等待时间,是系统开发人员所必需关注的问题。但是由于电子产品自身的特点,在减少系统初始化时间上还不能做到尽善尽美,所以怎样才能尽可能的满足用户在这方面的需求呢,于是开发人员便想出了一种非技术上的解决方案,即在系统启动运行时加入开机画面的方式,让用户在系统初始化时不过多的关注系统初始化的时间,而是“欣赏”美丽生动的而有内涵的开机画面。同样的,对于系统开发商来说,这也是一种很好的自我形象宣传方式,在开机画面中加入自身的商标或理念,以加深用户对开发商的认知度和好感,增加宣传力度和效果。对于用户而言,通过这种方式,用户可以更改自己的系统启动画面,增加自己产品的个性特色,这也是吸引用户使用产品,表现个人性格的方式。于是,在系统启动时加入启动画面,对于开发人员和用户来说都是有极大积极意义的,满足了双方的利益

第 4 页 共 16 页

程序设计说明书2008年1月5日

需求。

这一方式已经在普通电脑系统上得以实施,在嵌入式系统产品上也得到了很好的推广,于是,我们小组决定,以实验课程为基础,在嵌入式系统启动时加入开机画面的形式作为本次《嵌入式系统概论》课程大作业的主要内容。 2.2设计目标

在类似与手机操作系统的实验版上实现对系统启动时加入系统启动画面的功能。在系统初始化时,LCD屏幕上显示预先设置好的开机图片,直到系统初始化到一定程度,进入操作界面为止。如果没有预先设置开机图片,在系统初始化时屏幕上将显示蓝屏。用户可以在系统初始化期间设置自己希望在初始化过程中显示的开机图片,可供选择的开机图片存于SD存储器中。程序会自动判断是否有开机图片存在,也会自动判断所设置的开机图片是否满足系统显示要求。 2.3 需求分析

2.3.1需求描述

鉴于以上的描述,本程序将实现以下几个功能:

1、 系统初始化过程中,装载并在LCD屏幕上显示的BMP图片。例如,将开

机画面设置成如下Bmp图片:

图1 240×320 RGB565Bmp图片

第 5 页 共 16 页

程序设计说明书2008年1月5日

2、 可以对开机画面进行选择和更新。

3、 将开机画面图片保存在NANDFlash中,以提高系统启动速度。

4、 系统启动时,检查NANDFlash中是否有开机画面设置,如果没有则在LCD

屏幕上显示蓝屏。

5、 开机画面图片可以从SD卡中进行选择,并最终保存在NANDFlash中。 6、 系统自动检查所装载的开机图片格式是否满足显示要求,如果不满足,将

重新进行图片装载。 2.3.2需求初步分析

更具以上需求描述,对需求进行分析归纳,进行初步的功能设计,具体如下图所示:

图2 需求初步分析图

第 6 页 共 16 页

程序设计说明书2008年1月5日

2.4 性能要求

1、 不能对系统正常启动时间造成较大影响。 2、 程序稳定,满足一定的封装性要求。 3、 程序具有较高的可靠性。 4、 程序易于维护,可移植性高。 2.5 运行环境需求

2.5.2开发环境要求

软件:windows xp,ads,axd,multi-ice,souce insight;

硬件:PC,VIMICRO0818ARM开发板,交叉串口线,JTAG,语言C。

2.5.2运行环境要求

软件:windows CE/Mobile bootloader; 硬件:VIMICRO0818ARM开发版 2.6 接口

本程序对外只有一个接口,即一个函数入口。在使用本程序时,调用本函数,进入函数入口进行执行即可。

第 7 页 共 16 页

程序设计说明书2008年1月5日

3 详细设计

3.1 总体设计

根据上面进行的需求分析,进行程序的总体设计。本程序总体采用线性执行的顺序,从一个主函数开始执行,依次按条件依次执行每个功能模块。

3.1.1模块函数说明

根据需求,先定义所需每个模块函数的作用和功能,如下: BootloaderMain():进入Bootloader主函数; OEMPlatformInit ():中断控制函数; ShowBMP():图片显示函数; DispEntry():初始化display controller; ReadBootConfig():读标图片志位;

ReadBMPFromNand():把bmp图片从nand读到frame buffer; MainMenu():Bootloader选择菜单;

WriteBMPToNand():写bmp图片到nand中; WriteBootConfig():写标志位到nand中; WriteBMP():读取BMP图片。

3.1.2 主函数启动位置说明

主函数在系统启动是的位置设置如下图所示:

第 8 页 共 16 页

程序设计说明书2008年1月5日

过程说明:系统开始初始化,进入BootloaderMain()函数。 3.2 层次模块设计流程

下面设计每个层次模块的实现流程。

第 9 页 共 16 页

程序设计说明书2008年1月5日

过程说明:BootloaderMain()函数进入OEMPlatformInit ()中断控制函数中。

第 10 页 共 16 页

程序设计说明书2008年1月5日

3.2.1 OEMPlatformInit ( )说明

过程说明:进入OEMPlatformInit ()中断控制函数后,调用ShowBMP()函数。当2秒内有空格按下时,进入MainMenu()函数。

第 11 页 共 16 页

程序设计说明书2008年1月5日

3.2.2 MainMenu()函数说明

过程说明:进入WriteBMP()读取SD卡中BMP图片函数;

第 12 页 共 16 页

程序设计说明书2008年1月5日

3.2.3 WriteBMP( )说明

第 13 页 共 16 页

程序设计说明书2008年1月5日

过程说明:进入WriteBMP()后,开始选择图片,并显示图片。

3.2.4 ShowBMP( )函数说明

过程说明:ShowBMP()从buffer中读出图片并显示出来。 3.3 主要函数说明及其层次关系

在设计中,我们将使用以下函数,先定义其功能: 层次 1 1.1 1.2 1.3 main() InitTimer2() _cpu_mmu_init() InitRTC() 函数名 功能 系统初始化主函数 时钟初始化 MMU单元初始化 RTC初始化 第 14 页 共 16 页

程序设计说明书2008年1月5日 1.4 1.5 1.5.1 1.5.1.1 1.5.1.2 1.5.1.3 1.5.1.2.1 1.5.1.2.2 1.5.1.2.3 1.5.2 1.5.2.1 1.5.2.2 1.5.2.3 1.5.2.4 1.5.2.5 1.5.2.6

InitNANDFlash() BootloaderMain() OEMPlatformInit () ReadBootConfig() ShowBMP() MainMenu() DispEntry() g_BootConfig.ConfigFlags ReadBMPFromNand() MainMenu() WriteBMP() InitSDCard() 初始化NANDFlash 运行Bootloader 中断控制函数 读nand中的标志位 显示nandflash中存储的图片 进入设置开机BMP选项 初始化display controller 判断BUFFER中是否有BMP图片 把bmp从nand读到frame buff 操作界面函数 更换开机画面。 初始化SD控制器 创建分区表 初始化FAT文件系统 将读取到的BMP文件写入nandflash中 写标志位到nand中 InitializePartionTable() InitializeFATSystem() WriteBMPToNand() WriteBootConfig() 第 15 页 共 16 页

程序设计说明书2008年1月5日 1.4 1.5 1.5.1 1.5.1.1 1.5.1.2 1.5.1.3 1.5.1.2.1 1.5.1.2.2 1.5.1.2.3 1.5.2 1.5.2.1 1.5.2.2 1.5.2.3 1.5.2.4 1.5.2.5 1.5.2.6

InitNANDFlash() BootloaderMain() OEMPlatformInit () ReadBootConfig() ShowBMP() MainMenu() DispEntry() g_BootConfig.ConfigFlags ReadBMPFromNand() MainMenu() WriteBMP() InitSDCard() 初始化NANDFlash 运行Bootloader 中断控制函数 读nand中的标志位 显示nandflash中存储的图片 进入设置开机BMP选项 初始化display controller 判断BUFFER中是否有BMP图片 把bmp从nand读到frame buff 操作界面函数 更换开机画面。 初始化SD控制器 创建分区表 初始化FAT文件系统 将读取到的BMP文件写入nandflash中 写标志位到nand中 InitializePartionTable() InitializeFATSystem() WriteBMPToNand() WriteBootConfig() 第 15 页 共 16 页

本文来源:https://www.bwwdw.com/article/flax.html

Top