pdf

《RL-ARM 实时库用户指南》中文版

  • 1星
  • 日期: 2016-04-27
  • 大小: 2.53MB
  • 所需积分:1分
  • 下载次数:99
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: RTX

RTX

ARM

ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。

《RL-ARM 实时库用户指南》中文版

简介:RL-ARM™ 用户指南包含关于RealView® 实时库构成的细节信息。本手册包括以下几章:1. RL-RTX 描述了RL-ARM实时操作系统的结构,包括任务优先级、上下文切换、单个CPU下如何管理多个任务以及在RL-RTX中用到的其他一些 RTOS特性; 2.RL-FlashFS 描述了 RL-ARM中Flash文件系统的结构,包括文件创建、保存、读取以及在标准的flash,RAM或是存储卡设备中修改文件。3.RL-TCPnet 描述了RL-ARM中TCP/IP协议栈组的结构,包括多种TCP/IP特性,以及帮助你创建可以联网的嵌入式运用程序 4.RL-CAN 描述了RL-ARM中CAN设备的结构,包括如何采用RTX内核建立CAN运用程序。5.Example Programs 列举了一些RL-ARM例程以及描述如何对其进行测试。6.Library Reference 描述了在 RL-ARM所有的库程序 7.Appendix 包含 µVision® 调试对话框,以及术语表。

文档内容节选

RLARM RLARM Users Guide 页码,1335 RLARM 实时库用户指南 RLARM 用户指南包含关于RealView 实时库构成的细节信息 本手册包含以下几章: n RLRTX 描述了RLARM实时操作系统的结构,包括任务优先级上下文切换单个 CPU下如何管理多个任务以及 在RLRTX中用到的其他一些 RTOS特性 n RLFlashFS 描述了 RLARM中Flash文件系统的结构,包括文件创建保存读取以及在标准的 flash,RAM或 是存储卡设备中修改文件 n RLTCPnet 描述了RLARM中TCPIP协议栈组的结构,包括多种 TCPIP特性,以及帮助你创建可以联网的嵌入 式运用程序 n RLCAN 描述了RLARM中CAN设备的结构,包括如何采用RTX内核建立CAN运用程序 n Example Programs 列举了一些RLARM例程以及描述如何 对其进行测试 n Library Reference 描述了在 RLARM所有的库程序 n Appendix 包含 Vision 调试对话框,以及术语表 RLARM 支持基于ARM的微......

