首页 > 其他分享 >嵌入式系统的开发概述

嵌入式系统的开发概述

时间:2022-12-01 10:06:48浏览次数:38  
标签:宿主机 环境 嵌入式 嵌入式软件 开发 概述 调试

嵌入式系统开发基本流程

面向具体应用的嵌入式开发决定了嵌入式开发的方法、流程各有不同,这里仅给出一般的嵌入式开发的具体过程:

  • 系统定义与需求分析阶段
  • 方案设计阶段
  • 详细设计阶段
  • 软硬件集成测试阶段
  • 系统功能性能测试及可靠性测试阶段

嵌入式软件开发

1.嵌入式软件开发的特点和技术挑战

2.嵌入式软件开发环境

3.嵌入式应用软件开发的基本流程

4.嵌入式软件开发的可移植性和可重用性

嵌入式软件开发的特点和技术挑战
  • 开发的复杂度
  • 嵌入式软件开发需要软硬件开发环境和工具
  • 嵌入式软硬件必须协同设计
  • 需要新的任务设计方法
  • 需要转变观念,熟悉新的开发模式
  • 开发过程完成后,系统应用程序代码需要固化到系统中进行功能、性能和可靠性测试
  • 技术挑战:技术门槛提高,需要学习全新的RTOS技术;软件的要求更高,开发工作量和难度更大

嵌入式软件开发环境

嵌入式开发环境组成

  • 交叉开发环境
  • 软件模拟环境
  • 目标板与评估板
交叉开发环境

嵌入式系统应用软件的开发属于跨平台开发,因此需要一个交叉开发环境。

交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中运行调试的开发方式,它通常采用宿主机/目标机模式。用来开发的通用计算机可以选用比较常见的PC机 等,运行通用的Windows等操作系统。

开发计算机一般称宿主机,嵌入式设备称为目标机,在宿主机上编译好的程序,下载到目标机上运行,交叉开发环境提供调试工具对目标机上运行的程序进行调试。

交叉开发环境一般由运行于宿主机上的交叉开发软件、宿主机到目标机的调试通道组成。

运行于宿主机上的交叉开发软件最少必须包含编译调试模块其编译器为交叉编译器。作为宿主机的一般为基于x86体系的桌上型计算机,而编译出的代码必须在目标机处理器体系结构上运行,这就是所谓的交叉编译了。在宿主机上编译好目标代码后,通过宿主机到目标机的调试通道将代码下载到目标机,然后由运行于宿主机的调试软件控制代码在目标机上运行调试。

远程调试结构图如下:

嵌入式系统的开发概述_嵌入式

基于交叉开发环境的嵌入式应用软件开发主要分如下几个步骤:

  • 开发环境的建立;
  • 源代码编辑阶段;
  • 交叉编译和链接;
  • 联机调试;
  • 固化与测试。

嵌入式应用软件开发的基本流程

嵌入式系统的开发概述_开发环境_02

软件模拟环境

软件模拟环境也称为指令集模拟器IIS(Instruction Set Simulator),在很多时候为保证项目进度,硬件和软件开发往往同时进行,这时作为目标机的硬件环境还没有建立起来,软件的开发就需要一个模拟环境来进行调试。

模拟开发环境建立在交叉开发环境基础之上,是对交叉开发环境的补充。这时,除了宿主机和目标机之外,还需要提供一个在宿主机上模拟目标机的环境,使得开发好的程序直接在这个环境里运行调试。

目标板与评估板
  • 应用目标板是系统最终的电路板。
  • 评估板一般用来作为开发者使用的学习板、实验板,可以作为应用目标板出来之前的软件测试、硬件调试的电路板。
  • 开发评估电路板并不是嵌入式应用开发必须的,对于有经验的工程师完全可以自行独立设计自己的应用电路板和根据开发需要设计实验板。
  • 好的评估电路板一般文档齐全,对处理器的常用功能模块和主流应用都有硬件实现,并提供电路原理图和相关开发例程与源代码供用户设计自己的应用目标板和应用程序作参考。
嵌入式软件开发的可移植性和可重用性
  • 在嵌入式软件的开发过程中,在确保软件的正确性、实时性的前提下,必须关注软件的可移植性和可重用性。
  • 可移植性和可重用性的程度应该根据实际的应用情况来考虑。因为嵌入式应用软件有自身的许多特点。追求过高的可移植性和可重用性可能会恶化应用软件的实时性能和增加软件的代码量,这对于资源有限的嵌入式应用环境是得不偿失的。
  • 我们可以在资源有限、满足系统的需求的情况下尽可能把可移植性和可重用性作为第二目标,致力于开发正确性、实时性能、代码量、可移植性和可重用性相对均衡的嵌入式应用软件。

提高应用软件的可移植性和可重用性的方法:

  • 多用高级语言少用汇编语言
  • 将不可移植部分局域化
  • 提高代码的可重用性

标签:宿主机,环境,嵌入式,嵌入式软件,开发,概述,调试
From: https://blog.51cto.com/u_15736437/5901163

相关文章

  • 开发环境-安装总览
    -----------------------------------------------------------------------------------------------------1、jdkC:\ProgramFiles\Java\jdk1.8.0_333配置环境变量JAVA_H......
  • 微信小程序开发笔记 - 路由导航
    路由导航目录路由导航1.声明式路由导航1.1声明式后退导航1.2声明式导航传参2.编程式路由导航2.1编程式后退导航2.3编程式导航传参1.声明式路由导航navigator标签......
  • 云原生技术采用增加,全球60%后端开发人员都在使用容器 | 趋势分享
    导读:过去几年里,随着数字经济的发展,数字化转型成为企业发展的核心战略。企业上云已是大势所趋,以容器为基础的云原生理念与技术应运而生,并被用户广泛接受。基于容器、微服务、......
  • 前端开发
    目录前端与后端的概念前端前戏HTTP协议HTML简介HTML概览预备知识head内常见标签body内基本标签body内常见符号body内布局标签body内常用标签列表标签表格标签表单标签前端......
  • 【NLP开发】Python实现聊天机器人
    文章目录​​1、简介​​​​2、ELIZA​​​​2.1ElizaTest(java)​​​​2.2wadetb/eliza(python)​​​​2.3eliza-py(python)​​​​2.4nltk.chat.eliza(python)​​​​2.......
  • 小开发视角:一个小项目是如何进行跨平台方案选型的
    作为一个小开发,近期完整的经历了,一个初创项目从搭建到推向市场的过程。实际上在整个过程中,开发只占很小的一个板块,尤其是对于我司这种初创型企业,人少钱少,每一分都得花到刀刃......
  • 前端开发 1
    今日内容详细前端与后端的概念前端 任何与用户直接打交道的操作界面都可以称之为前端>>>:接待员后端 不直接与用户打交道主要负责内部真正的业务逻辑的执行>>>:幕后......
  • Android开发 Jetpack_Compose_6 附带效应
    前言附带效应是指LaunchedEffect、DisposableEffect、rememberCoroutineScope、rememberUpdatedState、produceState、derivedStateOf的使用。附带效应这4个字在goog......
  • Web前端开发:前端简介与HTML协议
    目录前端一、前端与后端的概念1.前端的概念2.后端的概念3.了解前端的目的二、Web前端开发三大技术组成部分1.HTML超文本标记语言2.CSS是层叠样式表3.JavaScript网页脚本语......
  • ServletContext-概述、获取
    ServletContext-概述1.概念:代表整个web应用,可以和程序的容器(服务器)来通信2.获取:1.通过request对象获取request.getServletContext()......