当前位置: 首页 > article >正文

ARM笔记-嵌入式系统基础

第一章 嵌入式系统基础

1.1嵌入式系统简介

1.1.1嵌入式系统定义

  • 嵌入式系统定义
    • 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统 ------Any device that includes a computer!

1.1.2嵌入式系统的组成

  • 嵌入式系统由硬件软件两大部分组成

    • 硬件:整个系统的物理基础,它提供软件运行平台和通信接口;
    • 软件:实际控制系统的运行
  • 两种嵌入式系统结构模型

    • 应用程序(Application)
      标准接口函数(API)
      操作系统(OS)
      硬件抽象层(HAL)、BSP、驱动
      底层硬件
    • 应用(Application)
      设备驱动程序
      底层硬件
一、硬件部分
  • 组成

    • 核心处理器

      • 硬件层的核心

      • 体系结构:采用冯诺伊曼体系结构哈佛体系结构

        • 冯诺伊曼体系结构:将程序指令存储器和数据存储器合并在一起的存储器结构(eg.ARM7)
          • 单次取指令长度和取数据的长度相同

        • 哈佛体系结构:将程序指令存储和数据存储分开的存储器结构(eg.ARM9的内核)

          • 指令和数据有不同的数据宽度
          • 分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字和操作数,从而提高执行速度,也提高了数据吞吐率

      • 指令系统:RISC和CISC

        • CISC(Complex Instruction Set Computer)

          • 具有大量的指令和寻址方式
          • 大多数程序只使用少量的指令就能运行
        • RISC(Reduced Instruction Set Computer)

          • 8/2原则:80%的程序只使用20%的指令。
          • 只包含最有用的指令。
          • 确保数据通道快速执行每一条指令。
          • 使CPU硬件结构设计变得更为简单。
        • 二者的主要区别

          • 指标RISCCISC
            指令集一个周期执行一条指令,通过简单指令的组合实现复杂操作,指令长度固定。指令长度不固定,执行需要多个周期。
            流水线流水线每周期前进一步指令的执行需要调用一段微程序
            寄存器更多通用寄存器用于特定目的的专用寄存器
            Load/Store结构独立的Load/Store指令完成数据在寄存器 外部存储器 之间的传输处理器能够直接处理存储器中的数据
          • RISC执行特殊功能效率低,但可以利用流水技术和超标量技术加以改进和弥补。

          • CISC处理特殊任务效率较高

    • 外围电路

      • 组成:存储器、I/O端口、复位电路、模数转换器/数模转换器(ADC/DAC)、电源
    • 外部设备

      • 嵌入式系统与真实环境交互的各种设备

二、软件部分
  • 组成:嵌入式操作系统嵌入式应用软件
    • 嵌入式系统软件一般包含四个层面:应用程序应用程序接口API实时操作系统RTOS硬件抽象层(HAL)。有的版本将应用程序接口 API 归属于 OS 层,就是按照三层来划分的。

1.1.3 嵌入式系统的特点

  • 嵌入式系统同通用计算机系统相比有以下特点:

    • 专用性强
    • 强调实时性
    • 具备可裁剪性
    • 可靠性要求高
    • 功耗低
    • 嵌入式系统开发需要开发工具和开发环境
  • 嵌入式微处理器的特点

    • 实时多任务有很强的支持能力。
    • 具有功能很强的存储区保护功能–不同进程之间无法互相访问其存储空间
    • 可扩展的处理器结构。
    • 嵌入式微处理器功耗低。

1.1.4嵌入式系统的分类

  • 处理器位数
    • 4位嵌入式系统
    • 8位嵌入式系统
    • 16位嵌入式系统
    • 32位嵌入式系统
    • 64位嵌入式系统
  • 实时性
    • 非实时系统(PDA)
    • 软实时系统(电子消费类产品)
    • 硬实时系统(数控、航空航天等工业和军工系统)
  • 软件结构:(important)
    • 循环轮询系统
    • 前后台系统
    • 单处理器多任务系统
    • 多处理器多任务系统
  • 应用场景
    • 通信类
    • 信息家电类
    • 移动终端类
    • 汽车电子类
    • 工业控制类

1.2嵌入式处理器

