Cstyle的札记,Freertos内核具体解释,第0篇

Cstyle的札记,Freertos内核具体解释,第0篇

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

    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等。

    
    
转载请注明出处
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118504.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月5日 上午10:00
下一篇 2021年12月5日 上午10:00


相关推荐

  • 打回来

    打回来

    2021年12月31日
    48
  • 关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解[通俗易懂]

    关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解[通俗易懂]lambda是Python编程语言中使用频率较高的一个关键字。那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多。这里,我们通过阅读各方资料,总结了关于Python中的lambda的“一个语法,三个特性,四个用法,一个争论”。欢迎阅读和沟通(个人微信:slxiaozju)。由于文章是从我的公众号上复制过来的,因此排版不整齐,但是内容绝对充实,欢迎关注公众…

    2022年8月12日
    9
  • Java三大特征

    Java三大特征Java面向对象的三大特征:封装、继承、多态封装和继承几乎都是为多态而准备的一、     封装首先,属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装:封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数

    2022年7月7日
    24
  • Manus回应裁员及传闻:公司业务正常,没跑路

    Manus回应裁员及传闻:公司业务正常,没跑路

    2026年3月15日
    2
  • Python实现简单截图识别获取文字符号信息[通俗易懂]

    Python实现简单截图识别获取文字符号信息[通俗易懂]版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weixin_42365530有时候我们百度出来一些自己需要信息后,想要直接复制粘贴(借鉴借鉴),提升工作效率,比如学校要求写什么加油稿,期末总结,思想汇报啊…额~,被请去办公室喝茶了,到时别说是博主教的啊!但是百度文库经常会限制我们复制…

    2022年5月20日
    46
  • Redis分布式锁的原理以及如何续期

    Redis分布式锁的原理以及如何续期面试问题 Redis 锁的过期时间小于业务的执行时间该如何续期 问题分析首先如果你之前用 Redis 的分布式锁的姿势正确 并且看过相应的官方文档的话 这个问题 Soeasy 我们来看很多同学在用分布式锁时 都是直接百度搜索找一个 Redis 分布式锁工具类就直接用了 其实 Redis 分布式锁比较正确的姿势是采用 redisson 这个客户端工具如何回答默认情况下 加锁的时间是 30

    2026年3月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号