【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

一:FreeRTOS系统下载

在官网上https://www.freertos.org/,找到下载入口。

或直接进入下载地址https://sourceforge.net/projects/freertos/files/latest/download?source=files。现在的最新版为10.0.0

  在开始移植FreeRTOS前,先介绍下FreeRTOS的源码,源代码目录结构如下所示:

  

FreeRTOS的源码比较少,其核心部分为tasks.c与list.c,其余的几个文件功能都是可选的。include文件夹里面的文件是操作系统相关的头文件,portable文件夹有些奇葩,里面有:

  

  里面的文件几乎都是与平台相关的的,如果你要删掉这里的文件时就必须小心了,并不是所有的文件都能删除的。注意MemMang这个文件夹,里面存放的是FreeRTOS自带的内存管理方案的源代码:

  

二:MDK下移植FreeRTOS

  MDK工程的新建工作。请参照 正点原子 的教程资料,或直接参考https://jingyan.baidu.com/article/454316ab7ad711f7a7c03a1a.html 此链接所示文章。

  我自己工程模板:

  

  (1)添加FreeRTOS源文件

    在模板下新建文件夹FreeRTOS文件夹用来存放FreeRTOS的系统文件,再在FreeRTOS的文件夹下新建include文件夹,用来存放h头文件,分开存放利于管理。

    

  (2)拷贝系统文件到指定文件夹(FreeRTOS文件夹)中:

    从FreeRTOS的源文件中找到croutine.c timers.c list.c queue.c tasks.c event_group.c 这6个源文件,位置为FreeRTOSv10.0.0->FreeRTOS->source,拷贝到FreeRTOS文件夹下

    

    从FreeRTOS的源代码中找到port.c文件,位置Source->portable->RVDS->ARM_CM3->port.c 拷贝至FreeRTOS文件夹

    

    从FreeRTOS的源文件中找到heap_4.c文件,位置source->portable->MemMang->heap_4.c,拷贝至FreeRTOS文件夹。

    

    完成移动的FreeRTOS文件目录 ,就这几个文件。

    

    

    (3)拷贝.h文件到指定文件夹(../FreeRTOS/include文件夹)中:

      拷贝FreeRTOS源代码下的include文件夹里的全部.h文件至新建立的include文件夹里,位置:source->include

      从FreeRTOS的源文件中找到portmacro.h文件拷贝至新建立的include文件夹里,文件位置:source->portable->RVDS->ARM_CM3->portmacro.h

      由于我使用的是keil-mdk作为开发工具,使用的是STM32F103VET6为目标芯片,所以需要从FreeRTOS的源文件中找到匹配开发工具与目标芯片的config.h的配置文件。文件在Demo文件夹中,把这个配置文件拷贝FreeRTOS文件夹内。配置文件位置在:

        ->Demo->CORTEX_STM32F103_Keil->FreeRTOSConfig.h。

      至此FreeRTOS操作系统所需要的所有文件已经全部移植完成。

    (4)在工程中添加各系统文件

      在工程中新建FreeRTOS文件夹,添加工程模板中FreeRTOS的所有文件。完成后的工作空间如下;

      

    至此,点击编译按钮,看是否可以通过编译,生成目标hex文件。

  

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建的更多相关文章

  1. 2019-9-16:渗透测试,基础学习,Linux下软件安装,环境搭建,笔记

    Centos linux下软件安装yum 通过分析rpm包头数据后,自动解决依赖关系,直接云端下载软件,根据不同版本系统获取不同软件信息,按顺序下载rpm包,安装软件yum search 软件名:搜索 ...

  2. 『与善仁』Appium基础 — 1、Android系统的测试环境搭建

    目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...

  3. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  4. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  5. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  6. 零基础学习Linux(二)网页乱码问题

    上次的博文零基础学习Linux(一)环境搭建中我们已经将Linux环境搭建完毕了,接下来我们就可以进行相关的操作了,在进行操作之前,我们先来看一下大家可能遇到的中文网页乱码问题. 1.问题演示 a)输 ...

  7. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  8. 零基础学习hadoop到上手工作线路指导

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

  9. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

随机推荐

  1. 继承Runnable 实现Synchronized 同步锁

    在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...

  2. java爬虫中jsoup的使用

    jsoup可以用来解析HTML的内容,其功能非常强大,它可以向javascript那样直接从网页中提取有用的信息 例如1: 从html字符串中解析数据 //直接从字符串中获取 public stati ...

  3. leetcode-139-单词拆分(递归超时,动归解决)

    题目描述: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字 ...

  4. leetcode-74-搜索二维矩阵

    题目描述:  编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: ...

  5. 06-图2 Saving James Bond - Easy Version (25 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  6. Mac下开机启动rc.common不生效的问题

    经过测试在10.12.6下/etc/rc.common不生效,原因是已经被launchd守护进程所取代,虽然保留着这个文件,但是基本是不起作用的. 如果要开机启动请直接使用launchd进行操作. 同 ...

  7. 更换bbr内核

    1:首先yum update -y更新到最新CentOS 7.3 1611cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core) 2: ...

  8. VS生成Map文件

    一.右键项目属性->链接器->启用增量链接:关闭,选择  否 (/INCREMENTAL:NO) 二.右键项目属性->链接器->调试-> 生成调试信息:是 (/DEBUG ...

  9. 《LeetBook》leetcode题解(14):Longest Common Prefix[E]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  10. Java多线程(一)初步了解

    1:线程 1.1:线程是什么?线程与进程. 进程:正在运行的程序.windows是多进程的系统.每一个进程有自己的内存区域,也就是每个进程都会占用一定的内存.一般打开应用程序就会有进程的了. 线程:进 ...