Elmagnifico's Blog

云深不知归处

FreeRTOS中heap源文件分析(四)

嵌入式,FreeRTOS,heap

heap源文件分析 总算到了heap_4,这个方案基本算是FreeRTOS中非常常用的内存管理方案了。 heap_4与heap_2一样都使用了最佳匹配算法,但不像方案2那样,不能合并相邻的空闲内存区域,它会将相邻的空闲内存块合并成一个更大的块(包含一个合并算法)。 heap_4.c功能简介 可用于重复分配、删除任务、队列、信号量、互斥量等等的应用程序。 可以用于分配和释放随...

FreeRTOS中heap源文件分析(五)

嵌入式,FreeRTOS,heap

heap源文件分析 heap_5.c 是在V8.1.0版本新增的 我们之前说了heap_4会出现的碎片问题,这个方案同样实现了heap_4.c中的合并算法,并且允许堆栈跨越多个非连续的内存区。 也就是说我们初始化设置的堆栈空间可以不连续,可以有多块堆栈空间共通作为内存来使用。 heap_5.c功能简介 可用于重复分配、删除任务、队列、信号量、互斥量等等的应用程序。 可以用...

FreeRTOS中event_groups源文件分析

嵌入式,FreeRTOS,heap

event_groups源文件分析 /** * An event group is a collection of bits to which an application can assign a * meaning. For example, an application may create an event group to convey * the status of v...

FreeRTOS中heap源文件分析(二)

嵌入式,FreeRTOS,heap

heap源文件分析 heap_2与heap_1不同,它使用最佳匹配算法,会选择最合适的内存大小来分配,但是他不会合并相邻的空闲内存,造成的后果自然就是会有内存碎片,或者说内存碎片多的情况下,可能造成无法分配的情况。 heap_2功能简介 heap_2可以释放内存,可以用于重复的分配和删除具有相同堆栈空间的任务、队列、信号量、互斥量等等,并且不考虑内存碎片的应用程序。 不能用在...

FreeRTOS中heap源文件分析(三)

嵌入式,FreeRTOS,heap

heap源文件分析 我们都知道其实库函数里就有内存分配和释放函数 原型 extern void *malloc(unsigned int num_bytes); extern void free(void *ptr); 头文件 #include 或者 #include 功能 mallo...

FreeRTOS中heap源文件分析(一)

嵌入式,FreeRTOS,heap

heap介绍 目前FreeRTOS提供了5种内存堆管理方案,分别对应heap1/2/3/4/5,五个文件,有复杂的也有简单的。其中最简单的管理策略也能满足很多应用的要求,比如对安全要求高的应用,这种应用不允许动态内存分配的。 FreeRTOS也允许你自己实现内存堆管理,甚至允许你同时使用两种内存堆管理方案。同时实现两种内存堆允许任务堆栈和其它RTOS对象放置到高速的内部RAM,应用数据放...

Atom、Markdown与github

MarkdownPad2,sublime text 3,Activate Power Mode

Markdown 博客的文章一直都是Markdown格式的,而且用多了,基本格式语法什么的都记住了,也很好用。 再加上github一直有对Markdown的拓展,让其内容更加丰富了,所以选择使用Markdown感觉很好。 不像Latex什么的格式那么复杂,而且还有各种模板什么的。 MarkdownPad2 之前一直用 MarkdownPad2 来写博客的文章。 但是 Markdo...

STM32启动文件分析

嵌入式,bootloader,STM32

STM32启动文件分析 STM32的启动文件相当于就是bootloader,平时虽然对外都是屏蔽的级别,但是有时候还是需要知道一下的。 特别是了解了当前这个板子的bootloader之后,对于其他的板子的启动,其实也是类似的。 一般来说STM32系列的启动文件都是startup_stm32fxxxx.s,当然根据板子的内存大小,外设数量,封装不同可能使用的启动文件并不相同。 但总的来...

STM32启动方式分析

嵌入式,boot,STM32

STM32F767启动方式分析 一般嵌入式开发流程就是先建立一个工程,再编写源文件,然后进行编译,把所有的.s文件和.c文件编译成一个.o文件,再对目标文件进行链接和定位,编译成功后会生成一个.hex文件和调试文件,接下来要进行调试,如果成功的话,就可以将它固化到flash里面去。 启动代码是用来初始化电路以及用来为高级语言写的软件作好运行前准备的一小段汇编语言,是任何处理器上电复位时的...

FreeRTOS中list源文件分析

嵌入式,FreeRTOS,list

list源文件分析 之所以先拿list分析,是因为list与其系统核心部分关联比较小,而且又只是链表,比较容易理解。 其实最重要的是list文件很短… 环境 编译环境:keil 固件库:Keil.STM32F7xx_DFP.2.9.0 目标开发板:STM32F767IG 目标系统:FreeRTOS 9.0 注释 老样子,先来看看文件注释说了什么,如何介绍这个文件的。 /*...