文章目录

  • 嵌入式软件基础知识
  • 嵌入式操作系统基础知识
    • 任务调度
    • 信号量
    • 页面置换算法
  • 嵌入式系统程序设计

嵌入式软件基础知识

嵌入式软件分类

  • 系统软件:

    控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等;

  • 应用软件:

    嵌入式系统中的上层软件,它定义了嵌入式设备的主要功能和用途,并负责与用户进行交互;

    应用软件是嵌入式系统功能的体现,一般面向于特定的应用领域,如飞行控制软件、手机软件、MP3播放软件、电子地图软件等;

  • 支撑软件:

    辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器、源程序模拟器和配置管理工具等;

BootLoader(引导加载程序)功能: 片级初始化;板级初始化;加载内核;

BSP(设备驱动层,板级支持包)功能: 引导加载程序BootLoader和设备驱动程序;

嵌入式操作系统基础知识

任务调度

#mermaid-svg-MtIaIbB2Qd8qNoBe {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .error-icon{fill:#552222;}#mermaid-svg-MtIaIbB2Qd8qNoBe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MtIaIbB2Qd8qNoBe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .marker.cross{stroke:#333333;}#mermaid-svg-MtIaIbB2Qd8qNoBe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MtIaIbB2Qd8qNoBe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .cluster-label text{fill:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .cluster-label span{color:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .label text,#mermaid-svg-MtIaIbB2Qd8qNoBe span{fill:#333;color:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .node rect,#mermaid-svg-MtIaIbB2Qd8qNoBe .node circle,#mermaid-svg-MtIaIbB2Qd8qNoBe .node ellipse,#mermaid-svg-MtIaIbB2Qd8qNoBe .node polygon,#mermaid-svg-MtIaIbB2Qd8qNoBe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MtIaIbB2Qd8qNoBe .node .label{text-align:center;}#mermaid-svg-MtIaIbB2Qd8qNoBe .node.clickable{cursor:pointer;}#mermaid-svg-MtIaIbB2Qd8qNoBe .arrowheadPath{fill:#333333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MtIaIbB2Qd8qNoBe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-MtIaIbB2Qd8qNoBe .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-MtIaIbB2Qd8qNoBe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MtIaIbB2Qd8qNoBe .cluster text{fill:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe .cluster span{color:#333;}#mermaid-svg-MtIaIbB2Qd8qNoBe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MtIaIbB2Qd8qNoBe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

任务由于某个事件被阻塞
等待事件完成
调度器选中了该任务执行
调度器选择了另一个任务执行
运行
等待/阻塞
就绪

信号量

信号量用来记录当前可用资源的数量,有两种不同方式:

  • 要求信号量的取值必须大于或等于0:

    如果信号量的值等于0,表示当前已没有可用的空闲资源;

    如果信号量的值大于0,则该值就代表了当前可用的空闲资源数量;

  • 信号量的取值可正可负:

    如果是正数或0,其含义与方式一是相同的;

    如果是负数,则它的绝对值就代表正在等待进入临界区的任务个数;

**P操作:**申请一个空闲的资源,把信号量的值减1;如果成功的话,就退出原语;如果失败的话,这个任务就会被阻塞起来;

**V操作:**释放一个被占用的资源,把信号量的值加1,如果发现有被阻塞的任务,就从中选择一个把它唤醒;

页面置换算法

  • 最优页面置换算法(optimal page replacement algorithm,OPT)

    对于内存中的每一个逻辑页面,计算在它的下一次访问之前,还要等待多长的时间,然后从中选择等待时间最长的那个,来作为被置换的页面;

    这个算法只是一种理想化的算法,在实际的系统中是无法实现的;

  • 最近最久未使用算法(Least Recently Used,LRU)

    从内存中选择最近最久没有被使用的那个页面,把它淘汰出局;

  • 最不常用算法(Least Frequently Used,LFU)

    选择访问次数最少的那个页面,把它淘汰出局;

  • 先进先出算法(First In First Out,FIFO)

    选择在内存中驻留时间最长的页面,把它淘汰出局;

  • 时钟页面置换算法(Clock)

嵌入式系统程序设计

常用算法设计技术

常用的算法设计技术主要有迭代法、穷举搜索法、递推法、递归法、回溯法、贪心法、分治法、动态规划法等;

中断处理过程

关中断 > 保存断点 > 识别中断源 > 保存现场和屏蔽字 > 设置新的屏蔽字 > 开中断 > 执行中断服务程序 > 关中断 > 恢复现场和屏蔽字 > 开中断 > 中断返回

