目录:
1.freertos占用多少ram
2.freertos占用内存
3.freertos占用多大内存
4.freertos占用空间大小
5.freertos对内存的要求
6.freertos占用flash
7.freertos rt-thread
8.freertos资源消耗
9.freertos需要多大ram
10.freertos ram要求
1.freertos占用多少ram
1、FreeRTOS的学习资料(1)FreeRTOS的源码下载学习一个操作系统前,首先要下载对应的源码,用于研究和学习FreeRTOS的源码下载链接如下:https://sourceforge.net/projects/freertos/files/FreeRTOS/。
2.freertos占用内存
页面图示如下:
3.freertos占用多大内存
注:下载之后的文件为:FreeRTOSv202012.00-LTS.exe.qbl(2)FreeRTOS在线API指南FreeRTOS提供了在线的API接口的指南,这对于开发和学习都是非常的友好的,在线API指南的网址为:
4.freertos占用空间大小
http://web.ist.utl.pt/~ist11993/FRTOS-API/index.html在线指南的示意图如下:
5.freertos对内存的要求
注:在线指南里面有freeRTOS的各个功能模块的介绍、函数、使用示例(3)在线应用指南除了在线的API应用指南之外,还有一个在线的开发指导手册,是非常好用的一份手册:https://www.freertos.org/RTOS.html。
6.freertos占用flash
图示如下:
7.freertos rt-thread
2、FreeRTOS移植到MCU上说明:本文的移植基于STM32F103进行的,其它系列MCU的移植也是类似,可以作为参考硬件平台:STM32F103ZET6;软件平台:MDK529FreeTROS版本:。
8.freertos资源消耗
FreeRTOS Kernel V10.4.3(1)在工程目录下新建FreeRTOS文件夹,该文件夹用于存放FreeRTOS相关的文件。
9.freertos需要多大ram
(2)在FreeRTOSv10.2.1\FreeRTOS\Source路径下找到FreeRTOS的源码,将其拷贝到工程中的FreeRTOS文件夹中。
10.freertos ram要求
其中头文件和源码源文件是全部要用到的,不做任何删除portable文件夹是和硬件平台,软件开发环境相关的文件FreeRTOS为了让用户移植简单,帮用户做了很多工作打开portable文件夹如下:
(3)打开工程,在工程中添加一个专用来存放FreeRTOS的Group
将FreeRTOS的源文件,内存管理文件,硬件接口文件统统添加到这个FreeRTOS这个Group中,如下图:
内存管理文件在FreeRTOS\portable\MemMang文件夹下,FreeRTOS提供了五种内存管理方案,对于移植来说,随便选一种方案都是可以的但是heap_4有内存碎片管理的功能,对内存碎片可以自动监控和收集,所以选择这个内存管理会更好。
port.c文件在FreeRTOS\portable\RVDS路径下找到与自己使用的MCU内核的文件夹:
(4)添加头文件路径,需要添加两个路径。
(5)编译整个工程
编译完成之后,会提示打不开FreeRTOSConfig.h这个文件这是因为FreeRTOS源码中并没有提供这个文件这种情况下有两种办法:第一、自己动手写一个(哈哈,个人觉得这个对一般人来说不现实);第二、找一个可以直接用的。
仔细找找会发现,其实官方在很多平台下都移植了FreeRTOS去官方的demo中找,FreeRTOSv10.2.1\FreeRTOS\Demo路径下存放的全是官方移植的demo在此路径下找到CORTEX_STM32F103_Keil文件夹,此文件夹是官方基于STM32F103和MDK平台移植的demo。
(其他平台参考该方式类似的查找)在此文件夹下找到FreeRTOSConfig.h文件。
将其拷贝到源码的头文件中。重新进行编译。
这种情况下,只要使能一个有关的宏定义为1即可以,如下:在FreeRTOSConfig.h文件中将宏INCLUDE_xTaskGetCurrentTaskHandle定义为1,使能该函数,重新编译一下,应该就不会报错了。
3、三个很重要的宏定义首先我们需要对FreeRTOS的几个很重要的问题要有一个认识: FreeRTOS触发第一个任务是在SVC_Handler中断中进行的; 切换任务是在PendSV_Handler中断中进行的;
系统节拍中断是在SysTick_Handler中进行的在我们自己移植的项目中,官方的文件中对3个函数的定义是没有的,需要我们自己进行一些修改在官方的提供的文件中,实现了另外3个相关的函数,名字分别是:。
vPortSVCHandler,xPortPendSVHandler,xPortSysTickHandler所以,我们只需要根据自己所用的MCU环境进行相应的替换即可以对应上了在FreeRTOSConfig.h头文件中做一下宏定义就可以了。
注意要将自己的原来3个空函数注释掉//这三个宏定义非常重要 #define xPortPendSVHandler PendSV_Handler #define vPortSVCHandler SVC_Handler
#define xPortSysTickHandler SysTick_Handler其中,xPortSysTickHandler是系统滴答定时器中断,用于给FreeRTOS提供运行的心跳节拍的,代码示意如下:
voidxPortSysTickHandler( void ){ /* The SysTick runs at the lowest interrupt priority, so when this interrupt * executes all interrupts must be unmasked. There is therefore no need to * save and then restore the interrupt mask value as its value is already * known – therefore the slightly faster vPortRaiseBASEPRI() function is used * in place of portSET_INTERRUPT_MASK_FROM_ISR(). */
vPortRaiseBASEPRI(); { /* Increment the RTOS tick. */if( xTaskIncrementTick() != pdFALSE ) {
/* A context switch is required. Context switching is performed in * the PendSV interrupt. Pend the PendSV interrupt. */
portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; } } vPortClearBASEPRIFromISR(); }
注:这个系统滴答定时器的作用是非常重要的,它提供了freeRTOS的系统心跳,是整个系统的心脏,没有它系统是无法工作的!至此,freeRTOS移植到STM32F103的步骤已经完成,如有疑惑,欢迎交流指正!
作者简介:本人95后技术男,从事嵌入式软件开发,专注于技术成长和技术分享目标是每天进一步一点点,通过技术改变自己的生活,创造自己的美好未来!如果你也对嵌入式感兴趣,欢迎关注我呀!声明:本文作者:嵌入式之入坑笔记。
文章版权归作者所有,转载请注明出处!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容