Linux
jixianghao
这个作者很懒,什么都没留下…
展开
-
守护进程(daemon)
ps命令看到的内核线程(thread)属于守护进程(daemon), 在操作系统中占据相当大的比例,当Linux操作系统启动以后,尤其是Xwindow也启动以后,你可以用”ps”命令查看系统中的进程,这时会发现很多以”[xxxxd]”结尾的进程名,这些进程就是内核线程。内核线程也可以叫内核任务,它们周期性地执行,例如,磁盘高速缓存的刷新,网络连接的维护,页面的换入换出等等。在Linux中,转载 2015-11-25 15:48:26 · 657 阅读 · 1 评论 -
通用串行总线
http://zh.wikipedia.org/zh-cn/%E9%80%9A%E7%94%A8%E4%B8%B2%E8%A1%8C%E7%B8%BD%E7%B7%9A通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字转载 2015-05-04 11:55:55 · 1935 阅读 · 0 评论 -
usb键鼠驱动分析
linux下的usb鼠标驱动在/drivers/hid/usbhid/usbmouse.c中实现1.加载初始化过程1.1模块入口[cpp] view plaincopymodule_init(usb_mouse_init); 1.2初始化函数[cpp] view plaincopy转载 2015-04-28 17:21:51 · 359 阅读 · 0 评论 -
一、usb子系统相关结构体
1. usb总线struct usb_bus { struct device *controller; int busnum; //总线号 const char *bus_name; //总线名 u8 uses_dma; u8 uses_pio_for_control; u8 otg_port; un转载 2015-04-28 15:39:07 · 542 阅读 · 0 评论 -
Linux设备模型(下)
内核中USB子系统的结构 我们已经知道了USB子系统的代码都位于drivers/usb目录下面,也认识了一个很重要的目录——core子目录。现在,我们再来看一个很重要的模块——usbcore。你可以使用“lsmod”命令看一下,在显示的结果里能够找到有一个模块叫做usbcore。localhost:/usr/src/linux-2.6.23/drivers/usb/core # lsmod转载 2015-04-28 16:14:43 · 179 阅读 · 0 评论 -
五、从usb的插入开始
当usb设备插入接口,电压变化会通知到usb主控器,触发主控器中断,如果主控器不支持中断,那么会使用rh_timer方法,轮询接口其结果都是调用usb_hcd_poll_rh_statusvoid usb_hcd_poll_rh_status(struct usb_hcd *hcd) { struct urb *urb; int length;转载 2015-04-28 15:49:19 · 804 阅读 · 0 评论 -
三、usb主控器注册
第一步usb主控器设备的分配usb_create_hcdstruct usb_hcd *usb_create_hcd (const struct hc_driver *driver,struct device *dev, const char *bus_name) { struct usb_hcd *hcd; hcd = kzalloc(sizeof(*hcd转载 2015-04-28 15:44:49 · 223 阅读 · 0 评论 -
Linux设备模型(上)
总线、设备、驱动,也就是bus、device、driver,既然是名角,在内核里都会有它们自己专属的结构,在include/linux/device.h里定义。52 struct bus_type {53 const char * name;54 struct module * owner;55 56 st转载 2015-04-28 16:09:12 · 216 阅读 · 0 评论 -
四、usb设备注册
一.usb设备驱动注册static inline int usb_register(struct usb_driver *driver) { return usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME); } static inline int usb_register(struct usb_dr转载 2015-04-28 15:47:56 · 776 阅读 · 0 评论 -
对于驱动调试有用的两个小工具(devmem2、devkmem)
http://blog.chinaunix.net/uid-20543672-id-3001090.html 前段时间一个学习Linux的朋友问我:“可不可以在调试设备驱动的时候,利用一个小工具来查看CPU中寄存器的值?”我当时对他说:“一般都是Printk打印出来的。”后来这个朋友自己去找了资料告诉我:好像用/dev/mem可以实现。后来我自己找了以下相关的资料,发现正好是我当年没有继续转载 2015-05-05 11:51:21 · 306 阅读 · 0 评论 -
linux 共享内存查看和删除
在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误。您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。预备知识Linux中通过API函数shmget创建的共享内存一般都是在程序中使用shmctl来释放的,但是有时为了调试程序,开发人员可能通过Ctrl + C等方式发送中断信号来结束程序,此时程序申请转载 2015-06-25 17:02:55 · 742 阅读 · 0 评论 -
ARM Linux 3.x的设备树(Device Tree)
宋宝华 Barry Song 1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/pla转载 2015-11-24 19:02:24 · 352 阅读 · 0 评论 -
linux设备树dts移植详解
摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设备树的支持设置,Linux 内核对设备树的解析流程。关键词:扁平设备树; DTS; PowerPC; LinuxIB转载 2015-11-24 18:51:07 · 534 阅读 · 0 评论 -
sd卡驱动
一.SD/MMC卡介绍1.1.什么是MMC卡MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。1.2.什么是SD卡SD:SD卡为Secure Digital Memory Card, 即安全数码卡。它在MMC的基础上发展转载 2015-08-27 11:50:43 · 291 阅读 · 0 评论 -
Linux运维工程师面试
一、Linux操作系统知识1.常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块?2.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?3.企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)4.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。5.安装一台系统使用DVD转载 2015-08-13 11:56:32 · 466 阅读 · 0 评论 -
Linux基础
一.填空题:在Linux系统中,以 文件 方式访问设备 。Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。Linux文件系统中每个文件用 i节点 来标识。全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。链接分为: 硬链接 和 符号链接 。超级块包含了i节点表 和 空闲块表 等重要的文件系统信转载 2015-08-13 11:38:48 · 280 阅读 · 0 评论 -
Linux内核中读写文件数据的方法
Linux内核中读写文件数据的方法有时候需要在Linuxkernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read()vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/u转载 2015-07-18 10:54:20 · 338 阅读 · 0 评论 -
Linux notifier chain机制
内 核许多子系统之间关联紧密,因此在一个子系统发生或者检测到的事件信息很可能对其他子系统来说也是有价值的。为了满足其他子系统对这些事件信息的需求,即 在某个子系统内发生或检测到事件时,其他对此感兴趣的子系统也能知道事件的发生,内核提供了notification chain机制。注意:notification chain适用于内核子系统之间的信息传递,不涉及用户态。Notificat转载 2015-07-01 18:15:42 · 328 阅读 · 0 评论 -
Linux静态库和动态库区别
我们通常把一些公用函数制作成函数库,供其它程序使用。 函数库分为静态库和动态库两种。 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。转载 2015-07-08 17:03:41 · 307 阅读 · 0 评论 -
二、usb子系统初始化
在/drivers/usb/core/Usb.c中,subsys_initcall(usb_init)声明了usb子系统入口函数usb_initstatic int __init usb_init(void) { int retval; if (nousb) { pr_info("%s: USB support disabled\n", usbc转载 2015-04-28 15:41:09 · 1296 阅读 · 0 评论 -
Linux电源管理系统架构和驱动(1)-Linux电源管理全局架构
1. Linux电源管理全局架构Linux电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对于系统待机的支持和每个设备的运行时电源管理,可以说和系统中的每个设备驱动都息息相关。对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大的比重,图1呈现了Linux内核电源管理的整体架构。大体可以归纳为如下几类:1.转载 2015-04-28 15:36:36 · 228 阅读 · 0 评论 -
usb鼠标驱动注解及测试
作者:刘老师,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师。参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。下文阴影部分为注解。 一、驱动加载部分 static int __init usb_mouse_init(void)转载 2015-04-30 17:38:46 · 314 阅读 · 0 评论 -
linux中mmap系统调用原理分析与实现
http://blog.chinaunix.net/uid-22028566-id-3280084.html1、mmap系统调用(功能) void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函数mmap, 负责把文件内容映射到进程的转载 2014-04-09 17:32:38 · 219 阅读 · 0 评论 -
Linux Kernel内存分配方式
http://blog.chinaunix.net/uid-22028566-id-3280202.html转载 2014-04-09 17:29:45 · 291 阅读 · 0 评论 -
使能linux驱动中的dev_dbg
linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用 printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。 1、打开调试开关:你调试的文件中必然包含了,或者《linux /paltforam_device.h》,后者包含了前者,在包含此头文件之前,使用#define DEBUG 1 来打开调试开关:例如转载 2014-04-04 16:11:32 · 314 阅读 · 0 评论 -
kzalloc()与kmalloc()
kernel里的定义:[Csharp] view plaincopyprint?/** * kzalloc - allocate memory. The memory is set to zero. * @size: how many bytes of memory are required. * @flags: the type of memory to all转载 2014-04-01 18:02:48 · 262 阅读 · 0 评论 -
Linux下TIomap芯片MUX配置
在移植内核的时候,通常会遇到引脚复用(MUX)的配置问题。在现在的Linux内核中,对于TI的arm芯片,早已经有了比较通用的MUX配置框架。这对于许多TI的芯片都是通用的,这次看AM335X的代码顺手写一下分析,以备后用。 一、硬件 对于许多TI的芯片来说,引脚复用的配置是在Control Module(配置模块)的寄存器里配置的,(这个和三星的CPU有点不同,三星的一般在GPIO的转载 2014-04-01 15:20:47 · 1064 阅读 · 0 评论 -
omap-am3517板级开发包说明
1、 操作GPIO的底层函数操作一个IO口,首先要对其配置,例如工作模式、上下拉电阻、输入输出。在板级开发包中提供了两种方法:一、在linux/arch/arm/mach-omap2/board-am3517evm.c中有这样一个结构体static struct omap_board_mux board_mux[] __initdata = { /* USB OT转载 2014-04-16 18:00:50 · 1017 阅读 · 0 评论 -
Linux下PCI设备驱动程序开发
一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不转载 2013-03-27 21:43:49 · 280 阅读 · 0 评论 -
linux RTC 驱动模型分析
linux RTC 驱动模型分析 RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器。当Linux内核启动时,它从RTC中读取时间与日期,作为基准值。在运行期间内核完全抛开RTC,以软件的形式维护系统的当前时间与日期,并在需要时将时间回写RTC芯片转载 2013-04-10 14:24:16 · 256 阅读 · 0 评论 -
linux 自旋锁和信号量
http://blog.chinaunix.net/uid-22028566-id-3703933.html 自旋锁最多只能被一个可执行线程持有(读写自旋锁除外)。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去(一直占用 CPU ),在那里看是否该自旋锁的保持者已经释放了锁, " 自旋 " 一词就是因此而得名。由于转载 2014-04-09 17:25:38 · 231 阅读 · 0 评论 -
Wifi加密工具移植(FS_4412)
作者:刘老师,华清远见嵌入式学院讲师。WPA 全名为 Wi-Fi Protected Access,有WPA 和 WPA2两个标准,是一种保护无线电脑网络(Wi-Fi)安全的系统,它是应研究者在前一代的系统有线等效加密(WEP)中找到的几个严重的弱点而产生的。OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL。 SSL是Secure S转载 2015-04-29 11:41:19 · 595 阅读 · 0 评论 -
内核移植之设备树
作者:曹老师,华清远见嵌入式学院讲师。拿到板子虽然板子后决定移植一个比较新的内核,于是从www.kernel.org上下了个内核源码linux-3.14.tar.xz,可是解压后却发现内核变了,变得和以前不一样。arch/arm/还在,arch/arm/mach-exynos也在,可是我的arch/arm/mach-exynox/mach-smdk4412.c哪里去了,多出一个mach-exy转载 2015-04-29 11:48:35 · 970 阅读 · 0 评论 -
基于FS4412内核移植之USB驱动的移植
作者:曹老师,华清远见嵌入式学院讲师。USB接口是现在计算机系统中最通用的一种接口,这里介绍USB控制器驱动的移植,以U盘驱动为例。 FS4412通过usb hub芯片将一个usb口扩展为多个接口如图:所以为了能够使用usb口接入usb设备还需要移植usb hub驱动。设备树添加内容:$ vim arch/arm/boot/dts/exynos4412-fs4412.dts添加转载 2015-04-29 11:43:22 · 1973 阅读 · 0 评论 -
WIFI模块透传基础试验-AP toSTR
作者:李老师,华清远见嵌入式学院讲师。【实验目的】: 1、 掌握wifi模块配置方法,学习使用配置工具 2、 使用串口调试工具调试WIFI模块,完成数据收发 3、 实现AP(路由)与STR(节点)之间进行数据交换 【实验环境】:【实验步骤】: 1、 利用UART-WIFI(V2.1)配置WIFI模块,路由-AP;转载 2015-04-29 11:56:34 · 1733 阅读 · 0 评论 -
USB-Wifi驱动移植(FS_4412)
本文转载至:http://www.embedu.org/Column/Column911.htm作者:刘老师,华清远见嵌入式学院讲师。FS_4412可以同链接USB-Wifi模块实现无线上网功能,本章节主要描述了如何在FS_4412开发板上移植USB-Wifi模块的驱动和相关的WPA加密工具。1.获取RT2780驱动我们采用的USB-Wifi模块使用的是RT27转载 2015-04-29 11:32:09 · 473 阅读 · 0 评论 -
V4L2 API详解 <一> 背景知识
V4L2 API详解 背景知识http://m.blog.csdn.net/blog/litao_wang/17506309www.linuxtv.org下,有篇文档详细讲解了V4L2相关知识和体系结构。是V4L2方面最全面的文档。可以通过它学习V4L2的一些思路和想法。http://www.linuxtv.org/downloads/v4l-dvb-apis/i转载 2015-04-24 18:06:26 · 263 阅读 · 0 评论 -
mmap函数
mmap函数共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,转载 2015-04-24 18:03:19 · 162 阅读 · 0 评论 -
写linux下的USB设备驱动程序
[转]怎样写linux下的USB设备驱动程序引言随着人们生活水平的提高,我们用到的USB设备也越来越多,但是Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他们,也越来越成为困扰我们的一大问题;本文的目地是使大家了解怎样编制USB设备驱动,为更好地配置和使用USB设备提供方便;对于希望开发Linux系统下USB设备驱动的人员,也可作为进一转载 2015-04-24 17:56:52 · 433 阅读 · 0 评论 -
linux子系统的初始化_subsys_initcall():那些入口函数
在linux内核代码里, 到处充满了subsys_initcall,这个调用是用来干吗的呢?有人回答是系统启动时候用来初始化某些系统的,具体怎么初始化的呢,说起来还是有点复杂。内核选项的解析完成之后,各个子系统的初始化即进入第二部分—入口函数的调用。通常USB、PCI这样的子系统都会有一个名为subsys_initcall的入口,如果你选择它们作为研究内核的切入点,那么就请首先找到转载 2013-04-10 14:21:42 · 373 阅读 · 0 评论