B_QuRT_User_Guide(1)

1 Introduction

1.1 Purpose

本文件旨在为有实时软件开发经验的C语言程序员提供参考。它只提供了关于实时并发编程的基本信息。欲了解更多信息,请参考ISBN 0470128720。
QuRTTM操作系统是一个实时操作系统(RTOS),用于高通公司的
HexagonTM处理器的实时操作系统。它支持多线程、线程通信和同步、中断处理和内存管理。
QuRT提供以下功能。

  • 低开销(在内存和处理方面)。
  • 实施简单
  • 易于将独立的用户程序移植到QuRT环境中
  • 易于修改以适应特定的目标要求
    注意:本文件描述的是QuRT 04.0.xx版本的具体信息。

1.2 Conventions

函数声明、函数名称、类型声明和代码样本以不同的字体出现,例如,#include。
代码变量出现在角括号中,例如,。命令和命令变量出现在不同的字体中,例如,复制a:. b:.

1.3 Technical Assistance

如需帮助或澄清本文件中的信息,请向高通技术公司提交案例,地址是:https://createpoint.qti.qualcomm.com。
如果您无法访问Createpoint或有任何问题,请发送电子邮件至 qualcomm.support@qti.qualcomm.com。

1.4 Features

QuRT由以下部分组成。

  • 内核,它提供了系统操作,提供了一套最基本的操作系统设施。内核处理线程创建、调度、阻塞,并执行基本的内存管理。
  • 库,为内核操作提供应用编程接口(API),并提供额外的库函数以帮助编程。
  • 配置文件,它封装了用于为各种目标平台配置QuRT的目标特定信息。
    注意:QuRT是一个简化的操作系统–它不提供许多在其他操作系统中普遍存在的设施。
    QuRT提供。
  • 多线程 - 基于优先级的实时抢占式多线程。
  • 多个线程(或执行流)可以在一个用户程序中同时执行。QuRT最初为程序分配一个单一的执行线程。然后,该程序可以创建额外的线程。Hexagon处理器可以同时执行固定数量的线程 - 任何额外的线程必须共享处理器。QuRT处理共享的细节。
  • 每个线程都被分配了一个优先级,决定了哪个线程有执行优先权。
  • 当一个优先级较高的线程准备执行时,一个线程可以被抢占–例如,被夺走处理器。
  • 操作系统能够在一定的时间段内执行其操作。
  • 进程 - 使程序和线程能够在独立的受保护地址空间中执行,以提高系统的安全性和稳定性。
  • Mutexes - 同步线程以确保对共享资源的互斥访问。
  • 信号 - 在类似于Mutex的信号集上同步化线程。
  • Semaphores - 同步线程以确保对共享资源的有限访问。
  • Barriers - 同步线程,使其在用户程序中的某个特定点相遇。
  • 条件变量 - 根据数据项的值来同步线程。
  • 管道 - 支持线程之间的同步数据交换。
  • 计时器 - 线程可以安排在特定的时间或间隔内发生动作。
  • 中断处理 - 注册线程作为中断处理程序。
  • 线程本地存储 - 分配给特定线程的私人全局存储。
  • 异常处理 - 支持对致命和非致命异常的异常处理。
  • 内存管理 - 用户程序可以动态地管理其内存空间。
  • 剖析 - 记录特定线程的周期计数(包括运行和闲置)。
  • 性能监控 - 在用户程序执行期间支持代码性能测量。

1.5 Processor Versions

QuRT支持Hexagon处理器版本V5、V55、V56、V60、V61、V62、V63、V64、V65、V66、V67、V68、V69和V71。

2 Using QuRT

2.1 User Programs

一个QuRT系统包含一个或多个用户程序。每个用户程序是一个完整的程序,它使用QuRT API(见第2.3节)来访问QuRT服务。当一个用户程序被启动时,它被分配了一个单线程–为了创建额外的线程,该程序使用QuRT线程服务。
一个用户程序由一个或多个C或汇编源文件组成(其中一些文件包括QuRT API头文件)。
一个用户程序的内存图像包括。

  • 默认的全局堆
  • 主线程调用栈
  • 程序的数据和文本部分
  • 由程序分配的堆和线程调用栈
    用户在建立用户程序时指定全局堆的大小(第2.2节)。
    在这里插入图片描述
    QuRT防止用户程序访问系统内存的未授权区域。如果一个线程试图访问其指定内存区域之外的内存,QuRT会产生一个内存异常。

2.2 Build Procedure

QuRT用户程序是用C/C++和Hexagon汇编语言编写的,并使用QuRT APIs来访问RTOS服务。
QuRT用户程序的构建程序与构建独立的C/C++程序的标准程序相似。
QuRT库(包括RTOS内核)是以目标文件的形式提供的,没有提供源代码。提供多个版本的QuRT库以支持不同的硬件和软件目标。每个库的版本都针对其特定目标进行了优化。
在建立一个QuRT系统之前,用户必须在一个用户可编辑的配置文件中定义系统配置。然后,该文件被用来生成一个配置对象文件,当QuRT RTOS被构建时,该文件与QuRT RTOS链接。
构建一个QuRT系统会产生一个单一的启动镜像,它可以通过两种方式执行。- 使用Hexagon仿真器进行软件仿真

  • 使用硬件测试平台(Rumi, ZeBu, SURF)进行在线仿真
    注意:QuRT用户程序使用标准C库来执行标准库所支持的操作(特别是malloc和printf)。

2.3 API

QuRT应用程序接口(API)是一个名为qurt.h的C头文件,它被包含在每个QuRT用户程序的源代码中。比如说:

     #include ‘‘qurt.h’’
     ...
     qurt_mutex_lock(&my_mutex); /* QuRT API function */

在QuRT API中定义的函数、类型和常量名称以前缀qurt_开头,表示它们是QuRT的一部分。QuRT API中的预处理器定义包括前缀QURT_。内核中的函数和数据结构包括前缀QURTK_。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值