0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用专门的RTOS工具发现实时错误

星星科技指导员 来源:嵌入式计算设计 作者:Jean Labrosse 2022-06-30 10:15 次阅读

越来越多的嵌入式系统依赖使用实时操作系统 (RTOS) 来:满足实时要求、缩短上市时间、简化开发、增加代码可移植性和简化开发。尽管有很多好处,但 RTOS 也有其缺点,其中之一是可能引入不正确分配的任务优先级、堆栈溢出、饥饿、死锁、优先级反转和其他难以发现的错误。

在本文中,我们将研究专门设计用于帮助基于 RTOS 的应用程序开发人员发现其中一些难以捉摸的错误、识别问题并提供纠正措施的工具。这些工具很容易获得,但嵌入式开发人员通常不知道。

什么是实时操作系统

实时操作系统(也称为 RTOS 或实时内核)是尽可能高效地管理 CPU(中央处理单元)时间的软件。大多数内核都是用 C 语言编写的,并且需要一小部分用汇编语言编写的代码才能使内核适应不同的 CPU 架构。当您使用 RTOS 内核设计应用程序(您的代码)时,您只需将工作拆分为任务,每个任务负责一部分工作。任务(也称为线程)是一个简单的程序,它认为自己完全拥有 CPU。在单个 CPU 上,在任何给定时间只能执行一个任务。您的应用程序代码还需要根据任务重要性以及每个任务的堆栈 (RAM) 为每个任务分配优先级。一般来说,添加低优先级任务不会影响系统对高优先级任务的响应。任务通常也实现为无限循环。内核负责任务的管理。这称为多任务处理。多任务处理是在多个顺序任务之间调度和切换 CPU 的过程。多任务处理提供了拥有多个 CPU 的错觉,并最大限度地利用了 CPU,如下所示。多任务处理还有助于创建模块化应用程序。使用实时内核,应用程序更易于设计和维护。多任务处理提供了拥有多个 CPU 的错觉,并最大限度地利用了 CPU,如下所示。多任务处理还有助于创建模块化应用程序。使用实时内核,应用程序更易于设计和维护。多任务处理提供了拥有多个 CPU 的错觉,并最大限度地利用了 CPU,如下所示。多任务处理还有助于创建模块化应用程序。使用实时内核,应用程序更易于设计和维护。

pYYBAGK9B02AZFU-AAEBYD1r2P8657.png

大多数商业 RTOS 都是抢占式的,这意味着内核始终运行最重要的可立即运行的任务。抢占式内核也是事件驱动的,这意味着任务被设计为等待事件发生才能执行。如果任务等待的事件没有发生,内核运行其他任务。等待任务消耗零 CPU 时间。发送信号和等待事件是通过内核应用程序编程接口 (API) 调用完成的。内核允许您避免轮询循环,这会浪费 CPU 的时间。以下是如何实现典型任务的示例:

poYBAGK9B1WAf5u5AAC3kTgRW_U317.png

内核为程序员提供了许多有用的服务,例如多任务处理、中断管理、任务间通信和信令、资源管理、时间管理、内存分区管理等等。RTOS 可用于只有少量任务的简单应用程序,但它是需要复杂且耗时的通信堆栈的应用程序的必备工具,例如 TCP/IP、USB(主机和/或设备) )、CAN蓝牙Zigbee 等。当应用程序需要文件系统来存储和检索数据以及产品配备某种图形显示(黑白、灰度或彩色)时,强烈建议使用 RTOS。

内置调试端口

ARM Cortex.-M 处理器配备了内置于每个芯片上的特殊且非常强大的调试硬件。CoreSight 提供非侵入式功能,允许工具在不停止 CPU 的情况下监视和控制实时系统,例如:

动态内存/外设访问(读取和写入)

指令跟踪(要求芯片还包括一个执行跟踪宏单元,ETM)

数据追踪

使用分析计数器进行分析

下图显示了 CoreSight 调试端口、CPU 和内存/外设之间关系的简化框图。

poYBAGK9B1yAYuXmAAJ0T2PUqic459.png

用于测试/调试实时系统的工具

下图显示了 CoreSight 如何连接到您的开发环境:

poYBAGK9B2iAWNSSAAIz0v3vR28368.png

1 - 嵌入式开发人员经常使用集成开发环境 (IDE),其中包括代码编辑器、编译器、汇编器、链接器、调试器和可能的其他工具。

IDE 中内置的调试器只提供最基本的必需品:下载代码、启动/停止、设置断点和其他一些简单功能。一些调试器更进一步,允许您在目标运行时显示和更改变量(也称为 Live Watch),但功能仅限于数值。包含内置 RTOS 感知功能的调试器也很常见,但通常需要您暂停应用程序以检查 RTOS 的状态(对于调试实时系统不太实用)。

2 - 当您准备好调试应用程序时,通过 Debugger Probe(例如 Segger J-Link )将代码下载到目标。

3 - J-Link 连接到 CoreSight 调试端口,能够启动/停止 CPU、下载代码、对板载 Flash 进行编程等。即使目标正在执行代码,J-Link 也可以根据需要直接读取和写入内存。

4 - Micrium 的 μC/Probe是一个独立的、与 CPU 供应商无关的、基于 Windows 的应用程序,可读取工具链生成的 ELF 文件。ELF 文件包含下载到目标的代码以及所有全局可访问变量的名称、它们的数据类型以及它们在目标内存中的物理内存位置。

5 - μC/Probe 允许用户在运行时(即实时)显示或更改连接的嵌入式目标上几乎任何变量或内存位置(包括 I/O 端口)的值。用户只需从仪表、数字指示器、表格、图形、虚拟 LED、条形图、滑块、开关、按钮和其他组件的库中填充 μC/Probe 的图形环境,并将其中的每一个与变量或内存位置相关联嵌入式设备。μC/Probe 不需要您检测目标代码以在运行时显示或更改变量。通过在 μC/Probe 的屏幕上添加虚拟滑块或开关,您可以轻松更改运行系统的参数(例如滤波器系数和 PID 回路增益)或驱动设备和测试 I/O 端口。

6 - μC/Probe 向 J-Link 发送请求以读取或写入内存。

7 - J-Link 请求被转换为 CoreSight 命令以获取变量值并将其以图形方式显示在 μC/Probe 的屏幕上。

8 -另一个用于测试/调试实时嵌入式系统的非常有用的工具是 SEGGER 的 SystemView 。此工具通常与 RTOS 结合使用,并在时间线上显示任务和 ISR 的执行配置文件,以便您可以查看每个任务执行所需的时间(最小/平均/最大),任务何时准备好运行,当每个任务实际开始执行时,当 ISR 执行时等等。SystemView 可以帮助您发现可能多年未被注意到的错误。但是,SystemView 要求您将代码添加到记录 RTOS 事件和 ISR 的目标(由 SEGGER 免费提供)。SystemView 还消耗少量 RAM 来缓冲这些事件。

9 - J-Link 允许多个进程同时访问 CoreSight,因此您可以同时使用所有三个工具。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5062

    文章

    18984

    浏览量

    302379
  • 滤波器
    +关注

    关注

    160

    文章

    7712

    浏览量

    177528
  • 编辑器
    +关注

    关注

    1

    文章

    800

    浏览量

    31082