1.2.1嵌入式处理器分类

  • 嵌入式微处理器(MPU–Microprocessor Unit)

    • 嵌入式微处理器是由通用计算机中的CPU演变而来的。 -----用来处理高性能计算(eg.服务器,手机等)
    • 嵌入式微处理器的特征:
      • 具有较高的性能,但价格也较高。
      • 嵌入式微处理器做的控制机具有体积小、重量轻、成本低、可靠性高的优点。
  • 嵌入式微控制器(MCU–Microcontroller Unit)

    • 嵌入式微控制器的典型代表就是单片机。
    • MCU是一种集成化的芯片,将处理器核心、**存储器(如Flash、RAM)外围设备(如GPIO、ADC、UART等)**集成在一个芯片上。-----(eg.家电、工业控制、传感器节点等)
    • 占嵌入式系统70%的市场份额
  • 嵌入式DSP处理器(DSP–Digital Signal Processor)

    • DSP 处理器是专门用于信号处理方面的处理器。
    • 其在系统的结构指令算法方面进行了特殊的设计。
  • SOC片上系统(System on a Chip)

    • 一个芯片就是一个系统,或将一个系统放在一个芯片中。
    • SOC最大特点是实现了软/硬件的无缝结合,直接在处理器芯片内部嵌入操作系统代码模块。

1.3嵌入式系统开发环境

  • 开发工具的选择:硬件开发工具&软件开发工具
    • 硬件开发工具:在线实时仿真器和其他检测工具,如示波器等
    • 软件开发工具:编辑、交叉编译、链接、定位软件和调试软件等
  • 硬件调试工具的选择
    • 实时在线仿真器(ICE)
    • 逻辑分析仪
    • ROM仿真器
  • 软件组件的选择
  • 开发环境
    • 交叉开发工具
    • 指令模拟器
    • 电路开发板

1.4 嵌入式操作系统

1.4.1嵌入式操作系统

  • 嵌入式操作系统EOS(Embedded Operating System)是支持嵌入式系统应用的操作系统,是软、硬件资源的控制中心
  • EOS 是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能如:
    • 任务调度同步机制中断处理文件功能等外,
    • 还有以下特点:
      • 可装卸性;
      • 强实时性;
      • 强稳定性,弱交互性;
      • 固化代码;
      • 更好的硬件适应性,也就是良好的移植性。
  • 嵌入式操作系统可分为:实时操作系统(RTOS)非实时操作系统

1.4.2 实时操作系统

  • 实时操作系统是指——能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。
一、RTOS的重要概念
  1. 系统响应时间
    • 系统收到处理要求到系统给出应答信号的时间。
  2. 任务换道时间
    • 任务之间切换使用的时间
  3. 中断延迟
    • 计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间。
  4. 任务(即线程)的四个状态
    • 运行:获得 CPU 的控制权
    • 就绪:进入任务就绪(等待)队列,等待通过调度转为运行状态
    • 挂起:任务发生阻塞,移出任务就绪队列,等待系统实时事件的发生而唤醒,从而转为就绪或运行
    • 冬眠:任务因为完成或错误等原因被清除的任务,也可以认为是系统中不存在的任务
二、实时操作系统的分类
  • 按实时性要求
    • 软实时系统
    • 硬实时系统
  • 按任务是否可被抢占
    • 可抢占系统–严格按照优先级执行(如:uC/OS-II)
    • 不可抢占系统

1.4.3常见的EOS(了解)

在复习的时候可以看看ppt

  • Linux
  • uCLinux
  • Android
  • Windows CE
  • VxWorks
  • uC/OS-II
  • pSOSystem
  • Nucleus、eCos

相关文章:

ARM笔记-嵌入式系统基础

第一章 嵌入式系统基础 1.1嵌入式系统简介 1.1.1嵌入式系统定义 嵌入式系统定义: 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统 ------Any devic…...

一文讲透golang channel 的特点、原理及使用场景

在 Go 语言中,通道(Channel) 是实现并发编程的核心机制之一,基于 CSP(Communicating Sequential Processes) 模型设计。它不仅用于协程(Goroutine)之间的数据传递,还通过…...

upload-labs通关笔记-第19关文件上传之条件竞争

系列目录 upload-labs通关笔记-第1关 文件上传之前端绕过(3种渗透方法) upload-labs通关笔记-第2关 文件上传之MIME绕过-CSDN博客 upload-labs通关笔记-第3关 文件上传之黑名单绕过-CSDN博客 upload-labs通关笔记-第4关 文件上传之.htacess绕过-CSDN…...

第5章:任务间通信机制(IPC)全解析

💬 在多线程开发中,线程之间如何协作?如何让一个线程产生数据,另一个线程消费数据?本章聚焦 Zephyr 提供的多种任务间通信机制(IPC)及实战使用技巧。 📚 本章导读 你将学到: Zephyr 提供的常用 IPC 接口:FIFO、消息队列、邮箱、信号量 每种机制适用场景和用法对比…...

CAPL自动化-诊断Demo工程

文章目录 前言一、诊断控制面板二、诊断定义三、发送诊断通过类.方法的方式req.SetParameterdiagSetParameter四、SendRequestAndWaitForResponse前言 本文将介绍CANoe的诊断自动化测试,工程可以从CANoe的 Sample Configruration 界面打开,也可以参考下面的路径中打开(以实…...

SVN被锁定解决svn is already locked

今天遇到一个问题,svn 在提交代码的时候出现了svn is already locked,解决方案...

【深度学习】1. 感知器,MLP, 梯度下降,激活函数,反向传播,链式法则

一、感知机 对于分类问题,我们设定一个映射,将x通过函数f(x)映射到y 1. 感知机的基本结构 感知机(Perceptron)是最早期的神经网络模型,由 Rosenblatt 在 1958 年提出,是现代神经网络和深度学习模型的雏形…...

云原生安全:网络协议TCP详解

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 (注:文末附可视化流程图与专有名词说明表) 1. 基础概念 TCP(Transmission Control Protocol)是…...

使用CentOS部署本地DeekSeek

一、查看服务器的操作系统版本 cat /etc/centos-release二、下载并安装ollama 1、ollama下载地址: Releases ollama/ollama GitHubGet up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 3, Mistral Small 3.1 and other large language models. - Re…...

Spring Boot与Eventuate Tram整合:构建可靠的事件驱动型分布式事务

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、引言 在现代微服务架构中,分布式事务管理一直是复杂系统中的核心挑战之一。传统的两阶段提交(2PC)方案存在性能瓶颈&…...

Python:从脚本语言到工业级应用的传奇进化

一、Python的诞生:一场喜剧与编程的奇妙相遇 1989年的冬天,荷兰程序员Guido van Rossum在阿姆斯特丹的CWI研究所里,用一段独特的代码开启了编程语言的新纪元。这个被命名为"Python"的项目,灵感并非源自冷血的蟒蛇,而是源于Guido对英国喜剧团体Monty Python的痴…...

【排序算法】典型排序算法 Java实现

以下是典型的排序算法分类及对应的 Java 实现,包含时间复杂度、稳定性说明和核心代码示例: 一、比较类排序(通过元素比较) 1. 交换排序 ① 冒泡排序 时间复杂度:O(n)(优化后最优O(n)) 稳定性&…...

node.js如何实现双 Token + Cookie 存储 + 无感刷新机制

node.js如何实现双 Token Cookie 存储 无感刷新机制 为什么要实施双token机制? 优点描述安全性Access Token 短期有效,降低泄露风险;Refresh Token 权限受限,仅用于获取新 Token用户体验用户无需频繁重新登录,Toke…...

[DS]使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码

使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码 摘要:由于 sample_data.csv 是一个占位符文件,用于代表任意数据集,我将使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码…...

探索智能仓颉

探索智能仓颉:Cangjie Magic体验有感 一、引言 在人工智能和智能体开发领域,新的技术和框架不断涌现,推动着行业的快速发展。2025年3月,仓颉社区开源了Cangjie Magic,这是一个基于仓颉编程语言原生构建的LLM Agent开…...

Ubuntu 上开启 SSH 服务、禁用密码登录并仅允许密钥认证

1. 安装 OpenSSH 服务 如果尚未安装 SSH 服务,运行以下命令: sudo apt update sudo apt install openssh-server2. 启动 SSH 服务并设置开机自启 sudo systemctl start ssh sudo systemctl enable ssh3. 生成 SSH 密钥对(本地机器&#xf…...

LLMs之Qwen:《Qwen3 Technical Report》翻译与解读

LLMs之Qwen:《Qwen3 Technical Report》翻译与解读 导读:Qwen3是Qwen系列最新的大型语言模型,它通过集成思考和非思考模式、引入思考调度机制、扩展多语言支持以及采用强到弱的知识等创新技术,在性能、效率和多语言能力方面都取得…...

springboot3 configuration

1 多数据库配置 github: https://github.com/baomidou/dynamic-datasource 使用DS()注解来切换数据库 详情介绍:https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611 注意:DS 可以注解在方法上或类上,同时存在就近原则 方法上注…...

从工程实践角度分析H.264与H.265的技术差异

作为音视频从业者,我们时刻关注着视频编解码技术的最新发展。RTMP推流、轻量级RTSP服务、RTMP播放、RTSP播放等模块是大牛直播SDK的核心功能,在这些模块的实现过程中,H.264和H.265两种视频编码格式的应用实践差异是我们技术团队不断深入思考的…...

如何设计一个高性能的短链设计

1.什么是短链 短链接(Short URL) 是通过算法将长 URL 压缩成简短字符串的技术方案。例如将 https://flowus.cn/veal/share/3306b991-e1e3-4c92-9105-95abf086ae4e 缩短为 https://sourl.cn/aY95qu,用户点击短链时会自动重定向到原始长链接。其…...

提升工作效率的可视化笔记应用程序

StickyNotes桌面便签软件介绍 StickyNotes是一款极为简洁的桌面便签应用程序,让您能够快速记录想法、待办事项或其他重要信息。这款工具操作极其直观,只需输入文字内容,选择合适的字体大小和颜色,然后点击添加按钮即可创建个性化…...

11|省下钱买显卡,如何利用开源模型节约成本?

不知道课程上到这里,你账户里免费的5美元的额度还剩下多少了?如果你尝试着完成我给的几个数据集里的思考题,相信这个额度应该是不太够用的。而ChatCompletion的接口,又需要传入大量的上下文信息,实际消耗的Token数量其…...

GDB调试工具详解

GDB调试工具详解 一、基本概念 调试信息 编译时需添加 -g 选项(如 gcc -g -o program program.c),生成包含变量名、函数名、行号等调试信息的可执行文件。断点(Breakpoint) 程序执行到指定位置(函数、行号…...

机器学习圣经PRML作者Bishop20年后新作中文版出版!

机器学习圣经PRML作者Bishop20年后新书《深度学习:基础与概念》出版。作者克里斯托弗M. 毕晓普(Christopher M. Bishop)微软公司技术研究员、微软研究 院 科学智 能 中 心(Microsoft Research AI4Science)负责人。剑桥…...

Armadillo C++ 线性代数库介绍与使用

文章目录 Armadillo C 线性代数库介绍与使用主要特点安装Linux (Ubuntu/Debian)macOS (使用 Homebrew)Windows (使用 vcpkg) 基本使用包含头文件矩阵创建与初始化基本运算矩阵分解统计运算保存和加载数据 性能优化建议示例程序与 MATLAB 语法对比 使用Armadillo函数库的稀疏矩阵…...

吴恩达机器学习笔记:逻辑回归3

3.判定边界 现在说下决策边界(decision boundary)的概念。这个概念能更好地帮助我们理解逻辑回归的假设函数在计算什么。 在逻辑回归中&#xff0c;我们预测&#xff1a; 当ℎθ (x) > 0.5时&#xff0c;预测 y 1。 当ℎθ (x) < 0.5时&#xff0c;预测 y 0 。 根据…...

大模型知识

############################################################## 一、vllm大模型测试参数和原理 tempreature top_p top_k ############################################################## tempreature top_p top_k 作用&#xff1a;总体是控制模型的发散程度、多样…...

C/C++ 结构体:. 与 -> 的区别与用法及其STM32中的使用

目录 引言 一、深入理解 C/C 结构体&#xff1a;. 与 -> 的区别与用法 1. .&#xff08;点运算符&#xff09;详解2. ->&#xff08;箭头运算符&#xff09;详解3. . 与 -> 的等价与转换4. 常见错误与调试技巧5. C 特性与运算符重载6. 实战案例&#xff1a;链表与智能…...

docker中使用openresty

1.为什么要使用openresty 我这边是因为要使用1Panel&#xff0c;第一个最大的原因&#xff0c;就是图方便&#xff0c;比较可以一键安装。但以前一直都是直接安装nginx。所以需要一个过度。 2.如何查看openResty使用了nginx哪个版本 /usr/local/openresty/nginx/sbin/nginx …...

Jetpack Compose 中更新应用语言

在 Jetpack Compose 应用中更新语言需要结合传统的 Android 语言配置方法和 Compose 的重组机制。以下是完整的实现方案&#xff1a; 1. 创建语言管理类 object LocaleManager {private var currentLocale: Locale Locale.getDefault()fun setLocale(context: Context, local…...