软考-嵌入式系统设计师-笔记:嵌入式系统软件基础知识相关推荐

  1. 软考-嵌入式系统设计师-笔记:计算机系统基础知识

    文章目录 数制及其转换 数据的表示 原码.反码.补码.移码 浮点数 奇偶校验 CRC校验 海明校验 计算机组成及主要部件的基本工作原理 计算机硬件组成 CPU组成 存储器 计算机体系结构 冯诺依曼结构 ...

  2. 软考 程序员教程-第二章 操作系统基础知识

    软考 程序员教程-第二章 操作系统基础知识 第二章 操作系统基础知识 2.1.操作系统概述(第四版教程P44) 操作系统的4个特征:并发性.共享性.虚拟性.不确定性. 操作系统的5个功能:处理机管理. ...

  3. 视频教程-2021软考系统集成项目管理工程师视频教程精讲 基础知识(下)-软考

    2021软考系统集成项目管理工程师视频教程精讲 基础知识(下) 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计 ...

  4. 视频教程-2021软考系统集成项目管理工程师视频教程精讲 基础知识(上)-软考

    2021软考系统集成项目管理工程师视频教程精讲 基础知识(上) 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计 ...

  5. 软考 程序员教程-第一章 计算机系统基础知识

    软考 程序员教程-第一章 计算机系统基础知识 为了督促自己学习,告别懒惰,在此先给自己定个小目标,请大家监督哟! 目标:一个月内过一遍<程序员教程>,下一个月开始上真题. 简单看了下,我在 ...

  6. 软考(软件设计师知识点) --多媒体基础

    多媒体基础 1.音频相关概念: 声音的带宽:声音音波的频率范围 人耳:20HZ-20KHZ 超过20KHZ超声波,小于20HZ是次声波 说话的频率范围是300-3400HZ 乐器的频率范围是:20HZ ...

  7. 软件设计师笔记之网络基础知识

    根据以前的考试大纲总结,本章的知识点大概如下 (1)网络体系结构. (2)传输介质,传输技术,传输方法,传输控制. (3)常用网络设备和各类通信设备的特点. (4)LAN(拓扑,存取控制,组网,网间互 ...

  8. 软考-嵌入式系统设计师-笔记:嵌入式系统的安全性知识

    文章目录 安全性基本概念 设备安全 行为安全 加密技术 对称加密 非对称加密 结合使用(数字信封) 数字签名 信息安全 安全威胁分类 计算机病毒 安全性基本概念 设备安全 信息系统设备的安全是信息系统 ...

  9. 软考-嵌入式系统设计师-笔记:信息化和知识产权基础知识

    文章目录 信息化基础知识 概述 发展趋势 信息化应用 知识产权基础知识 知识产权分类 知识产权与保护期限 知识产权归属 侵权判定 信息化基础知识 概述 信息九个特征 可识别性.可存储性.可度量性.可共 ...

  10. 软考-嵌入式系统设计师:[嵌入式系统基础:笔记(一)]

    大家不要只收藏不关注呀,哪怕只是点个赞也可以呀!

最新文章

  1. 27岁华裔小伙一战成名!搞出美国新冠最准预测模型
  2. SpringBoot mybatis Interceptor分页实现
  3. How to use tcpdump with examples
  4. jquery.easing.js(转)
  5. 38 ubuntu/windows双系统安装
  6. linux错误日志重定向,Linux shell 重定向标准错误输出
  7. java xml 读取库_Java开发中读取XML与properties配置文件的方法
  8. 千万级别数据查询优化_从千万级数据查询来聊一聊索引结构和数据库原理
  9. MongoDB Insert(插入)
  10. java 分布式事务处理
  11. 笔记 Activator.CreateInstance(Type)
  12. LINQ TO SQL 动态查询
  13. sqlserver 触发器语法
  14. html5查看ies文件,5千+ IES光域网文件 5312 IES Files + IES 预览
  15. linux shell执行perl脚本,无法在Shell脚本中运行Perl脚本
  16. 秩和检验的概念及python实现
  17. python实现多人聊天论文_Python基于Socket实现简易多人聊天室的示例代码
  18. java ftp 假死_FTPClient下载文件程序假死问题
  19. 神器——写Markdown来画流程图、时序图
  20. 入过滤(Ingress Filtering)

热门文章

  1. 【数学建模】数学建模论文写作
  2. 不限速度盘下载神器Pandownload作者被抓,大量下载脚本已宣布停更
  3. PPT表格要怎样让设计秒变高级
  4. 常见的思维模型:5W2H和2W1H
  5. fiddler和wireshark对比
  6. 8位数码管动态显示字符
  7. Linux进程间通信-消息队列
  8. pyltp的使用教程
  9. 使用 C# 编程对 RTF 文档进行操作 [转载]
  10. drozer安全评估框架基础使用技法