【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建
【零基础学习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环境搭建的更多相关文章
- 2019-9-16:渗透测试,基础学习,Linux下软件安装,环境搭建,笔记
Centos linux下软件安装yum 通过分析rpm包头数据后,自动解决依赖关系,直接云端下载软件,根据不同版本系统获取不同软件信息,按顺序下载rpm包,安装软件yum search 软件名:搜索 ...
- 『与善仁』Appium基础 — 1、Android系统的测试环境搭建
目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 零基础学习Linux(二)网页乱码问题
上次的博文零基础学习Linux(一)环境搭建中我们已经将Linux环境搭建完毕了,接下来我们就可以进行相关的操作了,在进行操作之前,我们先来看一下大家可能遇到的中文网页乱码问题. 1.问题演示 a)输 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 零基础学习hadoop到上手工作线路指导
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- 【零基础学习iOS开发】【01-前言】01-开篇
本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...
随机推荐
- 确定 RN 中方法的 queue
 如果不指定,每一个模块,都会生成自己的一个串行队列. 可以通过强行声明一个队列来指定所有方法都在这个队列执行 - (dispatch_queue_t)methodQueue { return di ...
- Spring 事务相关点整理
Spring和事务的关系 关系型数据库.某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务. Spring很显然不是事务性资源,但是它可以管理事务性资源,所以Spring和 ...
- SUSE Linux Enterprise Server设置IP地址、网关、DNS
说明: ip:202.118.83.247 子网掩码:255.255.255.0 网关:202.118.83.2 dns:8.8.8.8 / 8.8.4.4 1.设置ip $ vi /etc/sysc ...
- 什么是WCF(转)
什么是WCF(Windows Communication Foundation(WCF)) 大家可以百度一下了解什么是WCF.当然有些人看到密密麻麻的黑框白字就懒的读.即使读了 可能也没明白确切的含义 ...
- (转)Mysql主从复制搭建及详解
http://www.cnblogs.com/kevingrace/p/6256603.html---------Mysql主从同步(1)-主从/主主环境部署梳理 原文:http://blog.csd ...
- 菜单根据菜单ID向下递归
第一步:我们根据这个类定义数据库,并插入菜单数据 DROP TABLE IF EXISTS `jrbac_menu`; CREATE TABLE `jrbac_menu` ( `id` ) NOT N ...
- JavaScript设计模式-11.桥梁模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- box-shadow向元素添加阴影效果
div{ box-shadow: 10px 10px 5px #888888;} 语法:box-shadow: h-shadow v-shadow blur spread color inset; 值 ...
- InterView之C/CPP
CPP 引用 什么是"引用"?申明和使用"引用"要注意哪些问题? 答:引用就是某个目标变量的别名(alias),对应用的操作与对变量直接操作效果完全相同.申明一 ...
- win7下安装centos6.5后,开机无法进入选择双系统启动界面,只能启动centos的解决办法
1.centos6.5下打开终端,进入/boot/grub ,vim grub.conf 将default=0 改为1,重启 2.重启后,又只能进入win7了.这个好解决.下载一个easyBCD,具体 ...