华的专栏

讨论与进步

Linux学习之源码2:start_kernel流程

一、X86的流程可以参考http://www.kerneltravel.net/kernel-book/第十三章%20启动系统/13.5.htm 二、arm的流程,在http://www.cnblogs.com/gangsaleisi/archive/2013/01/09/2851734.htm...

2016-01-30 21:37:15

阅读数:513

评论数:0

内核初始化-从start_kernel到init

如图所示,内核的初始化过程由start_kernel函数开始,至第一个用户进程init结束,调用了一系列的初始化函数对所有的内核组件进行初始化。其中,start_kernel、rest_init、kernel_init、init_post等4个函数构成了整个初始化过程的主线。 ...

2016-01-30 21:33:03

阅读数:968

评论数:0

Linux acpi off学习

ACPI的内容庞杂,学习ACPI至少可以帮助我们理解配置信息。这些信息从legacy PNP设备的配置,到多处理器,到NUMA,比如现在的Multiple Core的信息就只能从ACPI得到。Linux启动很多代码就是处理这些配置信息,比如Linux acpi off,IOAPIC设置等。 ...

2016-01-30 09:06:30

阅读数:3149

评论数:0

kernel的initcall函数

initcall函数的声明: /* include/linux/init.h */ /* initcalls are now grouped by functionality into separate   * subsections. Ordering inside the subsectio...

2016-01-30 08:19:11

阅读数:318

评论数:0

late_time_init

在timer_init()中,我们将late_time_init初始化为x86_late_time_init(): [cpp] view plain copy static __init void x86_late_time_init(voi...

2016-01-29 10:14:14

阅读数:574

评论数:0

wireshark解析rtp协议,流媒体中的AMR/H263/H264包的方法

抓到完整的流媒体包之后,用wireshark打开,其中的包可能不会自动映射成RTP+AMR/H263/H264的包,做如下修改操作即可: 1.  把UDP 包解析成RTP/RTCP包。选中UDP包,右键,选择Decode As,选RTP 2.  把RTP Payload映射成实际的媒体格式。首...

2016-01-28 14:46:56

阅读数:2706

评论数:0

ffmpeg 使用小记

最近一个月里由于工作需要做了一些视频转换的工作,快要回家过年了,做些小记以便以后查阅! 一、安装        系统运行环境:ubuntu12.04 64bit        安装过程:sudo apt-get install ffmpeg 二、命令参数       ...

2016-01-28 14:19:41

阅读数:247

评论数:0

Linux电源管理(2)_Generic PM之基本概念和软件架构

1. 前言 这里的Generic PM,是蜗蜗自己起的名字,指Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些手段是在嵌入式Linux普及之前的PC或者服务器时代使用的。在那个计算机科学的蛮荒时代...

2016-01-26 18:02:45

阅读数:316

评论数:0

linux 电源管理

ACPI共有六种状态,分别是S0到S5,它们代表的含义分别是:   S0--实际上这就是我们平常的工作状态,所有设备全开,功耗一般会超过80W;   S1--也称为POS(Power on Suspend),这时除了通过CPU时钟控制器将CPU关闭之外,其他的部件仍然正常工作,这时的功耗一般在...

2016-01-23 10:16:22

阅读数:384

评论数:0

Linux时间子系统之一:clock source(时钟源)

clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器,计数器只能单调地增加,直到溢出为止。时钟源是内核计时的基础...

2016-01-23 10:15:43

阅读数:953

评论数:0

Linux时间子系统之二:表示时间的单位和结构

人们习惯用于表示时间的方法是:年、月、日、时、分、秒、毫秒、星期等等,但是在内核中,为了软件逻辑和代码的方便性,它使用了一些不同的时间表示方法,并为这些表示方法定义了相应的变量和数据结构,本节的内容就是阐述这些表示方法的意义和区别。 /**********************...

2016-01-23 10:14:52

阅读数:578

评论数:0

Linux时间子系统之三:时间的维护者:timekeeper

本系列文章的前两节讨论了用于计时的时钟源:clocksource,以及内核内部时间的一些表示方法,但是对于真实的用户来说,我们感知的是真实世界的真实时间,也就是所谓的墙上时间,clocksource只能提供一个按给定频率不停递增的周期计数,如何把它和真实的墙上时间相关联?本节的内容正是要讨论这一点...

2016-01-23 10:13:54

阅读数:464

评论数:0

Linux时间子系统之四:定时器的引擎:clock_event_device

早期的内核版本中,进程的调度基于一个称之为tick的时钟滴答,通常使用时钟中断来定时地产生tick信号,每次tick定时中断都会进行进程的统计和调度,并对tick进行计数,记录在一个jiffies变量中,定时器的设计也是基于jiffies。这时候的内核代码中,几乎所有关于时钟的操作都是在machi...

2016-01-23 10:12:57

阅读数:325

评论数:0

Linux时间子系统之五:低分辨率定时器的原理和实现

利用定时器,我们可以设定在未来的某一时刻,触发一个特定的事件。所谓低分辨率定时器,是指这种定时器的计时单位基于jiffies值的计数,也就是说,它的精度只有1/HZ,假如你的内核配置的HZ是1000,那意味着系统中的低分辨率定时器的精度就是1ms。早期的内核版本中,内核并不支持高精度定时器,理所当...

2016-01-23 10:12:05

阅读数:387

评论数:0

Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件。内核从2.6.16开始加入了高精度定时器架构。在实现方式上,内核的高分辨率定时...

2016-01-23 10:10:58

阅读数:1728

评论数:0

Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()

我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子系统,在时间子系统中提供了一些用于延时或调度的API,例如msleep,hrtimer_nanosleep等等,这些API基于低分辨率定时器或高精度定时器来实现,本章的内容就是讨论这些方便、好用的API是如何利用定时...

2016-01-23 10:09:57

阅读数:701

评论数:0

Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)

在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事...

2016-01-23 10:08:33

阅读数:473

评论数:0

Linux电源管理(1)_整体架构

1. 前言 在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做的很好了,如植物的落叶,如动物的冬眠,等等...

2016-01-22 11:37:30

阅读数:470

评论数:0

YUV格式分析

在摄像头之类编程经常是会碰到YUV格式,而非大家比较熟悉的RGB格式. 我们可以把YUV看成是一个RGB的变种来理解.    YUV的原理是把亮度与色度分离,研究证明,人眼对亮度的敏感超过色度。利用这个原理,可以把色度信息减少一点,人眼也无法查觉这一点。   Y...

2016-01-21 11:58:06

阅读数:269

评论数:0

sysfs文件系统

sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。该文件系统的目录层次结构严格按照内核的数据结构组织。除了二进制文件外(只有特殊场合才使用),sysfs文件内容均以ASCII格式保存,且一个文件只保存一个数据,另外,一个文件不可大于一个内存页(通常为4096字...

2016-01-21 10:16:33

阅读数:581

评论数:1

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