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的更多相关文章

  1. Mybatis Learning Notes 1

    Mybatis Learning Notes 主要的参考是博客园竹山一叶的Blog,这里记录的是自己补充的内容 实体类属性名和数据库不一致的处理 如果是实体类的结果和真正的数据库的column的名称不 ...

  2. RT Thread 通过ENV来配置SFUD,操作SPI Flash

    本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread& ...

  3. Rust learning notes

    Rust learning notes Rust Version 1.42.0 $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs ...

  4. STM32 + RT Thread OS 学习笔记[二]

    串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1.   目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输 ...

  5. STM32 + RT Thread OS 串口通讯

    1.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因 ...

  6. STM32 + RT Thread OS 学习笔记[四]

    1.  补注 a)      硬件,打通通讯通道 若学习者购买了学习板,通常可以在学习板提供的示例代码中找到LCD的相关驱动代码,基本上,这里的驱动的所有代码都可以从里面找到. 从上面的示意图可见,M ...

  7. D3 learning notes

    D3 https://d3js.org/ 数据驱动文档显示, 利用 SVG HTML CSS技术. D3.js is a JavaScript library for manipulating doc ...

  8. .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 ...

  9. Coursera, Machine Learning, notes

      Basic theory (i) Supervised learning (parametric/non-parametric algorithms, support vector machine ...

随机推荐

  1. Luogu P1447 [NOI2010]能量采集

    Preface 最近反演题做多了看什么都想反演.这道题由于数据弱,解法多种多样,这里简单分析一下. 首先转化下题目就是对于一个点\((x,y)\),所消耗的能量就是\(2(\gcd(x,y)-1)+1 ...

  2. Webpack 2 视频教程 001 - Webpack 简介

    这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的. 这个基本就是目前 ...

  3. Linux下分布式系统以及CAP理论分析

    CAP理论被很多人拿来作为分布式系统设计的金律,然而感觉大家对CAP这三个属性的认识却存在不少误区,那么什么是CAP理论呢?CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他 ...

  4. confluence上传文件附件预览乱码问题(linux服务器安装字体操作)

    在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...

  5. 定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)

    由于需要对网络设备做备份,备份文件是放到windows机器上的.现在需要将备份数据同步到linux备份机器上,想到的方案有三种: 1)将windows的备份目录共享出来,然后在linux服务器上进行挂 ...

  6. 理解使用static import 机制

    J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员.本文介绍这一机制的使用方法,以及使用过程中的注意事项. 在Java程序中,是 ...

  7. Notes of Daily Scrum Meeting(12.22)

    今天的团队任务总结如下: 团队成员 今日团队工作 陈少杰 进行网络连接的调试 王迪 优化搜索的算法 金鑫 准备前台的接口,查阅相关的资料 雷元勇 优化算法,对搜索进行测试 高孟烨 修改UI的接口,准备 ...

  8. 剑指offer:变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   思路 首先想到的解决方案是根据普通跳台阶题目改编,因为可以跳任意级,所以要 ...

  9. Alpha冲刺随笔集

    作业地址 项目名称:高校实验室信息化管理系统 团队成员 学号 姓名 031602636 许舒玲 031602237 吴杰婷 031602220 雷博浩 031602634 吴志鸿 181600107 ...

  10. 牛客OI周赛7-提高组

    https://ac.nowcoder.com/acm/contest/371#question A.小睿睿的等式 #include <bits/stdc++.h> using names ...