FreeRTOS-内存管理源码分析

FreeRTOS 总共提供了5种内存分配方法: heap_1.c heap_2.c heap_3.c heap_4.c heap_5.c 这五种分配方式各有各的优势,用户可根据应用情况按需使用,在分析源码之前先了解一下内存管理的一些相关知识,其中内存碎片一直是内存管理致力于解决的一项问题,内存...

2019-03-08 14:02:00

阅读数 126

评论数 0

FreeRTOS-空闲任务、低功耗源码分析

FreeRTOS在启动任务调度时会自动创建一个空闲任务,空闲任务主要在系统没有其它任务或任务都处于挂起状态时执行,它被系统设置为最低优先级,不会去抢占其它高优先级的任务,从而既能保证系统总有至少一个任务可以运行又不干扰到其它任务。空闲任务里面可以执行一些辅助操作,比如任务删除自身时由于无法立马释放...

2019-03-05 11:32:31

阅读数 195

评论数 0

FreeRTOS-任务通知源码分析

任务通知可用来代替信号量、消息队列、事件标志位,而且使用任务通知的形式效率会更高,它不需要像信号量那样创建队列和操作队列,任务通知的存储变量来自任务控制块中,当宏 configUSE_TASK_NOTIFICATIONS 被定义为1时就可以使用任务通知相关的函数了。任务通知的接口函数同样存在发送和...

2019-02-27 18:10:59

阅读数 81

评论数 0

FreeRTOS-事件标志组源码分析

事件标志组的具体实现过程和前面信号量实现方式非常相似,信号量只能和单个任务或事件进行同步,而事件标志组能和多个任务或事件进行同步。事件标志组顾名思义就是用事件位来表示某个任务是否发生了,发生了的话就标记一个标志位,然后通知接收任务去做相应的处理工作。当然标志可以以组的形式出现,就是接收任务同时要求...

2019-02-26 14:13:33

阅读数 101

评论数 0

FreeRTOS-信号量源码分析

信号量主要用来进行资源管理和任务同步,FreeRTOS中信号量分为二值信号量、计数型信号量、互斥信号量、递归互斥信号量。 二值信号量: 一个只有一个队列项,队列项大小为0的队列,队列只有满和空两种状态。一般用于中断和任务之间的同步,例如串口通信,在串口通信中断服务函数中接收到串口发送过来的数据后...

2019-02-23 16:20:14

阅读数 103

评论数 0

FreeRTOS-队列源码分析

FreeRTOS的队列是用于任务与任务、任务与中断之间通信的一种数据结构。各个任务之间的数据通信通过一段共同的存储空间按需获取和发送数据,这段存储空间采用队列的形式进行访问,可以采用动态或静态的方式来创建这段内存。任务往队列中发送数据和接收数据通常采用先进先出(FIFO)的存储缓冲机制,当然也可以...

2019-02-17 18:03:44

阅读数 76

评论数 0

FreeRTOS-时间管理(延时、系统时钟)源码分析

在写FreeRTOS的应用程序时,经常需要使用到延时函数,当执行到延时函数时,会将任务从就绪状态变为延时等待状态,这里会放弃CPU的占用权进入阻塞态,将CPU让给其它任务使用直到延时时间结束会重新变为就绪态。FreeRTOS中的延时函数有两种模式,一种是相对模式,另一种是绝对模式。相对延时函数使用...

2019-02-14 08:40:01

阅读数 139

评论数 0

FreeRTOS-任务删除、挂起、恢复源码分析

由于后面的源码分析会涉及到一些任务的操作函数,所以这里先分析一下任务的一些相关操作,包括任务的删除、挂起、恢复操作。 任务删除: #if ( INCLUDE_vTaskDelete == 1 ) void vTaskDelete( TaskHandle_t xTaskToDelete ...

2019-02-11 15:12:32

阅读数 172

评论数 0

FreeRTOS-任务切换源码分析

前面分析了启动任务调度器的源码,在创建好空闲任务后启动滴答定时器(systick)后就调用SVC中断跳转到任务去执行,但作为OS我们一般不会只创建一个任务,都是有多任务需求才使用OS,后续任务一旦多了,就涉及了到了任务切换,这也是OS的核心,如何根据任务的优先级的和当前状态来切换任务,怎么保证每个...

2019-02-09 22:03:51

阅读数 230

评论数 0

FreeRTOS-任务创建源码分析

任务创建是FreeRTOS系统启动的第一个步骤,前面在启动调度器的时候先创建了空闲任务,然后再由调度器跳到任务里面去执行。任务创建函数里面做了很多的工作,先会为任务堆栈和任务控制块分配内存并初始化它们,然后将任务添加到就绪列表里面,等待调度器来调用。 任务创建的接口定义如下: BaseType...

2019-02-07 00:07:38

阅读数 94

评论数 0

FreeRTOS-列表和列表项源码分析

前面在调度器启动之前先创建了两个任务,一个启动任务一个空闲任务,然后调度器会跳到启动任务去执行。在分析任务创建的源码之前,需要先分析一下列表和列表项,创建任务实际上就是初始化任务的各个成员变量(即初始化任务控制块的成员),在初始化完后这个任务就会进入到就绪状态,等待调度器来执行它,其中任务控制块就...

2019-02-04 18:12:53

阅读数 118

评论数 0

FreeRTOS-启动任务调度器源码分析

本章基于FreeRTOS的启动任务调度器源码分析,后续将会上传其它我对FreeRTOS的源码分析过程及理解,首先来认识一下任务调度器。 任务调度器: 任务调度器主要用于实现任务的切换,任务并不是我们所熟知的函数,而是指一段占有独立内存空间,专门用于处理一组逻辑事件的任务块。最直观的对比理解...

2019-02-02 22:42:10

阅读数 128

评论数 0

git指令备忘录

参考廖雪峰的Git教程整理的,官网链接: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 git分区:工作区->(add)暂...

2018-10-02 17:05:12

阅读数 72

评论数 0

Android使用串口(基于android-serialport-api)

运行平台: CPU:全志V40 Android版本:6.0.1 关于安卓设备上使用串口,谷歌官方在github上有提供代码实例,里面有JNI的代码和串口API的java文件,工程的地址如下: https://github.com/cepr/android-serialport-api 官...

2018-06-07 10:32:14

阅读数 11157

评论数 11

JAVA快速入门-反射

Tips: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这...

2018-02-16 21:03:16

阅读数 148

评论数 0

JAVA快速入门-泛型

Tips: 泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入...

2018-02-15 19:33:40

阅读数 166

评论数 0

JAVA快速入门-JNI_C调用JAVA

上一篇实现了 JAVA 调用 C 语言函数的过程,当然 C 也能通过 JNI 来访问 JAVA 的方法和成员变量,实际上具体调用什么函数以及如何实现这些具体的操作,都在 jni 的手册中有进行讲解。下面以程序来实现 C 调用 JAVA 方法或成员变量的过程。先是一个简单的访问 JAVA 静态成员方...

2018-02-15 16:04:02

阅读数 101

评论数 0

JAVA快速入门-JNI_JAVA调用C

Tips: JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本...

2018-02-15 00:21:27

阅读数 117

评论数 0

JAVA快速入门-内部类

Tips: (1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。 (2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。 (3)、...

2018-02-13 15:57:19

阅读数 102

评论数 0

JAVA快速入门-包和权限

Tips: 为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。在包的基础上再引入权限的概念,它包含类的访问权限和类成员的访问权限。 下面先以程序来说明一下 JAVA 中包的概念。 /* 包的关键字“pack...

2018-02-13 15:09:30

阅读数 114

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