linux
音乐伴我远行
这个作者很懒,什么都没留下…
展开
-
linux的运行模式:Runlevel详细解析
<br /><br />linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel,同样,当linux操作系统关闭时也要经历另外几个不同的runlevel,下面我们就准备详细介绍一下runlevel,并向您展示一些小技巧来让您的linux系统避免不必要的重启动。<br />runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中的Normal,safemode,和Command prompt only。进入每个runl转载 2011-05-16 23:07:00 · 531 阅读 · 0 评论 -
一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。
前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2) 在主线称中起动线程1,打印“this is thread转载 2012-03-27 21:57:57 · 1623 阅读 · 0 评论 -
linux输入子系统
输入子系统由 驱动层、输入子系统核心、事件处理层 三部分组成。一个输入事件,如鼠标移动、键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序。 驱动层:将底层的硬件输入转化为统一事件形式,想输入核心(Input Core)汇报。 输入子系统核心:承上启下转载 2012-09-19 16:29:31 · 521 阅读 · 0 评论 -
深入理解linux内核v4l2框架之videobuf
Videobuf下面来介绍以下videobuffer相关的一些东西。V4L2核心api提供了一套标准的方法来处理视频缓冲,这些方法允许驱动实现read(),mmap(), overlay()等操作。同样也有方法支持DMA的scatter/gather操作,并且支持vmallocbuffer(这个大多用在USB驱动上)。videobuf层功能是一种在v4l2驱动和转载 2013-04-01 17:03:19 · 851 阅读 · 0 评论 -
USB枚举过程
从驱动开发网看到一篇《USB枚举详细过程分析》,依据自己的理解和经验对原文稍加改动。本文仅供参考,一些顺序并不是固定的。 本文描述的是Windows系统的USB枚举过程,但对嵌入式系统自行开发的USB主机驱动程序也有参考价值。 USB枚举详细过程剖析 1.主机集线器检测到新设备 主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线转载 2013-03-26 11:34:52 · 517 阅读 · 0 评论 -
Soft Irq & work queue & tasklet
Soft Irq、tasklet和work queue并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。本文重点在于介绍这三者之间的关系。(函数细节将不会在本文中出现,可以参考文献,点这里)(1)上半部和下半部的区别上半部指的是中断处理转载 2013-04-12 17:49:54 · 631 阅读 · 0 评论 -
linux内核SPI总线驱动分析(一)
下面有两个大的模块:一个是SPI总线驱动的分析 (研究了具体实现的过程)另一个是SPI总线驱动的编写(不用研究具体的实现过程)SPI总线驱动分析 1 SPI概述 SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应转载 2013-04-18 10:28:19 · 691 阅读 · 0 评论 -
linux内核SPI总线驱动分析(二)
SPI驱动编写 简而言之,SPI驱动的编写分为:1.spi_device就构建并注册 在板文件中添加spi_board_info,并在板文件的init函数中调用spi_register_board_info(s3c_spi_devs,ARRAY_SIZE(s3c_spi_devs));spi_register_board_info(s3c_spi_devs,ARRAY_SIZ转载 2013-04-18 10:30:33 · 668 阅读 · 0 评论 -
linux驱动程序调试常用方法
驱动程序开发的一个重大难点就是不易调试。本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是:利用printk查看OOP消息利用strace利用内核内置的hacking选项利用ioctl方法利用/proc 文件系统使用kgdb一、利用printk这是驱动开发中最朴实无华,同时也是最常用和有效的手段。scull驱动的main.c第338行如下,就是使用printk转载 2013-05-20 17:52:41 · 596 阅读 · 0 评论 -
make clean、 make mrproper、make distclean的区别
内核编译时, 到底用make clean, make mrproper还是make distclean在编译内核时, 被make clean, make mrproer 和 make distclean搞的纠结, 稍微总结一下这三者之间的区别:解压内核源码包后, 到内核源代码目录树的顶层目录, 执行# make helpCleaning targets:clean转载 2013-06-14 15:01:00 · 509 阅读 · 0 评论 -
Linux 下编译安装OpenCV
Cmake的安装OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。ubuntu下安装cmake比较简单,apt-get install cmake如果觉得自带的版本不符合要求,可以下载安装包。下载最新版的安装包:http://www.cmake.org/cmake/resources/software.html这里转载 2013-07-24 11:57:08 · 829 阅读 · 0 评论 -
多用户(windows)远程登录ubuntu 10.04 解决方案
ubuntu是典型的多用户多任务操作系统,通过XDMCP方式可以轻松的实现远程的多用户同时登录ubuntu任务 下文主要简介windows远程控制控制ubuntu的主要方法 1.vnc方式 因为ubuntu中默认已经有了vncserver,所以在windows客户端可以通过vnc轻松实现对它远程控制,但是,因为vnc方式的远程控制需要主机端登录图形用户界面才可以进行,对于多用户的操作不转载 2012-02-01 09:51:06 · 815 阅读 · 0 评论 -
Linux文件格式详解
本文讨论了 UNIX/LINUX平台下三种主要的可执行文件格式:a.out(assembler and link editor output汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executableand Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通过描述 ELF文件加载转载 2012-01-13 00:01:00 · 3246 阅读 · 0 评论 -
extern "C"
概述 extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 (1) 被extern "C"限定的函数或变量是extern类型的 extern是转载 2011-08-03 17:53:33 · 347 阅读 · 0 评论 -
函数fork与vfork的区别与联系详解
创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(),当然某些进程如init等是作为系统启动的一部风而被内核创建的。1.fork函数介绍#include #include pid_t fork (void );正确返回:父进程中返回子转载 2011-08-08 12:03:54 · 487 阅读 · 0 评论 -
关于linux内核中多进程(线程)间同步和互斥
Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导致竞态,linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景。Linux内核是多进程、多线程的操作系统,它提供了相当完整的内核同步方法。内核同步方法列表如下:中断屏蔽转载 2011-08-18 11:17:42 · 1921 阅读 · 0 评论 -
设备驱动中环形缓冲区数据存储和读写同步的实现
先通过自定义数据结构,对缓冲区做几个基本的指针和参数进行定义:char * buffer_start, *buffer_end 指向buffer起始端和结束端的指针char *wp ,*rp转载 2011-08-22 12:36:57 · 744 阅读 · 0 评论 -
pkg-config的使用
一、编译和连接 一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的 不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用 -L 参数,也会造转载 2011-12-01 16:35:10 · 1043 阅读 · 0 评论 -
ubuntu NFS安装
解决mount.nfs:access denied by server while mounting经早上调试,已解决问题 最近学习NFS,用本地测试.以下是我的测试过程 环境 ubuntu 10.4 vm 7.1终端ifconfig 得到 ubuntu资料INET ADDR 192.168.0.4BCAST 19转载 2011-11-11 15:34:20 · 411 阅读 · 0 评论 -
alsa配置
alsa配置 (by hanlray(at)hotmail.com)alsaalsa的配置文件是alsa.conf,一般在/usr/share/alsa目录下,通常包括在alsa library包中。不应该用alsa.conf来进行配置,因为该文件会随着package版本的变化而更新,而应该使用/etc/asound和~/.asoundrc,因为alsa.conf引入了这两个文件。合乎转载 2011-12-08 11:34:01 · 4365 阅读 · 0 评论 -
理解和使用ALSA的配置文件
最近在做音频相关的驱动,使用到了Alsa。过程中涉及到一些硬件的设置和测试,需要了解Alsa的配置文件的写法,稍微学习了一下,这里把自己的一些简单理解记录如下。 1 相关说明 1.1 网站资源 Alsa项目的官方网址:http://www.alsa-project.org/ Alsa LIB API Reference:http://www.alsa-pro转载 2011-12-08 11:49:08 · 1711 阅读 · 0 评论 -
Linux SCP用法
当两台LINUX主机之间要互传文件时可使用SCP命令来实现,建立信任关系之后可不输入密码。 把你的本地主机用户的ssh公匙文件复制到远程主机用户的~/.ssh/authorized_keys文件中 假设本地主机linux100,远程主机linux200 一,在linux100主机里的用户 运行 #ssh-keygen -t rsa 结果如下 QUOTE: G转载 2012-01-10 15:03:24 · 623 阅读 · 0 评论 -
LINUX动态链接库高级应用
在《LINUX下动态链接库的创建与应用》一文中,我介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函数,装入指定的动态链接库中指定的函数,然后加以执行.程序中使用很少的动态函数时,这样的做法尚可.如果程序需要调用大量的动态函数,那么采用这样的编程手段将是非常繁复的,所以我们必须使用一种更为聪明的办法,以减少代码量,提转载 2012-01-10 12:06:13 · 454 阅读 · 0 评论 -
Linux下Wi-Fi配置工具2
上回说到,linux下面的Wi-Fi配置工具,说是江湖多事,风起云涌。。。嗯,这回是真的要动手配置了。各种麻烦啊,想死的心都有了有木有啊。 尝试用iwconfig话说上回说用iwconfig配置Wi-FI,这次一上手就从这里开始了。各种尝试啊。1)首先,要把网卡down掉ifdown wlan01)获得各个能用的AP的参数iwlist w转载 2013-10-19 10:29:50 · 940 阅读 · 0 评论