【感性认识】嵌入式开发有何不同

2023-11-10 03:41

本文主要是介绍【感性认识】嵌入式开发有何不同,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式开发的特质


1 软硬件结合设计

嵌入式开发不同于纯粹的软件开发或者硬件开发,它的基本特质是软硬件结合设计Co-Design),即

  • 根据需求设计硬件
  • 根据硬件特性开发软件

根据需求设计硬件,就是说在不同的项目中使用的硬件资源可能是内容迥异的。

如果有采集物理信号的需求,就涉及到声、光、力、电等传感器的选择(如无损检测时使用的超声波传感器、测距时使用的激光传感器、形变测量时用到的应变片、磁场检测时用到的霍尔传感器)。在任务涉及大量运算时,采用DSP或者FPGA等专用硬件。某些复杂的任务,甚至需要设计专用的SoC

根据硬件性开发软件,就是说嵌入式软件设计应道充分考虑硬件特点,发挥硬件优势(take advantage of hardware),规避硬件缺陷。

比如根据对算力需求把单个总体任务划分为多个子任务,通用的控制放到CPUU或者MCU上做,而音频信号处理这种运算相关的任务则放到DSP或者FPGA上做。


2 跨平台开发

跨平台开发是嵌入式开发的另一特性,对用着我们通常见到的Cross-Platform Development XXX。比如跨平台编译工具链Cross-Platform Compile Toolchain,咱一般叫交叉编译工具链。

比如 GNU Arm Embedded Toolchain

所谓跨平台开发,是相对原生性开发(Native Development)而言的。它们是两种开发类型(Development Type)。

  • 原生性开发:开发平台即运行平台,如在Windows上写Win32程序,编译完成后就立即可运行
  • 跨平台开发:开发平台与运行平台不一致,这对嵌入式开发而言是最为普遍的情况

2.1 开发环境

跨平台开发环境必然包含两个子系统,主机系统(Host System)和目标机器系统(Target System)。粗略地画了一下它们的关系,如下图所示。


在这里插入图片描述

2.1.1 主机系统

主机系统对应我们开发软件时使用的个人计算机,其上包含开发工具、操作系统和主机硬件系统。

对于主机硬件,我们通常只关系它是哪种CPU,指令集是32位的还是64位的,其他的并不影响我们开发目标机器系统的软件,也就不关心啦。

关于这个问题,除了查看自己主机的配置信息,还可以翻翻英特尔和锐龙的产品页

  • 英特尔® 产品
  • ADM 产品

个人桌面主机的操作系统通常也就WindowsMacUnix/Linux三种,不同的操作系统有不同的开发工具。微软和苹果的主页上能找到前两者的产品页和文档,Linux可以参考下面这个链接

  • Linux.org

开发工具影响我们的开发效率。除了特定场景下必须使用文本编辑器加编译工具链的方式进行开发,选择集成开发环境(IDE)能极大方便我们的开发和调试。

2.1.2 目标机器系统

可能出乎你的意料,关于目标机器系统,我们关注的东西比主机系统更少,甚至可以说,我们只关心它的处理器是什么架构的,采用何种指令集,这决定了我们选择何种编译工具,以及在编写汇编代码时采用什么样的汇编指令。

2.1.3 连接

主机系统和目标机器系统通过一些方式连接起来,毕竟我们至少要把在主机系统上开发的软件下载/烧录到目标机器里面。这些连接方式包括串口(Serial Port)、局域网(Ethernet)以及JTAG。当然了,如果不需要调试功能的话,借助SD卡或者单独烧写FLASH也能实现下载。

值得一提的是,尽管三种连接方式都可以进行调试,但JTAG是最方便的,这不是说它的使用更加简单,而是说使用JTAG进行调试不需要在软件上进行改动。比如使用串口调试,则可能需要将调试信息通过串口打印输出到上位机,这相比直接在IDE上观测各个寄存器和变量的值而言复杂太多。

2.2 开发准备

这样看来,进行嵌入式开发,最好准备以下工具

2.2.1 主机上开发调试工具
  • 交叉编译器(Cross Compiler)
  • 链接器(Linker)
  • 代码调试工具(Source-Level Debugger)
2.2.2 连接工具
  • 下载器(Link Loader):用于通过串口网口用来把程序加载到目标机器上
  • 调试工具(Debug Tool):用于在目标机器上进行在线调试

这篇关于【感性认识】嵌入式开发有何不同的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/380214

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife