一.嵌入式系统的开发过程和工具
1.开发步骤
(1)需求分析与规格说明:通常包括功能部分和非功能部分,非功能部分需求主要是指性能、成本、尺寸、重量和功耗等
(2)系统设计:也叫做概要设计或总体设计,根据规格说明书中系统要实现的功能,确定如何实现这些功能的硬件和软件,即哪些功能由硬件完成,哪些功能由软件完成,还必须描述非功能上的需求如何实现,即不仅要描述系统需求如何实现,且必须要符合系统需求中关于处理速度、功耗、成本等关于其他性能的约束。
(3)构件设计:需要设计或选择符合系统结构和规格说明中所需要的具体构件,既包括硬件也包括软件模块。
(4)系统集成与测试:在系统集成时,应该分步的,按阶段的构建系统,并且每次只对一部分构建或模块所形成的体系测试,每块测试完成后再进行总体测试。
1)测试(Test):验证模块/系统的功能和性能,同时发现错误
2)调试(Debug):分析测试,发现错误,检查原因,并定位错误,采取适当的措施修改软硬件,然后返回重新进行测试
2.开发特点
(1)使用宿主机-目标机架构
1)宿主机是开发用机,目前大多数运行Windows操作系统,应用软件的开发和调试都是通过宿主机完成
(2)与底层硬件控制程序关系密切
(3)软硬件资源受限制,故需综合考虑系统软硬件逻辑功能如何实现
(4)需固化程序,即把软件代码烧写(用编程器)到非易失性存储器中
3.交叉开发平台和工具
(1)嵌入式系统的开发平台包含大量开发工具,软件开发工具通常包括:项目管理器、编辑器、编译器、链接器、定位器等,这些软件开发工具通常使用统一的用户界面并作为一个整体提供给开发人员使用,以提高开发工作效率
(2)嵌入式应用程序经过交叉工具链生成映像文件之后下载到目标机进行调试
4.系统的调试工具
调试工具的任务是控制程序代码的执行并使系统中看不见的信息称为可见
(1)在线仿真器
1)在线仿真器是一种嵌入式系统的调试工具,其与所要开发的嵌入式系统应具有相同的嵌入式处理器体系结构
2)使用在线仿真器的调试方式时,在线仿真器取代了被调试目标系统中的CPU
(2)JTAG适配器
1)片上调试技术JTAG,人们常用JTAG来表示边界扫描测试方法和TAP接口(称为JTAG接口),是对芯片或印制电路板进行片上调试最常用的一种技术,是用于片上调试技术的统称
2)JTAG是IEEE下的一个组织,是研究测试访问端口和边界扫描结构的标准,研究结果就是俗称的JTAG标准,JTAG标准中规定TAP接口使用以下5根信号线:TCK、TMS、TDI、TDO、TRST
3)使用JTAG进行调试,无需目标存储器,也不占用目标机任何I/O端口
4)对于不支持JTAG调试标准的嵌入式CPU,如MCS-51单片机,其软件固化要使用编程器设备。
5)可用于实现嵌入式系统的在线编程功能,其标准允许多个芯片通过JTAG接口串联在一起,实现对多个器件的测试
6)目前大多数嵌入式CPU、DSP、FPGA器件都支持JTAG标准,SWD是Cortex-M内核提供的功能与JTAG类似的调试接口
(3)驻留监控软件:一段固化在目标机ROM中的程序,成本较低,不需要专门的硬件调试和仿真设备
(4)指令模拟器(ISS):在宿主机上模拟应用程序在目标机上运行行为的一个软件工具,其操作界面与通用机的集成开发环境类似
5.仿真平台
(1)虚拟机管理软件
(2)仿真软件
(3)指令集模拟器
二.系统开发工具软件
1.ADS
(1)利用ADS1.2工具套件基于ARM平台的的软件开发,在编译链接时,地址映射链接类型有两种方式:Simple和Scattered连接类型,采用Scattered连接类型是需要提供一个scatter格式的配置文件,当地址映射关系比较复杂时,使用scatter格式的文件来确定输入文件的链接顺序
(2)连接类型的配置实际上就是确定工程项目的地址映射关系,通俗讲,就是要对工程项目中的各段代码或数据进行存储空间的地址分配,以确定他们在目标机上实际存储空间中的地址值,以便输出文件能在目标机上正确运行
(2)以工程项目的方式来管理源代码文件、库文件以及其他文件,为了方便管理,这些文件还可以按照某种逻辑关系进行分组,不是必须分组
(3)一个工程项目中至少应包含一个生成目标,所谓的生成目标指用于生成特定输出文件的生成选项以及所用的所有文件集合,ARM提供的可执行输出文件的模板包括了下面3个目标:Debug、release、DebugRel;若生成的输出文件需要包含所有调试信息,则生成目标应为Debug
(4)ADS1.2工具把编译后的信息,按照RO段或RW段或ZI段来存储
2.RVDS
(1)是ARM公司推出的基于ARM系列CPU进行开发的工具套件,支持所有ARM芯片,还支持其他内核的处理器,如51系列
(2)RVDS的开发工具套件中,主要包括工程管理器、编译连接器、调试器和指令集仿真器等(调试器支持硬件在线调试和软件仿真调试)
(3)支持汇编、C、C++对源程序进行编译
(4)与ADS1.2比较来说,其生成的代码紧凑,执行效率高
(5)要利用RVDS调试实际目标板上运行的程序,需要借助仿真器
3.GUN工具套件
(1)包括编译器、连接器、调试器、文本编辑器、语法排错等工具
(2)编译连接器GCC:
1)能编译汇编语言、C语言代码,设计者需要对源程序进行调试时,在GCC中加入-g参数,仅编译而不连接加入-c参数
2)GCC所编译的目标机的处理器包括x86、ARM、PowerPC等体系结构的处理器
3)针对于ARM体系结构的目标机而言,该C语言编译器的命令书写格式中,其带前缀的命令是ARM-Linux-GCC
4)由于Linux操作系统可执行文件没有统一的文件后缀,操作系统是从文件的属性来区分可执行文件和不可执行文件的,因此GCC生成可执行文件时若用户未指定文件名,则GCC生成一个名为a.out的可执行文件
5)GCC将源文件生成可执行文件的过程是四个阶段:预处理、编译、汇编、链接
6)是在宿主机上安装并使用的工具软件
(3)调试器GDB:file用来装入需要调试的可执行文件,run命令执行当前被调试的程序,用来终止当前被调试程序运行的命令是kill,watch命令观察被调试程序中的变量值
三.以S3C2410/S3C2440为背景的应用系统开发
1.硬件接口及部件的综合使用
(1)AX88796是一款以太网控制器芯片,数据总线宽度为16位,其片选信号CS引脚连到S3C2410芯片的外部存储空间上,因此读/写AX88796芯片内部寄存器的地址范围是0x10000000-0x100003FF,即首地址时0x10000000
(2)设计嵌入式系统实现实时日历功能,可通过ARM芯片内部的RTC部件来实现
2.无操作系统环境下的系统开发
(1)利用RVDS开发工具,完成应用程序的编辑、编译、连接、下载、调试等工作;主程序不需要操作系统为基础、而是直接采用循环结构。
3.有操作系统环境下的系统开发
(1)软件平台的构建步骤
1)首先移植启动引导
2)然后移植Linux操作系统内核:移植工作的重点是改写OS-CPU.H、OS-CPU-A.S、OS-CPU-C.C
3)再构建根文件系统
(2)构建支持WEB功能的软件平台
1)嵌入式WEN服务器的应用需求与通用WEB服务器的应用需求不同,他不是以提供信息为主,而是提供一个基于远程客户端的操控方式,用户在远程客户机上通过浏览器与嵌入式Web服务器交互,从而操控被嵌入的设备
2)嵌入式WEB服务器通常是与目标系统的控制器融为一体
3)嵌入式服Web服务器环境构建
4)应用网页设计:通常采用HTMI语言来进行编程
5)CGI接口程序设计
6)客户机一般用浏览器访问因特网,即访问Web服务器
(3)基于μC/OS-II操作系统平台来开发
1)一个应用程序的工程项目中,必须包含启动引导程序、μC/OS-II的库文件、应用程序文件等
2)应用程序的main()函数中,除了用户函数和硬件初始化函数外,需要用函数OSTaskCreate()来创建任务,创建任务前用函数OSInit()来初始化μC/OS-II,用OSStart()函数启动多任务调度
4.香农定理:采样周期不得低于信号的1/2