嵌入式系统应用需求中最为突出的是注重应用的时效性,需求分析阶段的主要任务是,第一对问题的识别和分析,也就是对用户提出的问题进行抽象识别用以产生以下的需求:功能需求、性能需求、环境需求、可靠性需求、安全需求、用户界面需求、资源使用需求、软件成本与开发进度需求。
第二制订规格说明文档经过对问题的识别,产生了系统各方面的需求。通过对规格的说明,文档得以清晰、准确地描述。这些说明文档包括需求规格说明书和初级的用户手册等。
第三需求评审作为系统进入下一阶段前最后的需求分析复查手段,在需求分析的最后阶段对各项需求进行评估,以保证软件需求的质量。需求评审的内容包括正确性、无歧义性、安全性、可验证性、一致性、可理解性、可修改性、可追踪性等多个方面。
②设计阶段
系统的设计阶段包括系统设计、任务设计和任务的详细设计。由于嵌入式系统中任务的并发性,嵌入式软件开发中引入了DARTS(Design Approach for Real-Time System)。
DARTS设计方法:是结构化分析/结构化设计的扩展。它给出划分任务的方法,并提供定义任务间接口的机制。
DARTS设计方法的设计步骤如下:
数据流分析 划分任务
定义任务间的接口 ③生成代码阶段
生成代码阶段需要完成的工作包括代码编程、交叉编译和链接、交叉调试和测试等。
第一代码编程,在嵌入式系统的开发过程中,一般采用的方法是先在通用PC上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。最后将程序下载到目标平台上的特定位置,在目标板上启动运行这段二进制代码。
第二交叉编译和链接,嵌入式软件开发编码完成后,要进行编译和链接以生成可执行代码。但是,在开发过程中设计人员普遍使用Intel的x86系列CPU的计算机进行开发,而目标环境的处理芯片却是多种多样的,如ARM,DSP,PowerPC,DragonBall系列等,这就要求开发机上的编译器能支持交叉编译。 嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的TornadoⅡ以及GNU套件等。交叉编译链接生成两种类型的可执行文件:调试用的可执行文件和固化的可执行文件。
第三交叉调试,又叫远程调试,具有以下特点: 调试器和被调试的程序运行在不同的机器上。调试器运行在PC或工作站上,而被调试程序运行在各式的专用目标机上;
调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG或者专用的通信方式;
在目标机上一般具有某种调试代理,这种代理能与调试器一起配合完成对目标机上运行程序的调试。这种代理可以是某种能支持调试的硬件,也可以是某种软件;
10
目标机可以是一种仿真机。通过在宿主机上运行目标机的仿真软件,仿真一台目标机,使整个调试工作只在一台计算机上进行。
第四测试,嵌入式系统开发的测试与通用软件的测试相似,分为单元测试和系统集成测试。
④固化阶段
嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期任务的计算机软件。嵌入式软件的特点如下:
软件要求固态化存储。
软件代码要求高质量、高可靠性。 系统软件的高实时性是基本要求。
多任务实时操作系统成为嵌入式应用软件的必需。 (7)嵌入式系统的开发要点
在嵌入式系统的设计过程中还要重点注意以下几点基本要求。
硬件/软件协同设计:基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。
系统集成:把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。
系统测试:对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。
在本设计中使用的是ARM9系列的ARM920T。
2.3.3 Linux操作系统
Linux与Unix的操作系统类似,它起源于芬兰一个名为Linus Torvalds的业余爱好者,现在已经发展成为最流行的一款开放源代码的操作系统。Linux原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正逐渐应用于嵌入式设备。Linux可以说是最早的嵌入式Linux发行版本。它是为没有舢的处理器而设计的,进而发展了一个完整的开发平台,包括编译、调试等工具。
自1991年问世到现在,Linux在短短10几年的时间内已发展成为一个设计完善、功能强大的操作系统,伴随网络技术进步而发展的Linux OS已成为可与Microsoft公司Windows 95/98竞争的强劲对手。Linux系统不仅能够运行于PC平台,还可在嵌入式系统方面发挥重要作用;在各种嵌入式Linux OS迅速发展的状况下,Linux OS逐渐形成了可与Windows CE等EOS进行抗衡的局面。
正在投入使用开发的嵌入式系统中,50%以上的项目选择Linux作为嵌入式操作系统。Linux现己成为嵌入式操作的理想选择。
(1)Linux具有如下特性:
①Linux操作系统使用完全免费:Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
②Linux内核的高度可裁剪性:通常内核小于512KBytes,文件系统可从几十KBytes到几Mbytes不等,视应用程序大小而定。
11
③具有大量的开源的1inux应用程序和驱动程序,并可以方便地移植到各种平台,包括ARM平台。
④Linux包含一整套的编译、调试等开发工具、内核源代码、各种文件系统、图形接口、各种协议、驱动程序以及丰富的应用程序。在开发上,Linux采用统一的API调用,接口文档齐全,书籍、网上资源也比较多。
⑤开放的原代码、模块化设计结构:Linux采用GPL授权,除了把公开原代码以外,任何人都可自由修改、使用、散布,而Linux内核本身采用模块化设计结构,让人轻松增减功能。例如当我的平台不需要蓝牙功能时,我只要不把这项功能加入,有需要就加入,不需要就删除,由于具备这种高弹性,我们可以调校出最适合我们硬件平台的内核。
(2)Linux的内核组成
初始化程序段(init段) 数据段(data) 未初始化数据段(bss) 代码段(text)
约32KBytes。
50~l00KBytes左右。 100~150KBytes左右。 300KBytes左右
12
3 系统硬件电路的设计与实现
3.1 系统硬件总体设计
基于嵌入式的可视倒车雷达系统由超声波发生模块/超声波接收模块、语音报警模块几大硬件模块组成。系统以ARM处理芯片为核心、存储器等作为嵌入式系统的外围设备,在硬件的实现过程中,我们用到了串口通信。整个终端结构图如图3-1所示。
图3-1 终端结构框图
3.2 终端硬件具体实现
系统根据功能需要,逻辑上划分为四个部分:核心板、超声波发生板、超声波接收电路板、语音信号板。 3.2.1 硬件电路
核心板是一个ARM系统正常运行所需的核心电路及其外围线路,它主要包括主控制器、复位电路、时钟电路、电源电路、SDRAM、Flash等。
1、主控制器
主控处理器的选用要综合考虑很多因素,我们在该倒车雷达系统中选择Atmel公司生产的ARM920T芯片作为主控制器,选用的处理平台是三星公司生产的s3c2410。其主要的特性如下图3-2所示:
13
图3-2 s3c2410主控芯片的内部结构图
·ARM920T核、工作频率203MHz;
·16KB数据Cache,16KB指令Cache,MMU,外部存储器控制器; ·LCD控制器(支持黑白、灰度、Color STN、TFT屏),触摸屏接口; ·NAND FLASH控制器,SD/MMC接口支持,4个DMA通道; ·3通道UART、1个多主I2C总线控制器、1个IIS总线控制器; ·4通道PWM定时器及一个内部定时器; ·117个通用I/0口; 24个外部中断源; ·8通道10位ADC:
·实时时钟及看门狗定时器等。 ·内核:1.8V I/O及存储器:3.3V
14