keil-rtx
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的更多相关文章
- Keil RTX systick 初始化
在STM32F215上移植Keil的RTX操作系统,随便设置下就能好使,但是当我想知道systick到底是怎么设置的时候,就得翻翻代码了,原来在 rt_HAL_CM.h中以一个内联函数的形式定义的 _ ...
- Keil RTX使用 os_mut_init 报Hard Fault 错误解决记录
首先确定你的软件是在互斥信号初始化的位置,在以下几个位置,将会报Hard Fault 错误: (1).os_sys_init_user 用户线程创建之前 (2).os_tsk_create_user之 ...
- Keil的RTX特性
Keil RTX是为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统.它允许您创建同时执行多个功能的程序,并帮助创建更好的结构和更容易维护的应用程序. 特征 具有源代码的免版权,确定性R ...
- STM32F429i-DISCO FreeRTOS keil STM32CubeMX
目标: 在STM32F429 Disco开发板上用FreeRTOS双线程点亮双闪led. 准备: 0. STM32F429i-DISCO 1. keil ARMMDK 5.13 2. STM32Cub ...
- [RTOS]--uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点
本篇博客就来细数这几个RTOS的特点. 以下内容均来自官方网站或者官方手册Feature的Google翻译的加了我的一些调整,没有任何主观成分. 1. FreeRTOS FreeRTOS是专为 ...
- uTenux——软件底层驱动组织结构介绍
经过第一节对uTenux初步认识和第二节对uTenux\AT91SAM3S4C开发板的硬件结构的介绍,这一节我们将要学习的是uTenux\AT91SAM3S4C的软件底层驱动. 在悠龙公司的官网或者u ...
- CMSIS_RTOS_Tutorial自译中文版
一.序言 本资料是Trevor Martin编写的<The Designers Guide to the Cortex-M Processor Family>的摘要,并得到Elsevier ...
- MDK editions for Nuvoton devices
10 Sep 2018 MDK editions for Nuvoton devices For users of Nuvoton devices, Keil® MDK increases its a ...
- keil_rtx特点
Keil RTX是一个专为ARM及Cortex M系列处理器开发的无版税的确定的实时操作系统.它允许工程师建立多任务同步并行的程序软件,同时也能帮助使程序代码更加结构化和便于维护. 产品亮点 所有 ...
- CMSIS-RTOS 时间管理之时间延迟Time Delay
时间管理 Time Management 此RTOS除了可以把你的应用代码作为线程运行,它还可以提供一些时间服务功能,使用这些功能你就可以访问RTOS的一些系统调用. 时间延迟Time Delay 在 ...
随机推荐
- Eclipse_插件_03_反编译插件_Eclipse Class Decompiler
一.插件优势 此插件比jd-eclipse更加强大,反编译之后不会像jd-eclipse一样出现注释符号. 二.插件下载地址 1.github https://github.com/cnfree/Ec ...
- Python 实现「食行生鲜」签到领积分
用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱.钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的. 今天我们就用 Python 来实现自动 ...
- bzoj 3376 [Usaco2004 Open]Cube Stacking 方块游戏——带偏移量的并查集
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3376 带偏移量的并查集. #include<iostream> #include ...
- exosip 和 pjsip 简介
oSIP oSIP的开发开始于2000年7月,第一个版本在2001年5月发 布,到现在已经发展到3.x了.它采用ANSI C编写,而且结 构简单小巧,所以速度特别快,它并不提供高层的SIP会话 控制 ...
- Ternary Calculation
Ternary Calculation Time Limit : /2000ms (Java/Other) Memory Limit : /65536K (Java/Other) Total Subm ...
- 反射-Class
package classes; public class ClassDemo1 { public static void main(String[] args){ Foo foo1 = new Fo ...
- centos6.5下PF_RING安装方法
参考的是这个大牛的文章:http://blog.csdn.net/fan_hai_ping/article/details/6705170 系统环境:centos6.5 开发版 PF_RING版本:P ...
- AngularJS 2.0 学习
前提: 下载和安装node.js 和 npm. https://nodejs.org/en/download/ npm安装 需要自己google 安装好之后,可以在cmd窗口中查看安装的版本 node ...
- vc++图像显示
显示资源中的图片 (1)从资源中装入位图 ● 定义位图对象数据成员CBitmap m_Bitmap; ● 调用CBitmap成员函数LoadBitmap(),如m_Bitmap.LoadBitmap( ...
- WebView根据加载的内容来控制其高度
一.先设置WebView的高度为0,然后在其加载结束后的代理方法中根据contentSize设置其高度 //初始话一个UIWebView: self.webView = [[[UIWebView al ...