OS:任务级设计,任务间耦合小;改变裸机前后台设计方案中后台任务轮训无优先级重要任务得不到确定性响应;伪并行,提高利用率。

在keilv4.74最后一个版本之后,KIELV5将KEIL-RTX该为CMSIS_RL_RTX(做了CMSIS的封装),适用于Cortex-M系列。

优点:性能和embos都差不多,移植非常简单,使能和添加RTX_Conf_CM.c(配置也是图形化方式)即可,免费,keil中带调试支持。

也可以以源码方式移植,见安富莱教程。

配置要点:

  • Number of concurrent running tasks:最多人数数(不包括空闲任务,实际任务应该小于等于改值)
  • Number of tasks with user-provided stack :用户自定义堆栈大小的任务数:其它的都是按缺省Task stack size ;一般先选择一个比较大的,通过调试再修改,其中M3和未使用FPU的M4系统栈=64(16个寄存器*4字节)*中断嵌套层数;而使用FPU的M4为200((16+极端情况34个浮点寄存器)*4)。堆栈大小与任务切换的现场保护与恢复,形参大小,局部变量,中断进入与嵌套。系统栈和任务栈:M3/M4的双堆栈结构,中断函数发生时的中断嵌套用的是系统栈MSP(在启动文件中,通过图形化配置改变,也可以在cubumX中改变),而RTX所有的任务使用的是PSP的任务栈(8字节对齐可以使用unint64_t)。
  • Run in privileged mode :是否使能特权机模式
  • Tick Timer Configuration :使用哪个定时器,定时器主频,系统时钟节拍数。
  • ISR FIFO Queue size :调用中断服务程序时将此请求放到缓冲区中。

OS函数及流程:

1 初始化:有3个函数,中间那个常用,任务优先级为1~254,数值越小优先级越低,也支持任务具有相同的优先级,设计方法:RTX推荐的

IRQ任务(最高):由中断服务程序触发,阻塞式(只有这样高优先级任务才可以得到执行的机会)。

高优先级后任务(次高):人机交互的输入(按键监测、触摸监测)、消息的解析处理(串口、usb等)

低优先级的时间片任务(一般):周期性的处理,如显示(LCD/数码管、图形显示等)

空闲任务:系统任务。

2任何创建:4个函数

3任务删除:2个函数,参数为ID,若为0表示删除当前正在运行的任务。空闲任务作用:保证系统不超负荷的100%运行,可添加低功耗方法。

4 任务优先级更改:2个函数,参数为ID,prio

特权模式和用户模式:特权模式下才可访问的外设(systick NVIC  MPU  SCB 特殊功能寄存器(程序状态寄存器组/中断屏蔽寄存器组、控制寄存器));在非特权模式下访问和配置系统控制寄存器如NVIC会引起硬件异常。

4.1在用户模式下初始化核心外设寄存器的方法:1 在操作系统初始化之前做核心外设初始化 2使用SVC软中断。

4.2模式切换方法:CONTROL[0]=0或者在hander模式下,更改值可进入用户模式;用户模式只有SVC才可以进入特权模式

keil-rtx的更多相关文章

  1. Keil RTX systick 初始化

    在STM32F215上移植Keil的RTX操作系统,随便设置下就能好使,但是当我想知道systick到底是怎么设置的时候,就得翻翻代码了,原来在 rt_HAL_CM.h中以一个内联函数的形式定义的 _ ...

  2. Keil RTX使用 os_mut_init 报Hard Fault 错误解决记录

    首先确定你的软件是在互斥信号初始化的位置,在以下几个位置,将会报Hard Fault 错误: (1).os_sys_init_user 用户线程创建之前 (2).os_tsk_create_user之 ...

  3. Keil的RTX特性

    Keil RTX是为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统.它允许您创建同时执行多个功能的程序,并帮助创建更好的结构和更容易维护的应用程序. 特征 具有源代码的免版权,确定性R ...

  4. STM32F429i-DISCO FreeRTOS keil STM32CubeMX

    目标: 在STM32F429 Disco开发板上用FreeRTOS双线程点亮双闪led. 准备: 0. STM32F429i-DISCO 1. keil ARMMDK 5.13 2. STM32Cub ...

  5. [RTOS]--uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点

    本篇博客就来细数这几个RTOS的特点.   以下内容均来自官方网站或者官方手册Feature的Google翻译的加了我的一些调整,没有任何主观成分. 1. FreeRTOS   FreeRTOS是专为 ...

  6. uTenux——软件底层驱动组织结构介绍

    经过第一节对uTenux初步认识和第二节对uTenux\AT91SAM3S4C开发板的硬件结构的介绍,这一节我们将要学习的是uTenux\AT91SAM3S4C的软件底层驱动. 在悠龙公司的官网或者u ...

  7. CMSIS_RTOS_Tutorial自译中文版

    一.序言 本资料是Trevor Martin编写的<The Designers Guide to the Cortex-M Processor Family>的摘要,并得到Elsevier ...

  8. MDK editions for Nuvoton devices

    10 Sep 2018 MDK editions for Nuvoton devices For users of Nuvoton devices, Keil® MDK increases its a ...

  9. keil_rtx特点

    Keil RTX是一个专为ARM及Cortex M系列处理器开发的无版税的确定的实时操作系统.它允许工程师建立多任务同步并行的程序软件,同时也能帮助使程序代码更加结构化和便于维护.   产品亮点 所有 ...

  10. CMSIS-RTOS 时间管理之时间延迟Time Delay

    时间管理 Time Management 此RTOS除了可以把你的应用代码作为线程运行,它还可以提供一些时间服务功能,使用这些功能你就可以访问RTOS的一些系统调用. 时间延迟Time Delay 在 ...

随机推荐

  1. L90

    On Motes and Beams 微尘与栋梁 It is curious that our own offenses should seem so much less heinous than t ...

  2. POJ2763 Housewife Wind(树剖+线段树)

    After their royal wedding, Jiajia and Wind hid away in XX Village, to enjoy their ordinary happy lif ...

  3. POJ1195Mobile phones (从二维树状数组到cdq分治)

    Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows ...

  4. 使用django-extension扩展django的manage――runscript命令

    摘要:1.下载安装   1)$easy_installdjango-extensions   2)在INSTALLED_APP中添加'django_extensions'[python]INSTALL ...

  5. 洛谷P1525关押罪犯——二分做法

    题目:https://www.luogu.org/problemnew/show/P1525 二分答案,二分图染色判断是否可行. 代码如下: #include<iostream> #inc ...

  6. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  7. MVC之Control中使用AOP

    原文转载自http://www.cnblogs.com/iamlilinfeng/archive/2013/03/02/2940162.html 本文目标 一.能够使用Control中的AOP实现非业 ...

  8. [nyoj737]石子归并(区间dp入门题)

    题意:有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出总的代价最小值 ...

  9. hdu1853 Cyclic Tour (二分图匹配KM)

    Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total ...

  10. js中match的用法

    match() 方法将检索字符串 stringObject,以找到一个或多个与 regexp 匹配的文本.这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g. 一.如果 regexp 没 ...