嵌入式Linux中文站

Linux电源管理-休眠与唤醒

阅读(125)

1.休眠方式 在内核中,休眠方式有很多种,可以通过下面命令查看 # cat /sys/power/state //来得到内核支持哪几种休眠方式. 常用的休眠方式有 freeze,standby, mem, disk freeze: 冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它standby, mem, disk方式高 standby: 除了冻结I/O设备外,还会暂停系统,唤醒较快,耗电比其它 mem, disk方式高 mem: 将运行状态数据存到内存,并关闭外设,进入等

V4L2驱动开发要点

阅读(85)

首先来看Read/Write,如果VIDIOC_QUERYCAP调用返回的v4l2_capability参数中,V4L2_CAP_READWRITE被设置成真了的话,就说明支持Read/Write I/O。这是最简单最原始的方法,它需要进行数据的拷贝(而不是像memory map那样只需要进行指针的交换),而且不会交换元数据(比如说帧计数器和时间戳之类的可用于识别帧丢失和进行帧同步),虽然它是最原始的方法,但因为其简单,所以对于简单的应用程序比如只需要capture静态图像是很有用的。 如果使用Read/

Linux内核的栈回溯与妙用

阅读(269)

1 前言 说起linux内核的栈回溯功能,我想这对每个Linux内核或驱动开发人员来说,太常见了。如下演示的是linux内核崩溃的一个栈回溯打印,有了这个崩溃打印我们能很快定位到在内核哪个函数崩溃,大概在函数什么位置,大大简化了问题排查过程。 网上或多或少都能找到栈回溯的一些文章,但是讲的都并不完整,没有将内核栈回溯的功能用于实际的内核、应用程序调试,这是本篇文章的核心:尽可能引导读者将栈回溯的功能用于实际项目调试,栈回溯的功能很强大。 本文详细讲解了基于mips、arm架构linux内核栈回溯原理,通过

在Linux上如何得到一个段错误的核心转储

阅读(205)

本周工作中,我花了整整一周的时间来尝试调试一个段错误。我以前从来没有这样做过,我花了很长时间才弄清楚其中涉及的一些基本事情(获得核心转储、找到导致段错误的行号)。于是便有了这篇博客来解释如何做那些事情! 在看完这篇博客后,你应该知道如何从哦,我的程序出现段错误,但我不知道正在发生什么到我知道它出现段错误时的堆栈、行号了! 。 什么是段错误? 段错误 segmentation fault 是指你的程序尝试访问不允许访问的内存地址的情况。这可能是由于: 试图解引用空指针(你不被允许访问内存地址 0 ); 试图

Linux内核页回收swappiness参数有着什么作用

阅读(149)

这两天看微博上有人讨论swappiness相关问题,mysqlperformanceblog上也有人说将swappiness设成0后MySQL被意外 kill掉,另外自己所在团队线上也遇到过类似问题,大家对这个参数的含义可能还不是很清楚,个人尝试写篇文章详细解释下这个参数。 本文主要尝试解释两个问题: 1. swappiness的确切含义是什么,它对内核进行页回收机制的影响。 2. swappiness设置成0,为什么系统仍然可能会有swap发生。 一. 关于内存分配与页回收(page reclaim)

linux驱动之定时器的使用

阅读(368)

Linux的内核中定义了一个定时器的结构: #includelinux/timer.h struct timer_list { struct list_head list; unsigned long expires; //定时器到期时间 unsigned long data; //作为参数被传入定时器处理函数 void (*function)(unsigned long); }; 利用这个结构我们可以在驱动中很方便的使用定时器。 一: timer的API函数: 初始化定时器: void init_tim

Linux内核特性之VDSO

阅读(288)

这段时间看Linux内核源码的时候,经常碰到vdso这个东西(像在Feature-fixup中,获取时间等操作时),网上搜了一下,才知道了含义,原来这是Linux为了解决和glibc兼容而想出的绝招

linux kernel内存映射实例分析

阅读(465)

作者:JHJ(jianghuijun211@gmail.com) 日期:2012/08/24 欢迎转载,请注明出处 引子 现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我都会正对ARM平台分析kernel的内容。 正文 在linux内存管理中,有两个资源非常重要,一个是虚拟地址,一个是物理地址。听起来似乎是废话,实际上内存管理主要就是围绕这两个