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. swoole+nginx反向代理

    nginx配置: server { listen 80; server_name www.swoole.com; root /data/wwwroot/www.swoole.com; location ...

  2. Linux-NoSQL之memcached

    1.memcached安装 yum search memcached yum install -y libevent memcached libmemcached 启动:/etc/init.d/mem ...

  3. Qt属性系统(Qt Property System)

    Qt提供了巧妙的属性系统,它与某些编译器支持的属性系统相似.然而,作为平台和编译器无关的库,Qt不能够依赖于那些非标准的编译器特性,比如__property 或者 [property].Qt的解决方案 ...

  4. ogg概叙、架构、进程

    一. OGG 概述 OGG 全称Oracle Golden Gate. 历史: Golden Gate公司于1995年成立于美国加州旧金山,它的名称源自旧金山闻名于世的金门大桥.两位创始人Eric F ...

  5. <正则吃饺子>:关于java中对内存部分的简单总结整理

    在项目和一些群讨论中,经常看到对内存的处理,但是,自己确是一知半解的,基于此,就把这部分的知识简单的整理了下,知识点来源于网络博文,也一一标明出处,谢谢. package com.love.malin ...

  6. jQuery名字冲突 noConflict()方法

    今天检查项目的时候发现一个jquery变量$的控制权让渡问题,原因是: 开发这个模块的同事使用了一个日历插件,把$的控制权让出了,就导致了加载完这个页面后再加载其他页面就会报出$不是一个函数的错误. ...

  7. K-S Test

    K-S test, test for the equality of continuous, one-dimensional probability distribution that can be ...

  8. storm事件管理器EventManager源码分析-event.clj

    storm事件管理器定义在event.clj中,主要功能就是通过独立线程执行"事件处理函数".我们可以将"事件处理函数"添加到EventManager的阻塞队列 ...

  9. Spring入门第十六课

    接上一次讲课 先看代码: package logan.spring.study.annotation.repository; public interface UserRepository { voi ...

  10. Java线程安全与多线程开发

    互联网上充斥着对Java多线程编程的介绍,每篇文章都从不同的角度介绍并总结了该领域的内容.但大部分文章都没有说明多线程的实现本质,没能让开发者真正“过瘾”. 从Java的线程安全鼻祖内置锁介绍开始,让 ...