RL-ARM: RL-ARM User's Guide 页码,1/335 RL-ARM 实时库用户指南 RL-ARM™ 用户指南包含关于RealView® 实时库构成的细节信息。 本手册包含以下几章: n RL-RTX 描述了RL-ARM实时操作系统的结构,包括任务优先级、上下文切换、单个 CPU下如何管理多个任务以及 在RL-RTX中用到的其他一些 RTOS特性。 n RL-FlashFS 描述了 RL-ARM中Flash文件系统的结构,包括文件创建、保存、读取以及在标准的 flash,RAM或 是存储卡设备中修改文件。 n RL-TCPnet 描述了RL-ARM中TCP/IP协议栈组的结构,包括多种 TCP/IP特性,以及帮助你创建可以联网的嵌入 式运用程序。 n RL-CAN 描述了RL-ARM中CAN设备的结构,包括如何采用RTX内核建立CAN运用程序。 n Example Programs 列举了一些RL-ARM例程以及描述如何 对其进行测试。 n Library Reference 描述了在 RL-ARM所有的库程序。 n Appendix 包含 µVision® 调试对话框,以及术语表。 RL-ARM 支持基于ARM的微控制器,是对RealView MDK-ARM™ 开发工具的补充。 注意: n RealView® MDK-ARM开发工具包中并不包括RL-FlashFS、RL-TCPnet,以及RL-CAN ,这些只在RL-ARM 独 立的产品中可以找到。 修订历史 n 2006.11: 增加对SD/MMC Flash 存储卡 的支持。 n 2006.11: 将所有的函数描述移到库参考单元。 n 2006.10: 初始对接网络。 n 2005.10: 增加 互斥体, 堆栈校验, Flash 文件系统, 以及 CAN驱动。 n 2005.6: 第二次修订 n 2005.2: 第一次修订 n 2004.11: 初始版本 RL-RTX Copyright © Keil, An ARM Company. All rights reserved. RTX内核是一个实时操作系统 (RTOS),可以同时运行多函数或是任务。在嵌入式运用中这是非常有用的。当然也可 以不用RTOS开发实时程序不需要,例如通过循环执行一个或多个任务。但有像RTX这样的实时操作系统,可以 解决众多的 调度、维护、定时等问题。 RTOS 可以自由地调度系统资源,比如CPU和内存,并且提供一种任务间通信机制。 RTX内核是一个强大的实时操 作系统,可以很容易地使用和运行基于 ARM7TDMI、ARM9或是 Cortex-M3 CPU 内核的微控制器。 RTX程序使用标准的C结构编写,运用RealView® 编译器进行编译。RTX.H 头文件定义了RTX函数以及宏,可以让 file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm 2010-7-21 RL-ARM: RL-ARM User's Guide 页码,2/335 轻松地声明任务并达到RTOS所有特性。 在新工程中使用RTX内核 将通过一步步的介绍让读者了解怎样创建RTX运用程序。 概述 Copyright © Keil, An ARM Company. All rights reserved. RTX内核可以轻松地使用实时执行器,该实时执行器为基于ARM CPU核的微控制器提供。RTX内核提供了一组C函数以及C 宏,可以让开发者使用在CPU中并行运行的任务去创建实时运用程序。 这个部分提供了RTX内核基本的信息,列出了时钟信息,以及解释了并行执行任务的概念。 Copyright © Keil, An ARM Company. All rights reserved. 功能描述 RTX的基本功能就是开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内 存)的管理、任务之间消息的传递。 Copyright © Keil, An ARM Company. All rights reserved. 基本函数 开发者可以使用基本函数去开启实时运行器,去开始和终结认为,以及去传递任务间的控制(轮转调度)。开发者可以赋予 认为优先级。当在就绪队列中有多个任务的时候,RTX内核通过执行优先级来确定下一个运行的任务(强占调度)。 Copyright © Keil, An ARM Company. All rights reserved. 进程通信 RTX提供了几种不同的进程通信方法: n 事件标志 事件标志是实现进程同步的主要方法,每个进程有16个事件标识可供使用,所以最多能等待16个不同的事件。也可以 同时等待多个事件标志,这种情况下,如果这些事件标志是与的关系,那么这些事件标志必须都被置位后该进程才能继续运 行;如果这些事件标志是或的关系,那么这些事件标志中的一个或几个被置位后该进程就可以继续运行。 事件标志也可被ARM中断功能置位。在这种机制下,通过使用ARM中断函数设置任务等待的标志,可以使异步的外部事 件和RTX核的任务同步。 n 信号量 在多任务实时操作系统中, 需要特别的方法访问共享资源。否则,这些任务对共享资源的同时访问可能会导致数据的 不一致或外设的错误操作。 解决访问临界资源问题的主要方法是信号量。信号量是包含了虚拟标志的软件对象。内核将标志给第一个请求的任 务。在任务将其返回给信号量之前,没有其他的任务可以 获取这个标志。只有拥有标志的任务才能访问公共资源,这就阻止 了其他的任务访问和扰乱公共资源。 当信号量的标志不可用时,访问它的进程将被挂起,一旦标志被返回,这个进程就会被唤醒。为了解决错误的等待条 件,必须引入超时机制。 n 互斥量 file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm 2010-7-21 RL-ARM: RL-ARM User's Guide 页码,3/335 互斥量是解决进程同步问题的另一种方法。它们用作对临界区的访问控制,只有拥有互斥量的进程才能访问临界区, 其他试图访问临界区的进程将被阻塞。 n 信箱 有时进程之间需要交换消息,这在网络中是很常见的,例如TCP-IP、UDP、ISDN等。 消息就是包含协议消息或帧的内存块的指针,这样的内存块可以动态的分配和提供给用户。为了防止内存泄漏,用户 有责任正确地分配和回收内存块。 如果接收进程访问信箱中的消息不存在,它将被挂起,直到该消息被发送进程发送到信箱中,该被挂起的接收进程才 会被唤醒。 技术规范 描述 支持的进程数 支持的信箱数 支持的信号量数 支持的互斥量数 支持的信号量数 支持的用户定时器数 RAM 要求 代码要求 硬件要求 用户进程优先级 进程切换的时间 中断停止时间 注意 Copyright © Keil, An ARM Company. All rights reserved. RX Kernel 最多256 无限制 无限制 无限制 每个进程16个 无限制 最少500字节 小于5 K字节 一个或多个片上时钟可用 1 - 255 小于5µsec @60MHz, 0 ws. 小于1.8 µsec @60MHz, 0 ws n 无限制是说不受RTX核操作系统的限制,但是要受到系统内存资源的限制; n RTX核的默认配置是:10个任务、10个用户定时器、禁止栈的检查; n 这里的“信号”就是事件的意思; n RAM的限制是由并发执行的进程数来决定的。 Copyright © Keil, An ARM Company. All rights reserved. 时序规格 函数 初始化系统(os_sys_init), 启动进程 创建定义的进程,没有进程切换 创建定义的进程,切换进程 撤消进程(通过os_tsk_delete) 进程切换(通过os_tsk_delete_self) 进程切换(通过os_tsk_pass) 进程切换(upon set event) 时间性能 36.3 12.9 14.6 5.9 8.8 4.6 7.3 file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm 2010-7-21 RL-ARM: RL-ARM User's Guide 页码,4/335 进程切换(upon sent semaphore) 进程切换(upon sent message) 设置时间(没有进程切换) 发送信号量 (没有进程切换) 发送消息(没有进程切换) 获得进程标识符 (os_tsk_self) IRQ中断服务子程序的中断响应时间 IRQ中断服务子程序的最大等待时间(lockout) IRQ中断服务子程序的最大中断延迟 (response + lockout) 5.5 6.1 2.5 1.9 2.8 1.0 0.4 2.2 2.6 注意 n 这里的时间数据是在LPC21xx上执行的结果,系统时钟为60MHz,单位是µs,代码在处理器的内部Flash中执行; n 这些时间数据由µVision3调试器和SARM.DLL软件仿真器(1.50e版本)测得的。 n 中断服务子程序及调用中断服务的程序都由RealView编译器编译。在不使用RTX核时,RVCT快速中断程序也有同 样的中断响应时间。Interrupt response for ISRs includes the ISR prolog as generated by RealView Compilation Tools. The RVCT fast interrupt procedures have the same interrupt response time without the RTX kernel. Copyright © Keil, An ARM Company. All rights reserved. 怎样使用RTX内核 RTX核的实时响应是基于多任务并发执行的思想,将系统必须响应的任务被分成几个更小的任务,这样做有许多好 处: n 现实世界的事件通常是由并发事件组成的,这种模式可以被映射到软件中; n 不同的事件在需要时可随时发生,将一个任务分割成可以独立执行的进程,使得这种情况可以实现; n 任务的优先级是可改 变的; n 一个大的模块可以分割成几个小的模块,这样做有利于程序的理解及模块的管理; n 通过将一个软件分割成独立的几个部分可减小系统的复杂性,同时减少错误的发生,使测试更容易; n 系统的扩展更加容易,只需要在系统中增加任务就可以实现; n RTX核的实时性为实时应用程序提供了许多方便,例如可以提供一个好的中断处理、任务的周期性响 应及等待函数的时限等。 Copyright © Keil, An ARM Company. All rights reserved. 第一个RTX运用程序 这部分给出了一个非常简单的使用RTX核的应用程序例子。这个应用程序有两个任务, task1和task2,这两个任务 必须在一定的时间(如50ms)后重复执行,当task1执行完后暂停20ms,然后继续执行task2。 现在,一步一步构建这个应用程序。 1. 将操作代码写入到task1和task2中。 在RVCT中使用C语言的扩展关键字_task声明这两个任务。 void task1 (void) __task { .... place code of task 1 here .... file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm 2010-7-21 RL-ARM: RL-ARM User's Guide 页码,5/335 } void task2 (void) __task { .... place code of task 2 here .... } 2. 运行任务之前启动实时运行器,然后,在C程序的main()函数中调用os_sys_init() 函数。 将任务ID作为一个参数传递到os_sys_init函数中,当程序运行时就直接执行task1。 首先执行rask1。在task1执行时调用 os_tsk_create 创建task2。 void task1 (void) __task { os_tsk_create (task2, 0); .... place code of task 1 here .... } void task2 (void) __task { .... place code of task 2 here .... } void main (void) { os_sys_init (task1); } 3. 将操作写入到死循环中,不可预知地重复执行两个程序。 首先,系统函数 os_dly_wait() 任务暂停几个系统时间间隔。RTX核通过对ARM处理器片上定时器的编程来实 现系统定时器,默认情况下,系统间隔10ms,使用0号定时器,不过这可以调整。 系统函数 os_evt_wait_or 的作用是用于让task1等待task2完成,而 os_evt_set作用是传送信号给task2。 这个例子中使用的是3号事件标志。task2必须在task1完成20ms之后才能启动。同样的函数可以在task2等待task1以 及传送信号给task1时使用。以下列举了运行RTX例程所有的要求: /* Include type and function declarations for RTX */ #include "rtl.h" /* id1, id2 will contain task identifications at run-time */ OS_TID id1, id2; /* Forward declaration of tasks. */ void task1 (void) __task; void task2 (void) __task; void task1 (void) __task { /* Obtain own system task identification number */ id1 = os_tsk_self(); /* Create task2 and obtain its task identification number */ id2 = os_tsk_create (task2, 0); for (;;) { /* ... place code for task1 activity here ... */ file://C:\Documents and Settings\admin\Local Settings\Temp\~hhB0BC.htm 2010-7-21
更多简介内容

推荐帖子

【树莓派4B测评】+环境搭建,openssl库使用
【树莓派4B测评】+环境搭建,openssl库使用 昨天拿到了期盼已久的板子,今天开始测试,首先是环境搭建,网上各种教程都很详细了,我就轻描淡写一下自己的步骤: 首先官网下载固件:https://www.raspberrypi.org/downloads/raspberry-pi-os/,我这里选择完整版。 第二步使用Win32DiskImager.exe将IMG文件写入
29447945 开发板测评专版
MSP430FR2433 LaunchPad™ 开发套件
    MSP-EXP430FR2433 LaunchPad™ 开发套件是基于 MSP430FR2433 超值系列传感微控制器 (MCU) 的易用型评估模块 (EVM)。它包含在超低功耗 MSP430FR2x 超值系列传感 MCU 平台上进行开发所需要的全部资源,包括用于编程、调试和能量测量的板载调试探针。此板包括 2 个按钮和 2 个 LED 以用于创建简单的用户接口。它还支持使用超级电容器(需
Aguilera 微控制器 MCU
RedMonk的2020年6月最流行的20种编程语言
来自:https://www.zdnet.com/article/programmi ... es-top-20/ RedMonk的2020年6月最流行的20种编程语言排名: JavaScript Python Java PHP C ++ C# Ruby CSS TypeScript C Swift Objective-C R Sc
dcexpert MicroPython开源版块
2.1GHz和3.5GHz频段在5G网络中的应用建议
摘要: 随着移动通信网络的不断发展,运营商拥有高中低不同的频段资源,无线电频段资源是宝贵的战略资源,如何合理高效的利用频谱资源是目前运营商考虑的首要问题。 目前2.1G和3.5G频段是5G网络部署的主流频段,本文从链路预算和实地测试两个方面对2.1G和3.5G的覆盖性能进行了对比,详细分析了他们在覆盖性能、业务承载上的差异,论证了3.5G频段独立组网的缺陷及2.1G频段重耕对后续组网效
btty038 RF/无线
编译出的bin文件结尾多了很多0
本帖最后由 woody_chen 于 2020-8-10 10:32 编辑 众所周知,有些变量是不需要初始化的。 最近想优化下芯片启动的速度。所以想把某些很大的buffer从bss段,放到新建的一个no_init段。这样芯片启动的时候就不需要把这个buffer清0 第一步,在link文件中新建了一个no_init段。这里放在bss段后面。 .bss :
woody_chen 编程基础
[常见问题解答] F05 FlashC2000器件具有“F05 flash”吗?
问:什么是闪存扇区(flash sector)? 它们记录在哪里? 答: 每个扇区的存储位置记录于数据手册存储映射中。 一个flash bank由多个扇区组成。 扇区大小与闪存的物理架构相对应,且大小不能更改。 扇区是可擦除的最小闪存区域。例如,您可擦除整个扇区“A”,但无法擦除扇区A中的单字。 您可在链接器命令文件中合并扇区以创建更大的.text段。这不会改变扇区是可擦除的最
fish001 微控制器 MCU

评论

wdliming
不错哦,对于英文阅读能力有限的小白还是很有帮助的 中文资料有帮助
2020-08-14 11:46:21回复
Rainy_Day04321
不错哦,对于英文阅读能力有限的小白还是很有帮助的
2019-10-15 15:13:05回复
登录/注册

意见反馈

求资源

回顶部

datasheet推荐 换一换

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })