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. 【福利】送Scala语言入门视频学习资料

    没有套路真的是送!! 想要学好大数据,scala语言是必不可少的,spark和kafka等大数据重要组件都是用scala写的,想要彻底搞懂这些组件是如何运作的必须得看源码,而学习scala是看源码的必 ...

  2. [UWP 自定义控件]了解模板化控件(7):支持Command

    以我的经验来说,要让TemplatedControl支持Command的需求不会很多,大部分情况用附加属性解决这个需求会更便利些,譬如UWPCommunityToolkit的HyperlinkExte ...

  3. WPF开发汽车采样机上位机软件

    由于项目需要,需开发同一套汽车.火车.皮带采样机的上位机软件. 看过之前的上位机软件,老版本都是DelPhi.VB开发,稍微新语言开发的是采用winform开发.要不就是使用组态软件. Delphi语 ...

  4. BGFX 渲染引擎中着色器代码的调试方法

    在实时渲染的图形开发中,着色器代码(Shader)越来越复杂,于是单纯的靠经验和不断试错的开发和调试方法早已不能满足实际需求.使用调试工具进行调试,成为开发中重要的方法.Bgfx 是一款跨平台.抽象封 ...

  5. Linux服务器更换主板后,网卡识别失败的处理方法

    1)现象说明公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重 ...

  6. CF 1047 C. Enlarge GCD

    传送门 [http://codeforces.com/contest/1047/problem/C] 题意 给你n个数,移除最少的数字使剩下的数字GCD大于初始GCD 思路 需要一点暴力的技巧,先求出 ...

  7. 实现基于SSH的门票管理系统开发的质量属性

    我要做的是一个基于SSH的门票售卖系统,在系统中常见的质量属性有:可用性.可修改性.性能.安全性.易用性. 可用性方面: 可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况 ...

  8. Hitchhiker 是一款开源的 Restful Api 测试工具

    Hitchhiker 是一款开源的 Restful Api 测试工具 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到 Hitchhiker 是一款开源的 Restf ...

  9. [2017BUAA软工]第0次作业

    第0次作业 Part 1:结缘计算机 1. 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 我跟这篇博客中的作者相似的地方在于,我们都在一个比较早的阶段接触了计算机,我家乡的经济在全国来 ...

  10. HDU 2043 密码

    http://acm.hdu.edu.cn/showproblem.php?pid=2043 Problem Description 网上流传一句话:"常在网上飘啊,哪能不挨刀啊-" ...