linux
jianson199
这个作者很懒,什么都没留下…
展开
-
Ubuntu 12.04 安装 Apache2+PHP5+MySQL
LAMP是Linux web服务器组合套装的缩写,分别是Apache+MySQL+PHP。此教程教大家如何在Ubuntu12.04 LTS server 上安装Apache2服务器,包括PHP5(mod_php)+MySQL。此教程中使用的相关IP等设置,在你的环境中要做相应修改。1 我们使用root账户进行安装,首先切换到root账户,输入命令:sudo su2 安装 MySQL转载 2014-11-05 22:21:21 · 365 阅读 · 0 评论 -
Kobject模型
一。Kobject每个在内核中注册的kobject都对应于sysfs文件系统中的一个目录。kobject在文件include/linux/kobject中定义点击(此处)折叠或打开struct kobject { const char *name; //kobject的名称转载 2014-04-02 20:20:34 · 438 阅读 · 0 评论 -
va_start和va_end使用详解
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(转载 2014-04-03 10:46:11 · 369 阅读 · 0 评论 -
input子系统学习(2)
下面我们看下handler和input_dev之间是如何联系起来的,handle这个结构体就是联系两者的纽带,在前面分析input_register_handler时曾提到过handle。点击(此处)折叠或打开struct input_handle { void *private; //私有数据 in转载 2014-03-22 15:52:00 · 413 阅读 · 0 评论 -
input子系统学习(1)
input子系统学习进行简单的总结。先看driver/input/input.c入口函数input_init点击(此处)折叠或打开static int __init input_init(void){ //此函数主要代码 input_init_abs_bypass(); err = class_regis转载 2014-03-22 14:51:33 · 495 阅读 · 0 评论 -
对container_of(ptr,type,member)分析
该宏定义在kernel.h中;原型为#define container_of(ptr, type, member) ({\ const typeof( ((type *)0)->member ) *__mptr = (ptr);\ (type *)( (char *)__mptr - offsetof(type,member) );}) 其中 ptr是指向正被使用的转载 2014-04-02 15:30:23 · 516 阅读 · 0 评论 -
信号量(semaphore)
信号量(semaphore) Linux内核的信号量在概念和原理上与用户态的System V的IPC机制信号量是一样的,但是它绝不可能在内核之外使用,因此它与System V的IPC机制信号量毫不相干。 信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。转载 2014-03-21 10:04:40 · 656 阅读 · 0 评论 -
tslib-1.4的安装与移植
分类: LINUX原文地址:tslib-1.4的安装与移植 作者:chumojing1、下载tslib-1.4.tar.gz http://download.csdn.net/source/3177449 。 2、解压安装tslib # tar -zxvf tslib-1.4.tar.gz转载 2014-04-15 11:28:31 · 455 阅读 · 0 评论 -
AWK命令详解(大全)
什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernig转载 2014-03-14 15:11:04 · 434 阅读 · 0 评论 -
linux input设备驱动
一. 输入设备结构体 1. input_dev 输入设备[cpp] view plaincopystruct input_dev { const char *name; //设备名 const char *phys; //设备系统层的物理路径 const char *u转载 2014-04-21 09:47:21 · 544 阅读 · 0 评论 -
Kconfig文件的作用以及驱动添加进内核示例
内核源码树的目录下都有两个文件Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文件中。在内核编译时,主Makefile调用转载 2014-04-21 11:47:01 · 541 阅读 · 0 评论 -
linux-2.6.32内核LCD驱动移植
参考资料:http://blog.chinaunix.net/uid-9688646-id-1998441.html http://blog.163.com/changchunxi@126/blog/static/111800823201212533243484/ 主机:Windows 7旗舰版,VMware7.1.2,Fedora9集成开发环境:Source Insigh转载 2014-04-21 11:21:23 · 808 阅读 · 0 评论 -
Linux查看环境变量当前信息和查看命令
系统的环境变量在配置web server以及编写程序都常常被用到, 因此了解必要的关于系统变量的知识是非常有必要的,下面关于linux系统变量的查看以及方法。在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。Linux下Linux查看环境变量准确的说是REDHAT下应该如何查看呢,命令是:export如果你想查看某一个名称的环境变量,命令是转载 2014-05-24 10:10:33 · 1485 阅读 · 0 评论 -
linux 电池驱动
本驱动是方便大家讨论及理解,电池的参数如电压,电量百分,温度以及相关状态都是人为给定。实际中都是通过读取相应硬件(如axpxxx)的寄存器并按照相应的算法获取。但框架都是一致。本驱动的开发平台为瑞萨EMEV2,此驱动已经验证。效果贴图(通过es任务管理器查看):Battery level 的值为25%Battery status:Charging(AC)Battery temp转载 2014-06-06 15:59:20 · 3148 阅读 · 0 评论 -
编译安装tslib1.4
安装编译过程需用到的程序 # apt-get installautoconf(或autoconf2.13) # apt-get install automake # apt-get install libtool将tslib1.4解压到/home下#./autogen.sh#./configure --prefix=/home/shenjian/Document转载 2014-04-26 16:55:11 · 999 阅读 · 0 评论 -
嵌入式linux上QT标准键盘输入的实现
作者:刘洪涛,华清远见嵌入式学院讲师。在嵌入式平台上运行QTE时,使用的键盘通常不是标准键盘,而是嵌入式设备外扩的普通按键。那么实现QTE键盘输入的方法大体上可以分为两类: (1)编写一个普通按键驱动,然后开辟一个QT线程读取按键值,在通过信号把按键值发送出去。需要接收键盘输入的目标,声明槽函数,接收键盘信号。(2)将按键驱动编写成标准键盘驱动,让QTE感觉和标转载 2014-05-22 10:09:22 · 2376 阅读 · 0 评论 -
UBOOT命令
U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要转载 2014-05-21 14:34:07 · 574 阅读 · 0 评论 -
QTE与触摸屏(转http://onebyte.21ic.org/)
QTE触摸屏加载有两种方法:(1)QTE本身触摸屏加载;主要注意三个内容:编译QTE时,在其自定义配置文件(位于QTDIR/src/tools/qconfig-XXX.h,其XXX为自定义的名字,该特征字可以在configure时用-qconfig XXX指定)所应加的内容:#define QT_QWS_IPAQ#define QT_QWS_IPAQ_RAW转载 2014-04-26 11:46:34 · 675 阅读 · 0 评论 -
qwt在linux下的安装
安装包可以在http://qwt.sourceforge.net/index.html上下载要使用Qwt,就首先需要安装配置好Qwt的开发环境。作为开源项目,我们可以在Qwt的官方网站上获得安装源码包,地址为 http://qwt.sourceforge.net/。得到源码包的途径也有两种,一种是使用SVN直接下载源码仓库里的源码,另一种是进入项目页面 下载。如果进入项目页面下载源码包转载 2014-02-21 13:42:13 · 664 阅读 · 0 评论 -
LINUX 2.6 内核下多C文件模块编译方法
MODULE_NAME :=testRESMAN_CORE_OBJS :=hello1.oRESMAN_GLUE_OBJS :=hello2.o$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)obj-m :=test.oKERNELDIR ?= /lib/modules/$(shell uname -r转载 2014-03-26 09:22:01 · 1437 阅读 · 0 评论 -
struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head转载 2014-03-07 10:38:15 · 351 阅读 · 0 评论 -
class_create()函数应用
//主要是在/sys/class/ 下创建一个 “name”的文件夹 ! 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_cr转载 2014-03-07 10:13:48 · 1451 阅读 · 0 评论 -
_raw_readl() 与ioread32()有什么区别
有啥子区别?都是在驱动中读(写)虚拟地址吧? -- ARM架构下: #define __raw_readl(a) (__chk_io_ptr(a), *(volatile unsigned int __force *)(a)) #define ioread32(p) ({ unsigned int __v = le32_to_cpu((__force转载 2014-03-06 16:37:37 · 3804 阅读 · 0 评论 -
Linux驱动结构学习笔记 pci之pci_dev
每种类的PCI设备都可以用结构类型pci_dev来描述。更为准确地说,应该是每一个PCI功能,即PCI逻辑设备都唯一地对应有一个pci_dev设备描述符。该数据结构的定义如下(include/linux/pci.h):struct pci_dev {struct list_head global_list;/* 全局链表元素global_list:每一个pci_dev结构都通过转载 2014-03-05 10:59:42 · 1215 阅读 · 0 评论 -
error: asm/arch/regs-gpio.h: No such file or directory 此类问题的解决办法
注:基于linux2.6.31内核的问题解决方案,其思路适用于其他内核版本。不少嵌入式Button或是Led驱动程序的头文件都包含,和等这几个头文件。在这这些头文件中定义了硬件相关的资源描述,如I/O,中断的宏定义。当我们直接include上述头文件时,就会出现如下的错误。error: asm/hardware.h: No such file or directory转载 2014-03-01 15:46:01 · 7379 阅读 · 0 评论 -
arm-linux-gcc/ld/objcopy/objdump使用总结
arm-linux工具的功能如下:arm-linux-addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。 arm-linux-ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。arm-linux-c转载 2014-02-26 21:23:19 · 377 阅读 · 0 评论 -
ubuntu下gedit默认编码设置
ubuntu 下gedit默认编码为UTF-8,而在windows下编写得txt默认编码位GBK,所以在windowx下面的txt用getdit打开则为乱码,解决方案 在终端下输入:gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8', 'GB18030', 'GB2312', 'GBK', 'B转载 2014-02-25 15:43:26 · 946 阅读 · 0 评论 -
make[1]: arm-linux-g++:命令未找到的解决办法
make[1]: arm-linux-g++:命令未找到make[1]: *** [.pch/release-shared-emb-arm/QtCore.gch/c++] 错误 127make[1]:正在离开目录 `/home/wlg.../qt-everywhere-opensource-src-4.7.0/src/corelib之前初学的时候,QT4.7的交叉编译直接按照手册来的,转载 2014-02-20 23:08:13 · 15880 阅读 · 0 评论 -
linux驱动 结构体中的逗号
在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式。该方式是某些C教材(如谭二版、K&R二版)中没有介绍过的。这种方式称为指定初始化(designated initializer)。下面我们看一个例子,Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目: static struct usb_driver usb_sto转载 2014-01-10 20:31:38 · 852 阅读 · 0 评论 -
LDD3构建内核树
作者:胡乃全写在前面作者一直支持GPL的精神。允许任何人自由使用、转载、复制和再分发,但必须保留作者署名,必须保证全文完整转载,包括完整的版权声明。由于作者水平有限,因此不能保证文章内容准确无误,请批判阅读。如果你发现任何错误或对文章内容有任何建议,欢迎你与我联系:Email: hunaiquan@126.com 为什么要构建内核树在《LDD3》转载 2013-12-11 15:42:47 · 635 阅读 · 0 评论 -
ubuntu编译内核
http://forum.ubuntu.org.cn/viewtopic.php?t=134404原创 2013-12-21 16:09:52 · 386 阅读 · 0 评论 -
__init, __initdata, __devinit 和 __devinitdata的作用
在LDD中第二章有提到2.7. Initialization and Shutdown Initialization functions should be declared static, since they are not meant to be visible outside the specific file; there is no hard rule about原创 2014-03-05 10:35:28 · 1364 阅读 · 0 评论 -
linux驱动加载命令和驱动模块信息查看
驱动操作命令: insmod / modprobe 加载驱动 rmmod 卸载驱动 lsmod 查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系 modinfo 获得模块的信息转载 2014-03-11 15:04:42 · 925 阅读 · 0 评论 -
void及void指针含义的深刻解析
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,转载 2014-03-06 20:40:20 · 388 阅读 · 0 评论 -
linux驱动结构之class及相关结构体
设备类struct class是一个设备的高级视图,它抽象出低级的实现细节。例如,驱动可以见到一个SCSI磁盘或者一个ATA磁盘,在类的级别,他们都是磁盘,类允许用户空间基于它们作什么来使用设备,而不是它们如何被连接或者它们如何工作。struct class{ const char *name; //类名称 struct module *owner; //对应模块转载 2014-03-07 10:05:14 · 861 阅读 · 0 评论 -
堆和栈
一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态转载 2014-03-12 15:00:10 · 363 阅读 · 0 评论 -
使用cdev_add注册字符设备
1.2.3 使用cdev_add注册字符设备在Linux 2.6内核中的字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构 stru转载 2014-03-07 09:49:39 · 578 阅读 · 0 评论 -
有关中断的使用
http://book.51cto.com/art/201311/418631.htm转载 2014-03-06 15:48:14 · 457 阅读 · 0 评论 -
register_chrdev_region和alloc_chrdev_region
分配并注册主次设备号 设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。 在Linux内核看来,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/转载 2014-03-06 22:05:22 · 501 阅读 · 0 评论 -
linux 内核分析之list_head
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序转载 2014-03-06 17:17:26 · 444 阅读 · 0 评论