- 博客(17)
- 资源 (21)
- 收藏
- 关注
原创 apt-get指令的autoclean,clean,autoremove的区别
下面总结一下有关apt-get的常用但容易混淆的指令:apt-get autoclean: 如果你的硬盘空间不大的话,可以定期运行这个程序,将已经删除了的软件包的.deb安装文件从硬盘中删除掉。如果你仍然需要硬盘空间的话,可以试试apt-get clean,这会把你已安装的软件包的安装包也删除掉,当然多数情况下这些包没什么用了,因此这是个为硬盘腾地方的好办法。apt-get clean:
2013-02-28 09:21:40 118471 9
原创 rt-thread中用消息队列实现广播功能的一种方法
前面几天在逛论坛时看见有人说RTT中没有广播机制,于是心血来潮,想自己动手写一个,于是有了此文.1 广播机制分析广播,这个词首先让我想到Android下的广播机制,其是基于Binder来实现的,然而RTT并不是Linux内核的东东,也没有Binder这样的IPC,RTT有自己的一套IPC机制,前面的文章中有说到信号,互斥量,事件,邮箱和消息队列,我们得从这方面动动脑筋.再回来广播这个词,现实中,电
2013-02-26 21:04:35 8234 6
原创 rt-thread的IPC机制之消息队列源码分析
消息队列是另一种常用的线程间通讯方式,它能够接收来自线程的不固定长度的消息,并把消息缓存在自己的内存空间中。其他线程也能够从消息队列中读取相应的消息,而当消息队列是空的时候,可以挂起读取线程。而当有新的消息到达时,挂起的线程将被唤醒以接收并处理消息。消息队列是一种异步的通信方式。如上图所示,通过消息队列服务,线程或中断服务子程序可以将一条或多条消息放入消息队列。同样,一个或多个线程可以从消息队列中
2013-02-22 21:22:25 5138 1
原创 rt-thread的IPC机制之邮箱源码分析
邮箱服务是实时操作系统中一种典型的任务间通信方法,通常开销比较低,效率较高,每一封邮件只能容纳固定的4字节内容(针对32位处理系统,刚好能够容纳一个指针).如下图所示,线程或中断服务例程把一则4字节长度(典型的是一个指针)的邮件发送到邮箱中。而一个或多个线程可以从邮箱中接收这些邮件进行处理。RT-Thread采用的邮箱通信机制有点类型传统意义上的管道,用于线程间通讯。它是线程,中断服务,定时器向线
2013-02-22 08:43:02 7323 1
转载 嵌入式系统基础
本文从http://www.rt-thread.org/phpBB3/viewtopic.php?f=2&t=143整理而来.嵌入式系统基础1、嵌入式系统的定义(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向I
2013-02-21 20:46:41 6960 3
原创 rt-thread的IPC机制之事件源码分析
1 前言事件主要用于线程间的同步,与信号量不同,它的特点是可以实现一对多,多对多的同步。即一个线程可等待多个事件的触发:可以是其中任一一个事件进行触发唤醒线程进行事件的处理操作;也可以是几个事件都到达后才触发唤醒线程进行后续的处理。同样,事件也可以是多个线程同步多个事件。这种多个事件的集合可以用一个32位无符号整型变量来表示,变量中的一位代表一个事件,线程通过“逻辑与”或“逻辑或”与一个或
2013-02-21 15:24:19 4281
原创 rt-thread的IPC机制之互斥锁源码分析
互斥锁是管理临界资源的一种有效手段。因为互斥锁是独占的,所以在一个时刻只允许一个线程占有互斥锁,利用这个性质来实现共享资源的互斥锁保护。任何时刻只允许一个线程获得互斥量对象,未能够获得互斥量对象的线程被挂起在该互斥量的等待线程队列上。1 互斥锁控制块/** * Mutual exclusion (mutex) structure */struct rt_mutex{
2013-02-20 23:03:10 4604
原创 rt-thread的IPC机制之信号量源码分析
rt-thread操作系统的IPC(Inter-Process Communication,进程间通信)包含有信号量,互斥锁,事件,邮箱,消息队列.本文主要针对信号量.信号量是用来解决线程同步和互斥的通用工具,和互斥量类似,信号量也可用作资源互斥访问,但信号量没有所有者的概念,在应用上比互斥量更广泛。信号量比较简单,不能解决优先级翻转问题,但信号量是一种轻量级的对象,比互斥量小巧、灵活。因此在
2013-02-20 12:52:05 6153 1
原创 rt-thread的IO设备管理系统源码分析
rt-thread的IO设备管理模块为应用提供了一个对设备进行访问的通用接口,,并通过定义的数据结构对设备驱动程序和设备信息进行管理。从系统整体位置来说I/O管理模块相当于设备驱动程序和上层应用之间的一个中间层。I/O管理模块实现了对设备驱动程序的封装:设备驱动程序的实现与I/O管理模块独立,提高了模块的可移植性。应用程序通过I/O管理模块提供的标准接口访问底层设备,设备驱动程序的升级不会对上
2013-02-19 16:19:24 6537
原创 rt-thread的空闲线程源码分析
rt-thread的空闲线程在是线程空闲时执行的,它的主要操作是进行“垃圾回收”,这里的“垃圾”是待close掉的线程。1 空闲线程的实现在rt-thread线程启运时,系统会初始化空闲线程并启动它:/** * @ingroup SymstemInit * * This function will initialize idle thread, then start it.
2013-02-19 11:37:55 5545
原创 时钟中断是rt-thread的线程调度器的驱动力
1 系统时钟中断驱动引擎rt-thread操作系统中当线程时间片耗尽,或是当线程sleep一段时间后唤醒再被调度,此过程又是如何进行的呢?到底是谁来驱动这一过程的呢?答案是时钟中断源。且来看看时钟中断例程:在bsp/stm32f20x/drivers/board.c源文件中存在这么一个时钟中断例程代码:(这里以stm32f20x的MCU为例)/** * This is t
2013-02-19 10:04:49 5006
原创 rt-thread线程调度器获取当前最高优先级线程算法过程分析
上一章大概分析了rt-thread操作系统的线程调度器的源码,此文具体来讲讲rt-thread在调试时,是如何获取获得当前最高优先级线程的算法过程。之前已提到过,rt-thread采用了一个位图来实现此过程,在具体分析此过程之前,我们首先来看看此位图的结构及相关的一些参数变量。1 位图结构及相关参数1.1 位图结构在rt-thread的源码文件scheduler.c中在一位图映射表,如下定义:co
2013-02-18 22:29:19 6199
原创 rt-thread线程调度器源码分析
1 前言RT-Thread中提供的线程调度器是基于全抢占式优先级的调度,在系统中除了中断处理函数、调度器上锁部分的代码和禁止中断的代码是不可抢占的之外,系统的其他部分都是可以抢占的,包括线程调度器自身.系统总共支持256个优先级(0 ~ 255,数值越小的优先级越高,0为最高优先级,255分配给空闲线程使用,一般用户不使用。在一些资源比较紧张的系统中,可以根据情况选择只支持8个或32个优先
2013-02-17 18:03:43 7782
原创 rt-thread线程源码分析
rt-thread操作系统是一个多线程的操作系统,线程对于rt-thread来说是一个很重要的概念,因此,必须掌握它。1 线程控制块的数据结构/** * Thread structure */struct rt_thread{ /* rt object *///这里就是rt_object的结构,其实也可以用rt_object parent来定义,估计线程在早些时候并没有这么
2013-02-17 14:10:16 10330 2
原创 rt-thread的定时器管理源码分析
1 前言rt-thread可以采用软件定时器或硬件定时器来实现定时器管理的,所谓软件定时器是指由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时器服务。而硬件定时器是芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入时钟,芯片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产生时钟中断。硬件定时器的精度一般很高,可以达到纳秒
2013-02-05 11:39:04 9875
原创 rt-thread的内核对象管理系统分析
rt-thread采用内核对象管理系统来访问和管理所有内核对象.首先来看看rt-thread的内核对象是如何定义的:1 数据结构1.1 对象控制块在include/rtdef.h头文件中可以找到内核对象有结构定义:/** * Base structure of Kernel object */struct rt_object{ char name[RT_
2013-02-04 15:01:04 7336
原创 rt-thread的小内存管理算法分析
rt-thread的小内存管理是rt-thread操作系统默认堆内存管理算法,是一种简单的内存分配算法,当有可用的内存的时候,会从中分割一块来作为分配的内存,而剩下的则返回到动态内存堆中.此算法采用了一个静态链表来实现的,其源码文件在根目录下的src目录下,包含mem.c和mem.h两个文件.1 数据结构小内存管理算法将内存看成是一个个内存块:struct heap_mem{ /* ma
2013-02-03 12:31:42 6910 1
STM32F407_SDIO_Test_AutoDetectSdCardIn_TwiceMountIssue_DMA
2017-01-03
STM32F070_USB-FS-Device_Lib V1.0.0
2016-07-30
STM32F20xFlashLoader
2013-04-16
VA_X_Setup1845
2011-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人