收藏 人收藏

    评论

    相关推荐

    RTOS正在缩小与Linux的差距

    RTOS与Linux的物联网设备操作系统之争已经持续了很多年。Linux以其强大的计算能力和丰富的软件生态,在需要复杂处理和软件支持的物联网设备上占据一席之地;RTOS凭借实时响应和资源节约的特性
    的头像 发表于 09-10 08:07 666次阅读
    <b class='flag-5'>RTOS</b>正在缩小与Linux的差距

    freertos和rtos区别是什么

    FreeRTOS 和 RTOS实时操作系统)是两个不同的概念,但它们之间有紧密的联系。FreeRTOS 是一个特定的开源实时操作系统,而 RTOS
    的头像 发表于 09-02 14:18 871次阅读

    RTOS与Linux有什么区别

    RTOS(Real-Time Operating System,实时操作系统)与Linux是两种在不同应用场景下发挥重要作用的操作系统,它们在设计理念、功能特性、应用场景以及性能表现等方面存在显著差异。以下是对RTOS与Linu
    的头像 发表于 08-20 16:05 2788次阅读

    RTOS的特性和类型

    实时操作系统(RTOS)是一种可运行实时计算应用程序的软件平台,用于处理具有明确时间约束的事件和数据。与通用操作系统(GPOS)不同,RTOS必须在有限的硬件资源上调度应用程序之间的处
    的头像 发表于 08-20 11:29 471次阅读

    简单认识RTOS实时操作系统

    RTOS(Real Time Operating System,实时操作系统)是一种专门设计用于在严格时间限制内处理任务的操作系统。它以其高实时性、多任务处理能力和资源管理能力在工业自
    的头像 发表于 08-20 11:20 2147次阅读

    编译运行ESP8266_RTOS_SDK-master,发现程序并没有正确执行,为什么?

    ,eagle.irom0text.bin---->0x20000烧写到相应地址,程序运行后,发现并没有正确执行,请问是否烧写地址错误,或者是配置FLASH错误
    发表于 07-12 08:21

    ESP8266_RTOS_SDK编译错误的原因?

    “i2c_master_gpio_init”中: /home/esp8266/ESP8266_RTOS_SDK/include/espressif/esp8266/pin_mux_register.h:149:47:错误
    发表于 07-12 08:04

    RTOS SDK v. 1.5编译错误的原因?

    _sdk/tree/master并尝试编译它,但出现错误: c:/乐鑫/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Lc:/乐鑫/ESP8266_RTOS_SDK/lib
    发表于 07-10 08:19

    ESP8266_RTOS_SDK-v3.4的构建错误如何解决?

    我尝试将 SDK3.4 导入 Aithinker windows IDE 程序,然后构建它。不幸的是,我收到以下错误: LD /d/8266/ESP8266_RTOS
    发表于 07-08 07:59

    说说硬件调试中发现的那些低级错误

    硬件调试中会经常遇到各种意想不到的问题,有些调试花了几个月,各种能想到的办法都尝试了,最后发现却是一个非常低级的错误,有多低级?请看今天的内文介绍。
    的头像 发表于 07-03 12:00 274次阅读
    说说硬件调试中<b class='flag-5'>发现</b>的那些低级<b class='flag-5'>错误</b>

    risc-v的mcu对RTOS兼容性如何

    设计、中断响应速度以及RTOS的调度策略。 一些RISC-V MCU可能具有特定的硬件特性(如快速中断响应、低延迟I/O等),这些特性可以增强RTOS实时性能。 软件生态和工具
    发表于 05-27 16:26

    带你认识实时操作系统(rtos)

    实时操作系统(RTOS)是为嵌入式系统和实时应用提供一个稳定、可预测和高效运行环境的操作系统。实时操作系统确保了系统能够在严格的时间限制内响应外部事件和处理任务,这是许多关键应用领域所
    的头像 发表于 04-16 16:30 1113次阅读
    带你认识<b class='flag-5'>实时</b>操作系统(<b class='flag-5'>rtos</b>)

    虹科技术 | PCAN View功能细讲:从实时监测到错误帧分析

    相信使用过PCAN工具的朋友都知道虹科PCAN-View这款免费软件,它具有直观的用户界面,可以实时监测和分析CAN总线上的数据帧,并提供过滤、发送和报文记录。但你知道吗?它其实不只是简单收发报文,虹科PCAN-View还能自动检测和报告CAN总线上的
    的头像 发表于 03-18 13:48 1042次阅读
    虹科技术 | PCAN View功能细讲:从<b class='flag-5'>实时</b>监测到<b class='flag-5'>错误</b>帧分析

    AD2S1210读故障寄存器发现总报错误0x8000是为什么?

    现使用AD2S1210,读故障寄存器发现总报错误0x8000,提示为削波错误,但发现实际硬件LOT和DOS引脚都已拉高,应该没有故障,在读取位置信号时,初始位置为0x8080,而不是0
    发表于 12-22 06:38

    什么是实时操作系统(RTOS)

    实时操作系统(RTOS)是一种专为实时应用程序设计的操作系统。实时应用程序需要在特定时间内做出预测的响应,因此 RTOS 专注于提供对时间约
    的头像 发表于 11-23 17:14 5507次阅读