| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 嵌入式学习 -> 正文阅读 |
|
[嵌入式]嵌入式学习 |
嵌入式系统固件的开发与调试 主要学习 ? ? 嵌入式系统的质量属性(quality attributes) ? ? 嵌入式系统的设计与开发 ? ? 嵌入式系统的类型 ? ? 嵌入式系统中的时间管理与调度(time management and scheduling) ? ? 用于嵌入式系统的调试工具(debugging tools) 1.质量属性分为操作质量属性和非操作质量属性 嵌入式硬件 嵌入式系统开发人员将控制算法(程序指令)和/或配置设置转储到嵌入式系统的代码(程序)内存中 它是嵌入式系统中不可避免的一部分。 ? 嵌入式固件可以通过各种方法开发,如: ? 使用集成开发环境(IDE)以嵌入式C/C++等高级语言编写程序: ? IDE将包含一个编辑器、编译器、链接器、调试器、模拟器等。 ? IDE对于不同的处理器/控制器系列是不同的。 ? 使用应用程序的目标处理器/控制器支持的指令,用汇编语言编写程序 嵌入式固件负责控制嵌入式硬件的各种外围设备,并根据产品的功能要求生成响应 嵌入式固件是嵌入式系统的主脑 嵌入式固件将智能传递给嵌入式系统 这是一个一次性的过程,可以在任何阶段发生 一旦通过在硬件中嵌入固件将智能传递给产品,该产品将开始正常运行 该产品将继续为分配的任务提供服务,直到发生硬件故障或嵌入式固件损坏 在硬件故障的情况下,可能需要更换损坏的组件,对于固件损坏,应重新加载固件,以使嵌入式产品恢复正常功能 嵌入式固件通常存储在永久存储器(ROM)中,并且 最终用户不可更改 嵌入式固件的设计和实现有两种基本方法,即 基于超循环的方法 The Super loop based approach 基于嵌入式操作系统的方法 The Embedded Operating System based approach 关于固件开发需要采用哪种方法的决定是完全依赖于复杂性和系统需求 基于超级循环的固件开发方法是 适用于时间不严格且响应时间不太重要的应用程序(例如,可接受错过截止日期的嵌入式系统) 它非常类似于传统的过程编程,其中代码是逐任务执行的。 任务在一个永无止境的循环中执行。 程序代码顶部列出的任务首先执行,顶部下方的任务在完成第一个任务后执行 优点: ? 不需要操作系统来进行任务调度和监控,并且不需要操作系统相关的开销(overhead) ? 简单明了的设计。 ? 减少内存占用。 缺点: ? 非实时执行行为(随着任务数量的增加,任务获得CPU执行时间的频率也会增加)。 ? 任何任务执行中的任何问题都可能影响产品的功能 (这可以通过使用执行任务监视的看门狗定时器来有效地解决)。 增强功能: ? 将基于超级环路的技术与中断相结合。 ? 作为中断服务例程,执行需要实时关注的任务(如键盘处理) 核心:中断 基于嵌入式操作系统的方法:嵌入式设备包含一个嵌入式操作系统 A Real Time Operating System (RTOS). A Customized General Purpose Operating System (GPOS)定制的通用操作系统(GPOS) 分类依据:1)内核(kernel)和内核服务的类型,2)部署操作系统的计算系统的用途和类型,3)对应用程序的响应性 嵌入式操作系统负责调度用户任务的执行以及在多个任务之间分配系统资源。 scheduling the execution& allocation of system resources 除了管理和执行用户定义的任务外,它还涉及与操作系统相关的高开销 examples: 销售点(PoS)终端、游戏站、平板电脑等都是在嵌入式GPOS上运行的嵌入式设备的例子 移动电话、PDA、飞行控制系统等都是运行在RTOS上的嵌入式设备的例子 RTOS和GPOS的优缺点 关于kernel(内核)的介绍 嵌入式硬件--时间管理(time management) 根据时序约束的容差程度,RTOS可分为三种类型 硬实时系统 软实时系统 Firm real time system 这些系统都比较软但是有硬的deadline (具体内容参考教材) Multitasking 多任务 抢占式多任务系统preemptive multitasking system 当有更高优先级的任务需要被执行时 任务在执行中可以被打断 非抢占式多任务系统 non-preemptive multitasking system 协同多任务系统? co-operative multitasking system 调度器 Scheduling 任务调度-调度器选择: ?CPU利用率 ?吞吐量 ?周转时间 ?等待时间 ?响应时间 总之,一个好的调度算法具有高CPU利用率、最小周转时间(TAT)、最大吞吐量和最小响应时间 To summarize, a good scheduling algorithm has high CPU utilization, minimum Turn Around Time (TAT), maximum throughput and least response time Preemptive scheduling抢占式调度VSNon-preemptive scheduling非抢占调度 非抢占调度Non-preemptive shceduling FCFS(first come first serve)和FIFO(first in first out) 按照顺序执行任务 第一个到的第一个开始 例如:售票 缺点、 支持流程垄断favor monopoly of process没有I/O口 倾向于执行CPU绑定进程而I/O绑定进程需要等待 FCFS算法没有提供最少的平均等待时间 例题 非抢占调度 评价等待时间 TAT(turn around time)周转时间 LCFS(last come first serve)/LIFO scheduling 按照顺序 最后来的先执行 缺点 和FCFS一样 SJF(shortest job first)scheduling(最少任务先执行) 优先分配CPU时间给耗时最少的任务执行 平均等待时间最少 相对其他非抢占调度方案如FCFS是最好的 缺点 一个被估计长耗时的任务可能由于短耗时任务的不断加入而一直不能被执行 不能提前得知下一个最短耗时的任务因为不同耗时的任务在不断输入 基于优先级的调度 priority based scheduling 优先级相同的任务相关 任务的优先级使用不同形式表达例如任务的优先级由数字或耗时表示 在数字表示优先级的系统中操作系统决定多少个优先级 WindowsCE支持256种优先级 例题、 平均等待时间 周转时间 缺点和SJF调度一样,有一些低优先级的任务不能得到执行 嵌入式硬件--抢占式调度 preemptive scheduling SRF(shortest remaining time)最少剩余时间调度 当新的任务输入(enter)时,估计这个任务的耗时和现在在执行任务的剩余耗时,当新加入任务耗时少于在执行剩余任务耗时则新加入任务抢占在执行任务 RR(round Robin)循环抢占式调度 这个抢占式调配就是创造时间片段(time slice)每个任务被划分成单位小块循环执行 例题 抢占式调配--基于优先级的调配(priority based scheduling) 基本和非抢占调配的基于优先级调配相同,但是不同在于前者面对高优先级任务是执行完现在的任务再进行任务分配而抢占式则是当前任务未执行完就重新分配任务 循环抢占式调度的优缺点 调试(debugging) 调试是用来发现程序错误的 测试(testing)不同于调试(debugging) 测试:执行一个程序,看看它是否按预期执行 调试:给出软件故障的症状,定位并纠正缺陷 编码方案coding scheme ? 开发一个嵌入式应用程序需要硬件设计、软件编码和编程一个受现实世界交互影响的系统。 ? 硬件和软件组件必须在有效的设计中协同工作 调试工具可以: 1、帮助建立一个原型系统。 2、帮助识别原型和最终应用中的硬件和软件问题。 3、协助微调系统assist in fine-tuning the system ? emulator 仿真器??? simulator模拟装置 4.logic analyzer逻辑分析仪 逻辑分析仪是用于监测数字信号的硬件测试仪器。它可以是一个非常好的工具,用于调试带有外部内存总线的嵌入式系统。逻辑分析器可以在执行时记录地址、指令和一些数据信息。 5.ICE(in-circuit emulator)电路内仿真器 在线仿真器(ICE)取代了目标处理器。 ?它包含目标处理器的副本,以及RAM、ROM和它自己的嵌入式软件。 ?它允许您在程序运行时检查处理器的状态 ?它使用远程调试器实现人机界面。 ?它支持软件和硬件断点。 ?具有实时跟踪功能。 ?它存储关于执行的每个处理器周期的信息。 ?它允许您查看事情发生的顺序 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:39:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |