hahachenchen789的博客

What does not kill me,makes me stronger.

FreeBSD-musb_otg文件详解

musb_otg.c文件是FreeBSD中为Beaglebone Black提供的usb控制器源码,涉及到了endpoint的初始化配置,还有控制、中断、同步、批量四种传输方式的实现,非常重要。接下来详细解析该文件,不一定按照源码顺序,而是功能或者模块顺序。 1.文件头部的函数声明:能够看出文件...

2018-01-29 22:31:04

阅读数 268

评论数 2

RTEMS中断调用和初始化

以beagle为例: 在初始化阶段,boot_card函数中,会调用bsp_start(): void boot_card( const char *cmdline ) { rtems_interrupt_level bsp_isr_level; /* * Make...

2018-01-25 14:28:40

阅读数 185

评论数 0

RTEMS同步互斥与优先级处理算法

对于各个task线程之间需要同步互斥的情况,RTEMS提供信号量(semaphore)、自旋锁(SpinLock)、读写锁(RWLock)等互斥机制。 信号量: RTEMS支持二值信号量和计数信号量。二值信号量只能取0和1两个值,当值为0时,表示信号量不可用,当值为1,表示可以使用。而计数信号...

2018-01-24 22:32:32

阅读数 249

评论数 0

RTEMS线程调度算法(RMS)详解

RTEMS是以线程为基本调度单位的,调度算法基于优先级的抢占式线程调度,支持256个线程优先级。当然RTEMS值hi创建同等优先级线程,相同优先级的线程采用时间片轮转调度。调度器寻找下一个最高优先级就绪线程的时间是o(1),这是实时性得到保障的一个关键机制。 为了增强对用户应用需求的可扩展性,r...

2018-01-24 17:43:51

阅读数 602

评论数 0

RTEMS初始化线程(task)运行

RTEMS是如何运行第一个任务的?又是怎么样新建任务并进行切换的? 这要从RTEMS运行到boot_card开始说起,boot_card之前的初始化过程可参考之前的博文: http://blog.csdn.net/hahachenchen789/article/details/529295...

2018-01-24 14:05:20

阅读数 396

评论数 0

RTEMS与通用操作系统的不同点总结

RTEMS基于典型的实时操作系统涉及思路,与典型的通用操作系统(UNIX,windows)等差别很大。 一、系统调用方面 系统调用是应用程序访问操作系统的接口,通用操作系统中,操作系统与应用程序处于两个不同的CPU特权态,操作系统处于核心态,应用程序处于用户态,核心态可执行CPU特权指令,用户...

2018-01-24 11:17:12

阅读数 448

评论数 0

stl-stack

stack概述 stack是一种先进后出FILO的数据结构,只有一个出口(deque是两头可进出),stack允许新增元素,移除元素,取得最顶端元素,但除了最顶端,没有任何其他方法可以存取stack的其他元素,换言之,stack没有遍历行为。 将元素推入stack操作为push,推出操作为po...

2018-01-03 17:32:20

阅读数 81

评论数 0

c++-常对象

常对象: 在定义对象时指定对象为常对象,常对象中的数据成员为常变量并且必须要有初值 Time const t1(12,34,46); 这样ti中所有数据成员的值都不能修改 如果一个对象声明为常对象,那么则不能调用该对象的非const型成员函数,这是为了防止这些函数会修改数据成员。 常成员...

2018-01-01 22:26:10

阅读数 74

评论数 0

c++-基础知识-引用

引用的概念: 引用就是变量的别名,因此引用又称为别名,对一个变量的引用的操作,实际上都是对原来的变量的操作。 int a; int &b = a; 声明b是a的引用,&是引用声明符,不代表地址。对变量a声明引用并不会另开辟内存单元,b和a代表同一变量单元。 1.在...

2018-01-01 20:01:32

阅读数 73

评论数 0

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