资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
嵌入式产品开发流程嵌入式产品开发流程作者 :李永祥摘要:嵌入式产品是基于一定硬件,通过与硬件紧密结合的软件实现一定功能高科技产品。它是以应用 为中心,以计算机技术基础,软、硬件可配置,对功能、可靠性、成本、体积、功耗有严格约束的一 种专用计算机。应用领域非常广泛,包括电信、医疗,汽车电子,工业控制,军事,消费类电子等,在社会发展中发挥着特别重要的作用。尤其现代高科技日益发达的今天,其速度更是突飞猛进。因其特殊性,为了缩短开发周期,加大产品的生存时间和保值区间,应该遵循一定科学流程和方法,这样起到事半功倍的效果,否则影响产品的经济和社会效益,进而影响企业或团体的利益或前景。下面就嵌入式产品开发的一般流程进行论述,包括开发环境建立,硬件设计,调试环境选择,软件设计与调试等进行详细说明。着重突出调试工具选择与软件设计调试方法和过程分析,包括操作系统移植后的调试,因为它在嵌入式产品过程中起着关键的作用,同时也是最为耗时的阶段,也是一个逐步认识产品特点和深入研究的过程。关键词:开发环境 原理图 ADS1.2 串口 网口 断点 触发 跟踪 仿真器 启动代码 驱动程序UC/OS-II 应用程序。 一、建立开发环境 在确定了项目的具体要求和成本预算,以及权衡了资源与成本之后,就可以进行开发 环境的建立,主要步骤如下: 1、购买开发板或评估板,后者免费使用,但资源相对少,本着以此基础进行开发,能够大 大缩短开发周期。 2、准备仿真器,PC 机,HUB 或交叉网线,按照要求连接起来。 3、安装开发的操作系统,仿真调试软件软件,建立宿主机环境等。 4、配置宿主机环境,如超级终端,网络设置、TFTP 服务器、NFS SERVER 设置等; 二、硬件设计: 首先要根据项目需求,在成本控制的范围内,适当选择所需要的硬件,包括 CPU,串口芯片,网 口芯片及其外接口,是否使用外用 FLASH,晶振及调试用的 JTAG 或仿真器等。采用核心板和接口 底板分离的思想。系统设计要考虑系统资源的调配,片选、中断等。其中核心板+底板的硬件构 架大大加快产品开发进度。也就是利用开发板的硬件布局资源与特性,以及配置好的外围器件, 会很快地制作自己的硬件裸机。 1、 首先进行硬件原理图设计,步骤如下: (1)建立 Logic 元器件库,创建 CAE Decal 封装的引脚图。 (2) 建立 Layout 的 PCB 封装。 (3) 建立 Logic 的 Pary Type ,加入 Gate,引入 PCB decals,配置修改引脚序号和名称。 (4) 根据元器件的 datasheet 说明再建立各模块的连线,即原理图,包括电源线与地线的配置, 以及传送和接收信号线连接,连接二极管信号灯、晶振之类。 2、根据以上的 PCB 封装图,再测量各器件的实际尺寸,在板上布局结构,最后完成 PCB 板的 布线,加入抗干扰的磁珠。其中运用几层板,要根据实际器件连接信号线的复杂程度而定。 3、制成布线图之后,可以购买实验元器件,交付板厂进行制板。如果能制作成实验模拟平台, 则会更方便调试。 4、对照硬件原理图,进行硬件测试,符合要求,则开始下载软件,否则进行修改。 三、选择编译调试环境: 1、开发板与主机连接方式: 开发者们连接开发板到主机用来调试的方法有3种:串口线,网络接口,和特殊的调式硬件。使用串口线作为调试手段是最简单的一种方法。因为串口硬件是最简单而且常见的。在嵌入式系统中,在某种形式下,使用串口线有两个问题。第一:串口速率有相当的限制。第二:如果 嵌入式系统只有一个串口或者此串口是该嵌入式系统的唯一附加接口。那么将无法用来调试系 统和用一个终端与之交互,在同一时刻,发生竞争。没有终端交互在某些情况下并不是一个问 题。一个网络接口的作用是:比如tcp/ip,比串口提供了更高的带宽。而且,开发板主机可 以使用很多的网络连接在同样的物理网络连接。因此,当在调试应用的时候,你也可以继续和 开发板交互。或者,用嵌入式系统的串口使用终端竞争的方式与开发板交互的同时,调式网络 连接。网络接口的使用意味着网络栈的存在。串口和网口调试都需要考虑到一些小软件必须考虑到开发板上可获得的简单IO硬件资源。最近,首选的方式直接操作硬件来调式是使用BDM,或者JTAG接口。这些接口依赖于在cpu中 嵌入特殊的BDM或者JTAG功能。通过连接特殊的调式器到CPU种的JTAG或者BDM引脚。你可以完全 控制它的行为。就因为这个原因,JTAG和BDM常用来构建新的开发板。 2、调试手段:在嵌入式开发调试中,开发人员的调试手段包括断点、触发和跟踪三种。 开发人员使用断点功能控制所调试的应用程序的起和停。使应用程序运行到自己想要调试 的程序上。通过观察在断点处的应用程序的变量以及寄存器和存储器的值检测所调试的应用程 序运行是否正确。断点是开发人员经常使用的调试手段。 断点,顾名思义就是(应用程序)停下来的地方。断点按照其实现方法分为软件断点和硬件断 点。软件断点是靠程序指令陷阱来实现的。硬件断点是靠嵌入式处理器或调试工具硬件来实现 的。软件断点的实现方法对于不同的嵌入式处理器和不同的调试工具而言,实现方法都是一样的,都 是通过修改程序指令的方法实现的。硬件断点的实现方法对于不同的嵌入式处理器和不同的调 试工具而言,实现方法是不一样的。有的嵌入式处理器具有片上调试逻辑,调试工具通过 JTAG、BDM、OCDS、NEXUS等接口访问控制片上调试逻辑,通过片上调试逻辑实现硬件断点。这种 硬件断点的数量是有限制的。由于不同的嵌入式处理器上的调试逻辑实现方法不同,因而它们提 供的硬件断点的数量是不一样的。在线调试器(ICD)就是通过访问控制片上调试逻辑实现硬件断 点的。没有片上调试逻辑的嵌入式处理器不能使用在线调试器。在线仿真器(ICE)通过基于存储 器的断点技术实现硬件断点。在线仿真器实现的硬件断点的数量是没有限制的。对于没有片上 调试逻辑的嵌入式处理器,可以考虑用在线仿真器(ICE)进行调试。 单步是断点的一种特殊形式,它相当于在下一条指令或程序行上设置一个断点,程序启动运 行到断点停下来。 触发用于捕捉所调试的应用程序在运行中出现的某一特定目标状态。这一特定的目标状态 就是通常所说的触发条件。触发条件通常是处理器的特定的地址、数据、控制总线以及内部/外 部信号状态的逻辑组合。当一个触发条件不足以描述要捕捉的目标状态时,开发人员通常会使用 触发序列器(Sequencer)将多个触发条件级联起来。调试工具在触发发生之后,要么停止所调试 的应用程序的运行,要么增加触发记数器,要么输出一个触发信号,以便通知开发人员,所要捕捉 的触发条件已发生。为了便于开发人员观察触发发生之后应用程序的执行情况,调试工具通常会 提供触发滞后的功能。触发滞后就是调试工具在发生触发之后仍然使应用程序结续运行一段特 定的时间之后才将应用程序停下来。 不同的调试工具对触发功能的实现程度是不一样的。在线仿真器(ICE)绝大多数都可以实现 完型的触发功能。在线调试器(ICD)对触发功能的实现程度取决于所调试的嵌入式处理器上的片 上调试逻辑。在线调试器(ICD)与逻辑分析仪组合,可以实现较完整的触发功能。 开发人员通常将触发功能与下面要讲到的跟踪功能一起使用,来捕捉导致应用程序中问题产 生自原因。 跟踪就是记录所调试的应用程序的执行过程,以便开发人员分析导致应用程序出现问题的 原因。跟踪的记录方式有先进先出方式和压栈方式。先进先出方式总是记录应用程序停下来之 前的最新运行过程。在先进先出方式下,如果跟踪记录缓冲填满的话,最先跟踪的记录就要丢弃, 以便填充新的记录。压找方式记录跟踪开始到跟踪记录缓冲被填满这段时间内应用程序的运行 过程。在压栈方式下,如果跟踪记录缓冲填满的话,新的应用程序执行过程将不被记录。跟踪还可以有选择地记录程序的执行过程,例如,只记录函数入口和出口的执行过程。当然,要进行有选 择跟踪,开发人员必须对跟踪功能进行设置。 不同的调试工具对跟踪功能的实现方式是不一样的。在线仿真器(ICE)由于其结构的特殊性,它 可以捕获到嵌入式处理器的总线周期,它的跟踪记录的最小单位就是总线周期。在线仿真器(ICE)调 试软件译码这些总线周期,倒推出程序的执行过程。在线调试器(ICD)因为不能捕获嵌入式处理 器的总线周期,因而决大多数没有跟踪功能。有些嵌入式处理器的片上调试逻辑能够将程序的执 行过程信息压缩之后通过特定的接口送到芯片外部,供外部的调试工具使用。这样,在线调试器 (ICD)可以通过增加跟踪模块捕获这些信息的方法实现跟踪功能。在线调试器(ICD)调试软件从 跟踪模块记录的嵌入式处理器送出来的指令流信息,还原出应用程序的执行过程。基于ARM内核 的嵌入式处理器芯片上的ETM接口就是一个这样的接口。通过这种方法实现的跟踪功能的完善程 度完全取决于片上调试逻辑。 3、调试软件: 选用的调试器是运行在主机上的集成开发环境,一般需要集编辑、汇编、编译、链接和调 试环境于一体,支持低级汇编语言、C和C+语言,基于友好的图形用户界面(GUI),支持用户 观察或修改嵌入式处理器的寄存器和存储器配置、数据变量的类型和数值,堆栈和寄存器的使 用,支持程序断点设置,单步、断点或者全速运行等特性。下面以飞利浦的芯片进行列举说明。在以前的LPC2100系列的微处理器,利用ADS1.2再加之NXP公司提供的LPC2000 Flash Utility 烧写工具,就可以进行编辑,汇编,编译,链接和调试与烧写或生产了,但是目前网 上多出基于LPC2300系列的开放的源代码就是基于Keil 仿真器的,如果你下载了这些代码而用 ADS1.2来编译,链接和调试,然后再后再用目前NXP公司提供的基于LPC2300或更高版本的烧写 的工具-Ethenet Flash Utility 来烧写的话,会产生很多不兼容的汇编代码,虽然LPC2366是ARM内 核ARM7TDMI-S,但是有很多汇编代码是ADS1.2识别不了的, 如下图是编译LPC2300的启动代码 的结果:需要代替,下面是我在实验开发过程中总结出来的替换的汇编指令:LPC2366 识别的汇编指令 需要更换为 ADS1.2 识别的汇编指令DEFINE EQUPUBLIC EXPORTDC32 DCDARM COD32IMPORT externNOROOT READONLYRESG CODE:CODE: AREA CODE,CODE,等等,另外,A.DS1.2 不识别后缀名为 asm 的汇编程序文件,当然还有很多差别。如果选择 RealView 仿真器和 Keil Mdk3.4 仿真软件,则会大大加快开发速度,给企业 带来很大的方便和利益,它不但可以进行编辑,汇编,编译,链接,调试和烧写,而且提供 了大量的现成的例程,可以直接开发用,启动程序只选择几步即可自动产生启动代码,如时 钟源与其频率,一般外设如串口,几分钟就可以了,省去漫长的编写启动代码和例程的编写。 同时该软件可以设置断点,单步调试,跳入与跳出函数体或程序体,甚至语句。在调试过程 中可以对照看高级语言与汇编结果,以及寄存器和变量的值,以下是实验结果:四、软件设计与调试过程: 软件系统构成:启动代码+驱动程序+操作系统+应用程序。 1、启动代码: (1)向量表初始化:r
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号