Freertos是一个硬实时内核,支持众多的微处理器架构,我们能够从它的官网(www.freertos.ort)下载它的sourcecode,同一时候也能够看出它支持了几十种的微处理器架构,这些就不罗嗦了。之所以选择研究这个,是应为窥探RTOS内核的内幕一直每个做底层软件开发者的心愿,选择过好几种RTOS但他们有的是须要收费,有的不太成熟也不够系统,有的尽管比較成熟可是系统太大不太适合研究。而freertos就不同了,它除了包括RTOS所须要的主要的东西之外最大的特点就是开源+简单而且支持了许多的MCU,而且提供了众多的demo供我们来參考,它的核心内涵仅仅有3个文件,其它的功能能够通过一些plus来逐渐丰富其内核的功能。
    Freertos眼下最新的版本号是8.0.1从其官网下载下来之后我们就能够逐渐来分析其内核的实现了。这里首先从文件夹结构開始。
+-FreeRTOS-Plus    Contains Freertos+ components and demo projects.
+-FreeRTOS Contains the FreeRTOS real time kernel sourcefiles and demo projects
    +-Demo      Contains the demo application projects.
        +-Common    The demo application files that are used by all the demos.
+-Dir x The demo application build files for port x
+-Dir y The demo application build files for port y

+-Source Contains the real time kernel source code.

        +-include   The core FreeRTOS kernel header files
¦
+-Portable Processor specific code.
¦
+-Compiler x All the ports supported for compiler x
+-Compiler y All the ports supported for compiler y
+-MemMang The sample heap implementations
    内核的文件夹结构如上,我们可看到它结构非常分明把内核的核心代码跟processor硬件相关的部分合理的分开,这样我们就能非常easy把Freertos移植到其它的硬件平台上去了,我们是基于atmel公司arm cortex-m3内核的MCU AT91SAM3X/A来细致研究其内核的架构和实现。它的代码在FreeRTOSv8.0.1\FreeRTOS\Demo\CORTEX_ATSAM3X_Atmel_Studio文件夹下,我们双击project根文件夹下的批处理他就能自己主动把须要的代码复制到我们的project根文件夹下的相关文件夹下,然后使用SI来建立工程读代码了,或者使用Ateml官方提供的ateml studio工具来打开工程文件来编译工程,可是要注意的是它编译的时候会报一个错误,这个是正常的,仅仅是一个善意的提醒,我们凝视掉报错的地方即可了。
    乍一看,似乎内核代码非常多,事实上真正必须的最小的系统须要的文件非常少,必备的文件例如以下:
1.tasks.cqueue.c and list.c 必须的
2. timers.c  implement software timer  可选
3. andcroutine.c  implement  co-routine functionality 可选
4. heap_x.c  必须,MemMang文件夹以下的文件,提供了内存管理的功能,建议用户自己实现,同一时候内核提供了3个參考方案,客户能够使用我们的开发工具里面自带的mollac库或者自己实现。
5.针对我们选择的MCU这里还须要有其它的一些HW相关的东西,比方CMSIS针对某个特定的开发工具的相关配置文件,如makfile,配置文件等。支持差点儿我们知道的全部的开发工具:IAR,MDK,GCC等。

转载请注明出处

Cstyle的札记,Freertos内核具体解释,第0篇的更多相关文章

  1. 鸿蒙内核源码分析(fork篇) | 一次调用,两次返回 | 百篇博客分析OpenHarmony源码 | v45.03

    百篇博客系列篇.本篇为: v45.xx 鸿蒙内核源码分析(Fork篇) | 一次调用,两次返回 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内 ...

  2. 鸿蒙内核源码分析(寄存器篇) | 小强乃宇宙最忙存储器 | 百篇博客分析OpenHarmony源码 | v38.02

    百篇博客系列篇.本篇为: v38.xx 鸿蒙内核源码分析(寄存器篇) | 小强乃宇宙最忙存储器 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪 ...

  3. ANDROID L——Material Design具体解释(动画篇)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  4. linux内核自己添加模块(内核版本:3.0.101)

    做内核驱动第一步都是学习如何添加模块,这是基础,有了这个基础,剩下就是写代码了. 由于2.4到2.6内核版本的更新,无论是系统调用还是模块添加机制都有了巨大的变化,本人也因此饱经挫折,最后在3.0.1 ...

  5. linux0.11内核源码剖析:第一篇 内存管理、memory.c【转】

    转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July  ...

  6. 鸿蒙内核源码分析(管道文件篇) | 如何降低数据流动成本 | 百篇博客分析OpenHarmony源码 | v70.01

    百篇博客系列篇.本篇为: v70.xx 鸿蒙内核源码分析(管道文件篇) | 如何降低数据流动成本 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...

  7. 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 百篇博客分析OpenHarmony源码 | v69.01

    百篇博客系列篇.本篇为: v69.xx 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说 ...

  8. 鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基础 | 百篇博客分析OpenHarmony源码 | v68.01

    子曰:"质胜文则野,文胜质则史.文质彬彬,然后君子." <论语>:雍也篇 百篇博客系列篇.本篇为: v68.xx 鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基 ...

  9. 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源码 | v63.01

    百篇博客系列篇.本篇为: v63.xx 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...

随机推荐

  1. Hibernate学习之关系映射(转)

    一.一对多 "一对多"是最普遍的映射关系,简单来讲就如消费者与订单的关系.一对多:从消费者角的度来说一个消费者可以有多个订单,即为一对多.多对一:从订单的角度来说多个订单可以对应一 ...

  2. R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN

    基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...

  3. Socket缓冲区探讨,是否有拆包的方式?

    Socket缓冲区探讨 本文主要探讨java网络套接字传输模型,并对如何将NIO应用于服务端,提高服务端的运行能力和降低服务负载. 1.1 socket套接字缓冲区 Java提供了便捷的网络编程模式, ...

  4. nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException

    You should autowire interface AbstractManager instead of class MailManager. If you have different im ...

  5. epoll使用详解(精髓)

    epoll使用详解(精髓) epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中 ...

  6. smarty如何处理状态值的显示

    比如状态,有效或者无效.这个数据库中保存的是1或者2这样的字段. 显示在列表的时候不能是1或者2吧. 以前,我都是在后台foreach,处理的.感觉处理之后,前台就不灵活了.这个值就被替换成了文字. ...

  7. 脑波设备mindwave数据流二次开发示例

    数据流开发神念科技提供了两个文件ThinkGearStreamParse.h和ThinkGearStreamParse.cpp两个文件,主要接口为: 宏定义: /* Data CODE definit ...

  8. swig include使用方法

    {% block content2 %} {% include "footer.html" %} {% endblock %} include语句必须放到 block模块中,不然不 ...

  9. Easyui登陆页面制作

    一.登陆页面HTML <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Web ...

  10. Gridview编辑时Jquery自动计算自定义列(鼠标离开输入框Jquery计算)

    Jquery片段: <script type="text/javascript"> function compute(nbBoxQuantity, lblQuantit ...