rt-thread learning notes
rt-thread learning notes
2018-01-15
> 001 具有相同优先级的线程,每个线程的时间片大小都可以在初始化或创建该线程时指定
rt_thread_t rt_thread_create(const char *name,
void (*entry)(void *parameter),
void *parameter,
rt_uint32_t stack_size,
rt_uint8_t priority,
rt_uint32_t tick)
2018-01-16
> 002 rt_thread_create( ) & rt_thread_init( ) 两者区别
rt_thread_create( ) 动态创建线程,调用时才创建
rt_thread_init( ) 静态线程,编译时即创建OK
> 003 rt_thread_sleep( ) & rt_thread_delay( ) 两者区别
?...
> 004 软件定时器实现的机理
?...
> 005 rt_timer_create( ) & rt_timer_init( ) 两者区别
?...
> 006 rt_timer_delete( ) & rt_timer_detach( ) 两者区别
rt_timer_delete( ) 删除定时器,系统会把定时器从rt_timer_list链表中删除,然后释放定时器控制块所占用的内存,对应函数rt_timer_create( )
rt_timer_detach( ) 脱离定时器,系统会把定时器对象从系统容器的定时器链表中删除,但是定时器所占用的内存不会被释放,对应函数rt_timer_init( )
> 007 临界区:多个线程同时操作/访问同一块区域
> 008 任务同步的核心思想:在访问临界区的时候只允许一个(或一类)任务运行
> 009 操作系统中牵扯到关闭中断的操作,应做到关闭中断时间尽可能短,因为一旦关闭中断,系统将无法响应外部中断或事件,这很影响系统的实时性
使用得当,将会是一种快速、高效的同步方式
使用不当,将可能导致系统毫无实时性可言
> 010 为保证一行代码的互斥运行,最快速的方法是使用中断锁而非信号量或互斥量
> 011 调度器锁:给调度器上锁,系统依然能够响应外部中断,故在使用调度器锁进行任务同步时,需考虑任务访问的临界资源是否会被中断所修改
2018-01-19
> 012 互斥量同一线程多次获取,多次释放,几个意思
while()
{
result = rt_mutex_take(mutex, RT_WAITING_FOREVER);
result = rt_mutex_take(mutex, RT_WAITING_FOREVER); if(result != RT_EOK)
{
tc_stat(TC_STAT_END | TC_STAT_FAILED);
} tick = rt_tick_get();
while(rt_tickget() - tick < ); rt_mutex_release(mutex);
rt_mutex_release(mutex);
}
如果互斥量已经被当前线程线程控制,则该互斥量的持有计数加1,当前线程也不会挂起等待 ,即多次请求获取互斥量,会将该互斥量的持有计数加1
只有已经拥有互斥量控制权的线程才能释放它,每释放一次该互斥量,它的持有计数就减1,当该互斥量的持有计数为零时(即持有线程已经释放所有的持有操作),它变为可用,等待在该信号量上的线程将被唤醒
> 013 事件信息标记
如果信息标记同时设置了清除标记位,则当线程唤醒后将主动把事件标志清为零,否则事件标志将依然存在(即置1)
> 014 事件与信号量的区别
i. 事件的发送操作在事件未清除前,是不可累计的,而信号量的释放动作是累计的
ii. 信号量只能识别单一的释放动作,而不能同时等待多种类型的释放
2018-01-20
> 015 邮箱
邮箱的单位是邮件,邮件大小固定为4Byte,这4Byte可以是数据(短数据情况),也可以是数据存储区的地址(大数据传送情况)
邮箱可接收来自线程和中断服务的邮件,邮件内容是发送内容的一份拷贝
> 016 消息队列
能够将消息缓存至自己的内存区,并可接收来自线程和中断服务的消息,且消息长度任意
2018-05-29
>017 内存管理
1> 静态分区内存管理
> 核心为分配若干大小一致的内存块组成的内存池,根据需要分配若干个这样的内存池
> 这些内存池都是由分配它们的内存池控制块管理
> 内存池结构为链表的形式
2> 动态内存管理
> 最好不要在中断服务程序中分配或释放动态内存块,这可能导致当前上下文被挂起等待
a> 小内存管理算法(<2M)
b> 大内存SLAB管理算法
rt-thread learning notes的更多相关文章
- Mybatis Learning Notes 1
Mybatis Learning Notes 主要的参考是博客园竹山一叶的Blog,这里记录的是自己补充的内容 实体类属性名和数据库不一致的处理 如果是实体类的结果和真正的数据库的column的名称不 ...
- RT Thread 通过ENV来配置SFUD,操作SPI Flash
本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread& ...
- Rust learning notes
Rust learning notes Rust Version 1.42.0 $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs ...
- STM32 + RT Thread OS 学习笔记[二]
串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1. 目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输 ...
- STM32 + RT Thread OS 串口通讯
1. 创建项目 a) 禁用Finsh和console b) 默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因 ...
- STM32 + RT Thread OS 学习笔记[四]
1. 补注 a) 硬件,打通通讯通道 若学习者购买了学习板,通常可以在学习板提供的示例代码中找到LCD的相关驱动代码,基本上,这里的驱动的所有代码都可以从里面找到. 从上面的示意图可见,M ...
- D3 learning notes
D3 https://d3js.org/ 数据驱动文档显示, 利用 SVG HTML CSS技术. D3.js is a JavaScript library for manipulating doc ...
- .Net memory management Learning Notes
Managed Heaps In general it can be categorized into 1) SOH and 2) LOH. size lower than 85K will be ...
- Coursera, Machine Learning, notes
Basic theory (i) Supervised learning (parametric/non-parametric algorithms, support vector machine ...
随机推荐
- bat基础知识
1.打日志:使用重定向 eg:call test.bat>log/test.log 2.不关闭cmd窗口:使用pause eg: 结果: ps:注意,在自动化运维的时候,比如创建自动发版的脚本的 ...
- bitset常用用法&&简单题分析
Preface bitset,还是一个比较好用的STL,可以给一些题目做到神奇的常数优化(\(O(\frac{原来的复杂度}{机器的位数(32位or64位)})\)) 关于一些具体的函数等内容可以参考 ...
- PHP 文件写入和读取(必看篇)
文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...
- 1013 C. Photo of The Sky
传送门 [http://codeforces.com/contest/1013/problem/C] 题意 输入一个n代表n颗星星,输入2n个数,其中任意两个数代表一颗行星的坐标,问你把n个星星围起来 ...
- What is 软件工程
话说新的一学期,有一门叫软件工程的专业课,作为计算机科学与技术专业的学生,在上课前有几个问题 1.软件工程顾名思义是学软件,可是软件这个词范围还是挺大的,那到底学的是哪方面,是编程?设计APP?还是一 ...
- js异步回调
简单理解:js是单线程的,Ajax请求远程数据.IO等会很耗时,引起堵塞可能会引起反应时间太长页面失去反应. 回调:A函数作为一个参数传给B函数,执行完B后再执行A: 同步回调: function A ...
- NumsCount
package com.home.test; import java.util.Arrays; public class NumsCount { public void getNumCount(int ...
- Leetcode——258.各位相加【水题】
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所 ...
- 转角遇见——Software
第一部分:结缘计算机 从五岁开始读书,懵懵懂懂,从小就听长辈们说一定要考一个好大学,高三老师们就更是说:“过了高考,人生就无忧了”.于是似乎,高考就好像是我自出生以来这么多年的唯一愿景.高考成绩下来后 ...
- react 动态获取数据
如果reander()里面的dom元素是动态获取的,就要将函数放到setSTATE()里面执行