RTOS
文章平均质量分 65
weixin_42385536
这个作者很懒,什么都没留下…
展开
-
freeRTOS小结——前言
总结freeRTOS的想法已经很有一段时间了。之前是因为换工作的一系列事情,一致没能做成。现在换了工作,到了新的公司,项目上的事情也已经上手,总算是空出来干这个事情了。 这次总结freeRTOS主要是以官方网站上给出的“Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf”为蓝本,结合一些自己在实...原创 2018-06-04 21:49:22 · 435 阅读 · 0 评论 -
freeRTOS移植——初步分析
基于之前的分析,freeRTOS的移植主要集中在以下部分,· 中断管理,包括ISR的配置、中断的关闭和开启等。· TASK切换处理,包括触发TASK切换、TASK切换的出栈和压栈操作等。· freeRTOS的基本配置和可选配置· Heap管理,它们对应的源文件如下· portable.h,申明了中断管理和TASK切换管理相关的函数申明,用...原创 2018-06-10 11:48:22 · 8384 阅读 · 1 评论 -
freeRTOS移植——ZYNQ7000简介
ZYNQ 7000使用AMR CortexA9 CPU,移植freeRTOS之前首先需要了解它的基本结构和配置,侧重于一下几点· 寄存器分布· 中断配置· 配套的汇编指令集· IRAM和DRAMPS:关于ARM的学习,个人认为,最好是以项目为驱动,为自己设定一个小项目,诸如这里讨论的移植freeRTOS,或是经典的跑马灯实验。基于设定的项目,直接去A...原创 2018-06-10 11:42:28 · 7325 阅读 · 0 评论 -
freeRTOS小结——任务管理
概述freeRTOS中推荐TASK运行流程如下图所示,TASK无限循环于接收消息和处理消息的过程中。实际上这也是大部分嵌入式系统中,TASK都采用这样的运行流程。这样的设计,非常适合将软件模块移植到到TASK中:消息即对应软件模块对外提供的功能接口,TASK即不停的监听接口并进行相应处理。当然freeRTOS也支持TASK在执行完成指定处理后,注销自己,实际上,这也是某些OS将TASK细分为pro...原创 2018-06-10 11:37:57 · 2989 阅读 · 0 评论 -
freeRTOS小结——嵌入式系统的背景知识
freeRTOS的移植和维护,了解嵌入式系统的一些基本原理和相关背景是十分必要的。本人在最初从事RTOS的移植和维护时,遇到的最大的困难就是不了解这些基本原理和相关背景,跳了无数的坑,想想都是泪。 以下都是自己原创,源于在RTOS移植和维护中各种跳坑经验,欢迎转载和分享,但请注明出处。 好了,废话不多说,进入正题。嵌入式系统架构如下图所示,当前处理器核(core)大...原创 2018-06-04 22:13:40 · 1467 阅读 · 0 评论 -
freeRTOS小结——Heap管理
freeRTOS没有强制提供Heap管理机制,只是给出了几类推荐方案,用于支持RTOS所需存储空间的分配回收管理。Heap_1:使用栈管理heap,分配的存储空间在回收时,必须保证在其之后分配的存储空间都已经回收后才能进行,可使用该类分配方式,不建议进行存储空间的回收。Heap_2:使用链表管理heap,可能产生碎片,不建议使用Heap_3:使用标准C提供的malloc和free管理heap,He...原创 2018-06-10 11:31:59 · 2540 阅读 · 1 评论 -
freeRTOS小结——概述
OS的主要功能是封装底层硬件,向用户提供多个虚拟的CPU,让用户可以并行地运行多个任务。freeRTOS也不例外,其将这些任务记为TASK。某些OS中将TASK细分为进程(process)和线程(thread),但freeRTOS并不区分,TASK就是在这些虚拟CPU上运行的指令集合。在CPU上运行freeRTOS时,main函数的处理流程大致如下图所示,实际上大部分的OS在CPU上运行时,mai...原创 2018-06-10 11:31:01 · 460 阅读 · 0 评论 -
freeRTOS小结——资源管理
概述资源管理是指嵌入式系统中,针对TASK 和中断处理程冠希访问CPU以外的硬件资源(如某段存储空间,某个外设)的控制。嵌入式系统中,一段时间内访问硬件资源的TASK和中断处理程序数量总是有限的。因此OS需要提供一套机制来保证访问硬件资源的TASK数量收到限制。以一个简单的UART输出为例,假定,· TASK 1需要通过UART输出字符串“[TASK 1]:ABC.\n”· ...原创 2018-06-17 10:33:38 · 948 阅读 · 0 评论 -
freeRTOS小结——中断管理
概述本章所述中断管理主要是针对中断处理程序的管理。RTOS中,中断处理程序由用户自定义,是类似于TASK一样的存在,中断处理程序有自己的栈,可以支持低优先级中断处理程序被高优先级中断处理程序打断。实际上,个人认为TASK就是以中断处理程序为原型演进而来。考虑到OS的很多功能,如时间片机制、TASK切换(后边将会讲到)都是基于中断处理程序来完成的。如之前所述,中断处理程序具有比常规用户指令集合更高的...原创 2018-06-17 10:29:37 · 12677 阅读 · 2 评论 -
freeRTOS小结——事件管理
概述事件(Event)用于任务之前的同步和通信。freeRTOS中包含的事件分为如下几类,· 消息(Message),用于任务之前通信· 信号量(Semaphore)和互斥信号量,用于任务之前的同步(控制多个任务对同一资源的访问)本小节主要讨论消息,信号量和互斥信号量主要用于资源管理,将在后边讲到。基于消息的任务间通信过程如下图所示,发送者任务将消息发送给邮...原创 2018-06-17 10:21:30 · 3110 阅读 · 0 评论 -
freeRTOS移植——前言
总结freeRTOS移植是我一直想做的事情,之前为前任公司做过比较小众的ZSP nano的freeRTOS移植,还做过ZC706的ucos移植(说起来那个还比较有意思,移植了一个双ucos的系统,两个CPU都跑ucos,还发现了一些ucos的bug)。刚好本周用新入手的ZYNQ开发板尝试了freeRTOS的移植,因为freeRTOSg官网代码已经支持,所以移植很是顺利,几乎没有什么代码修改,就完成...原创 2018-06-10 12:03:08 · 901 阅读 · 0 评论