Elmagnifico's Blog

云深不知归处

FreeRTOS中croutine源文件分析

嵌入式,FreeRTOS,croutine

协程 在FreeRTOS中中,使用到了一种C语言实现的多任务计数,专业的定义叫做协程(coroutine),顾名思义,这是一种协作的例程, 跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。 意思就是说协程不需要每次调用的时候都为任务准备一次空间,我们知道像ucos这种操作系统,它内置的多任务是需要在中断过程中切换堆栈的,开销较大,...

协程到底是怎么一回事

嵌入式,FreeRTOS,croutine

线程 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。 另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使...

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,当然根据板子的内存大小,外设数量,封装不同可能使用的启动文件并不相同。 但总的来...