
Linux
月光宝盒
选择了高山,也就选择了坎坷;选择了宁静,也就选择了孤独;选择了机遇,也就选择了风险。选择了,那就拼搏。大海惧怕寂静,所以澎湃;江河惧怕冷漠,所以涛滔;我惧怕平庸,所以追求卓越。
展开
-
Device Tree
原文地址 http://www.wowotech.net/linux_kenrel/why-dt.html(一)一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的转载 2015-06-10 10:55:27 · 2102 阅读 · 0 评论 -
Linux代码缩写
fstabfile systems table: 指这个文件 (/etc/fstab)如:androidSource/system/core/rootdir/etc/vold.fstabGFP_KERNEL, 意思是这个分配((内部最终通过调用 __get_free_pages 来进行, 它是 GFP_ 前缀的来源) 代表运行在内核空间的进程而进行的. 换句话原创 2012-02-13 13:59:14 · 587 阅读 · 0 评论 -
linux进程管理
1.linux进程状态浅析R -TASK_RUNNINGS-TASK_INTERRUPTIBLE 不可中断的睡眠状态D-TASK_UNINTERRUPTIBLE 不可中断的睡眠状态2.睡眠--TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLEhttp://www.cnblogs.com/parrynee/archive转载 2012-11-18 13:54:34 · 806 阅读 · 0 评论 -
kernel对应的c库实现
对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,但是对于Linux内核来说,无法使用那些C库中的函数。Linux内核里有相应的实现:对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于itoa(),用snprintf()。其他相关函数,自己去看/转载 2012-09-21 20:54:21 · 1623 阅读 · 0 评论 -
VIM使用总结
一、关于如何搭建成IDE可以参考下面两篇文章1.手把手教你把Vim改装成一个IDE编程环境(图文)2.VI/VIM使用进阶:目录add 把vim打造成IDE(整理,修订)对SI比较熟悉的,可以看看下面这篇,有SI和VIM功能的对比 从Source Insight到Vim二、新建一个工程需要执行的操作1.cscope -Rbq------原创 2012-01-09 10:39:56 · 741 阅读 · 0 评论 -
linux 软件安装
Chrome Flash Player安装一、官网下载install_flash_player_11_linux.x86_64.tar.gz使用tar -zxvf install_flash_player_11_linux.x86_64.tar.gz得到两个文件 usr和libflashplayer.so readme二、usr没用,删掉三、原创 2012-08-03 21:25:35 · 569 阅读 · 0 评论 -
Block devices and block sizes
block size是一个笼统的概念,不是一个固定值,在硬盘(一般是512byte),文件系统(分为1kbyte,2kbyte,4kbyte等)及kernel(为1kbyte)中大小不一定详细可以参考Block devices and block sizesblock size--file holeyuebao@yuebao-G31M-ES2C:~$ sudo fd原创 2012-06-15 15:35:48 · 737 阅读 · 0 评论 -
IO端口和IO内存
首先说明一点,所谓的I/O端口是指CPU可以直接访问的接口电路中的寄存器,而像LCD touchPanel这种外设虽然也有寄存器,但是不能直接访问,一般要通过SPI,I2C总线来读写,所以不是这里所说的I/O端口。IO端口一般是由cpu厂商定义的,这些寄存器都是在和CPU紧密联系的外设上,如LCDC,DMA等。IO端口和IO内存 几乎每一种外设都是通过读写设备上的寄存器来进行的转载 2012-05-09 20:57:17 · 1264 阅读 · 0 评论 -
ARM Linux内核驱动异常定位方法分析--反汇编方式
原创作品,转载请以超链接形式说明出处! 原文链接:http://blog.youkuaiyun.com/hunhunzi/article/details/7052032最近在搞Atmel 的SAM9x25平台,Linux系统,用于工业设备。这也是我首次参与工业设备的研发。在调试Atmel SAM9x25的Linux串口设备的时候,发现无论是读还是写,都会产生异常。相关的异常信息如下转载 2012-12-15 00:02:44 · 1526 阅读 · 0 评论 -
Why and How to Use Netlink Socket
Why and How to Use Netlink Socket作者:Kevin He,2005-01-05原文地址:http://www.linuxjournal.com/article/7356 译者:Love. Katherine,2007-03-23译文地址:http://blog.youkuaiyun.com/lovekatherine/archive/2007/03/23/1转载 2013-09-22 20:48:47 · 2094 阅读 · 0 评论 -
下半部和推后执行的工作-工作队列机制
应用场景 触摸屏驱动和 sensor驱动实现原理什么是workqueue?Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建原创 2012-05-07 23:26:35 · 1297 阅读 · 1 评论 -
Linux MMC/SD/SDIO体系结构
Linux MMC/SD/SDIO体系结构有关MMC/SD/SDIO相关的知识这里就不多讲了,请参考相关资料。这里主要涉及Linux下MMC相关内容。内核版本(2.6.36)首先说一下Linux相关MMC的代码分布,主要有两个目录,一个头文件目录和一个源代码目录。分别位置如下:include/linux/mmcdrivers/mmc要阅读MMC相关代码就必须要看转载 2013-06-03 02:14:30 · 2569 阅读 · 0 评论 -
数据读写SD卡下半部分析
在上一文中,作者已经将Read 整个调用过程从Linux 系统调用(SCI,system call interface)至IO调度的整个流程已经讲解的非常清晰明了,在此对作者表示致敬!那这里我接着以Android SD卡为例子,分析IO调度后数据的处理流向! 本文代码基于linux kernel 3.0.4.1. mmcqd mmcqd 是kernel在/kernel转载 2013-06-03 01:50:38 · 4856 阅读 · 0 评论 -
linux sd卡驱动分析
http://blog.youkuaiyun.com/zwj0403/article/details/66545421. 硬件基础:http://blog.ednchina.com/yelov/198217/message.aspxSD/MMC/SDIO 概念区分概要SD (Secure Digital )与 MMC (Multimedia Card )SD 是一种转载 2013-06-03 01:48:10 · 1965 阅读 · 0 评论 -
SD/MMC 内部寄存器及上电时序
SD/MMC 内部寄存器SD Card RegistersName Width DescriptionCID 128 Card identification number: individual card number for identification.转载 2013-05-26 20:49:50 · 4462 阅读 · 0 评论 -
Kconfig
1.select与depends on是相反的逻辑关系。A depends on B那么只有在B选中才能选A,A select B那么只要选中A就会选中B2. 如果要构造只能从若干个选项中选择一个,类似下面的这种: MDP HW version 1. MDP HW ver2.2 (FB_MSM_MDP22) > 2. MDP HW ver3.0 (FB_M转载 2012-03-05 20:02:57 · 1068 阅读 · 1 评论 -
linux时间管理
Linux核心几个重要跟时间有关的名词或变数,底下将介绍HZ、tick与jiffies。1)HZLinux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timerinterrupts。举例来说,HZ为1000,代表每秒有1000次timer interrupts。HZ可在编译核心时设定,如下所示(以核心版本2.6.20-15转载 2012-12-29 01:48:27 · 993 阅读 · 0 评论 -
gsensor导致oops分析
[复现场景]MC3230(Gsensor)正常后,image文件下载到没贴MC3230的板子上,系统反复重启。CUSDB00055082[分析过程]实验及log带来的疑惑:1.删掉gsensor的kfree(mc3xx0)不会再有重启现象,2.从log看是死在FM的register_early_suspend,为什么修改gsensor代码会有影响gsensor代码m原创 2012-12-27 01:09:16 · 4822 阅读 · 1 评论 -
linux mmap 内存映射
Gralloc HAL的gralloc.cpp使用了mmap,如下:static int init_pmem_area_locked(private_module_t* m)1)打开PMEM,open("/dev/pmem", O_RDWR, 0);2)获取所有空间,ioctl(master_fd, PMEM_GET_TOTAL_SIZE, ®ion)3)分配这么多空间,sA转载 2012-05-06 11:47:29 · 3218 阅读 · 0 评论 -
Linux设备模型之platform总线
以下内容为转载,其中紫色字体部分是自己添加的部分,主要是根据调试LCD驱动的理解。 platform bus多用在嵌入式SOC环境下, 和标准bus(pci/usb/...)上的设备相比,集成在soc的设备有一些特殊性: 比如不可以hotplug, 无法自动probe, 有许多相关的资源(irq/io/memory/...)需要在arch代码中传递过来(而不是可以自动pro转载 2011-12-18 01:26:57 · 1233 阅读 · 0 评论 -
write的奥秘
write的奥秘//写的通俗易懂,write并非原想的那么简单,或者根本没有想过。研究ioctl时的意外发现。。。http://www.linuxforum.net/doc/write-coly.html 另外代码中定义fd是什么意思fd --------file descriptor 文件描述符一般是int型,是open函数的返回值,相当于句柄,通过它对文件//并非单指普原创 2011-11-01 00:40:43 · 692 阅读 · 0 评论 -
makefile如何指定编译文件
目标定义是Kbuild Makefile的主要部分,也是核心部分。主要是定义了要编 译的文件,所有的选项,以及到哪些子目录去执行递归操作。 最简单的Kbuild makefile 只包含一行:例子: obj-y += foo.o 该例子告诉Kbuild在这目录里,有一个名为foo.o的目标文件。foo.o将从foo.c 或foo.S文件编译得到。foo。o直接链进内核原创 2011-11-21 20:03:40 · 3054 阅读 · 0 评论 -
Platform Device and Drivers
Platform Device and Drivers从我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线 Platform bus使用最小结构来集成SOC pro转载 2011-07-27 16:41:17 · 897 阅读 · 0 评论 -
Ubutun下编译Kernel
1p { margin-bottom: 0.21cm; }话说编译过Kernel,才算入门LINUX! 以前尝试过多次,都莫名奇妙的错误,今天又折腾了一下,终于看到 CC,LD....编译Linux内核是内核开发的基本功,如果我们通过直接修改Linux内核代码来增加内核功能,那么原创 2011-07-26 12:41:09 · 700 阅读 · 0 评论 -
linux系统中运行当前目录中的可执行文件
<br /> 当前目录下有个可执行的文件:example。需使用./example来执行他(就是要指明路径),而不能仅用example。一直纳闷这么做是否有点多此一举。明明已经是在当前目录下了为何还要用./。<br /><br />原因:<br /> 先说dos,如果在dos下执行一个文件,缺省情况下是先在当前目录下寻找,找不到的话在再PATH环境变量中寻找。而linux下运行可执行文件的逻辑是直接只在环境变量中寻找。要执行一个可执行文件要么其在PATH路径中,这种情况可以直接写文件名;要原创 2011-05-23 23:48:00 · 11445 阅读 · 0 评论 -
linux下新安装的程序在哪里?
<br /> 如果是别人发布的二进制包,可执行文件通常都安装到 /usr/bin 下面;如果是自己从源代码安装的,可执行文件通常都在 /usr/local/bin 下面,除非配置时指定了安装位置。<br />例如:<br />rpm -ivh xxx1.rpm<br />可执行文件通常都安装到 /usr/bin 下面<br /><br />./configure (或者 ./configure --prefix=/usr/local)<br />转载 2011-04-01 19:59:00 · 964 阅读 · 0 评论 -
linux下安装和管理应用程序
<br />Linux应用程序基础 长期以来命令和应用程序并没有特别明确的区别,从长期使用习惯来看,可以通过以下一些描述来对两者就行区别。1) 应用程序与系统命令的关系文件位置系统命令:一般在/bin和/sbin目录中,或为Shell内部指令应用程序:通常在/usr/bin和/usr/sbin目录中,/usr/local/bin和/usr/local/sbin目录中主要用途系统命令:完成对系统的基本管理工作,例如IP配置工具应用程序:完成相对独立的其他辅助任务,例如网页浏览器适用环境系统命令:一般只在字符转载 2011-04-02 09:12:00 · 666 阅读 · 0 评论 -
LINUX下环境变量的设置、查看
<br /> Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。<br />Linux下如何查看环境变量呢,如果你想查看某一个名称的环境变量,命令是:echo $环境变量名,比如:<br />echo $ORACLE_HOME<br />Windows对应的命令是:set 环境变量名。1.Linux的变量种类<转载 2011-05-17 22:03:00 · 1304 阅读 · 0 评论 -
Linux 2.6 内核中的最新电源管理技术综述
Linux 2.6 内核中的最新电源管理技术综述转载 2011-12-15 13:35:51 · 749 阅读 · 0 评论 -
eMMC介绍
eMMC目录简介优点结构应用发展趋势协会简介简介 eMMC (Embedded MultiMediaCard) 为MMC协会所订立的内嵌式存储器标准规格,主要是针对手机产品为主。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAN原创 2012-01-09 14:13:08 · 2610 阅读 · 0 评论 -
Linux LED子系统
msm上的LCD backlight和keypad backlight都注册为led_classdev,下面是对Linux的LED子系统的介绍。需要打开的配置CONFIG_NEW_LEDS=Y #enable Linux LED supportCONFIG_LEDS_CLASS=Y # enables the led sysfs class in /sys/class/leds.转载 2012-04-26 23:13:39 · 945 阅读 · 0 评论 -
Linux内核文档翻译:Documentation/gpio.txt(转+改)
最近在移植Linux到一块工控板的时候需要GPIO相关的知识,所有顺便看了下内核文档,翻译了一下。内核文档毕竟是权威的文档,比看什么参考资料都好。本文档提供了一个在Linux下访问GPIO的公约概述。这些函数以 gpio_* 作为前缀。其他的函数不允许使用这样的前缀或相关的 __gpio_* 前缀。什么是GPIO?"通用输入/输出口"(GPIO)是一个灵活的由软件控制的数字信号。他转载 2012-03-20 19:44:59 · 3070 阅读 · 0 评论 -
3种读写文件接口区别
fopen /open区别UNIX环境下的C对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别。其原型分别是FILE *fopen(const char *filename,constchar *type);int open (const char *pathname, intfl原创 2011-11-21 19:46:47 · 2304 阅读 · 0 评论 -
Linux GPIO - gpio.c(GPIO各个接口的实现)
先说说gpio_request,其原型是int gpio_request(unsigned gpio, const char *label)其参数gpio为你要申请的哪一个管脚,label则是为其取一个名字。其具体实现如下:Qualcomm平台在android端使用要在AMSS端配成把owerner配成 TLMM_OWNER_PERIPHERA,这样AP才能控制,而TLMM_OWNER_M转载 2012-03-21 23:11:33 · 9094 阅读 · 1 评论 -
input subsystem
<!--@page {margin:0.79in}pre.cjk {font-family:"WenQuanYi Micro Hei",monospace}p {margin-bottom:0.08in}--> 这几天在android上移植了sensor(compass+gsensor),虽然以前TP也是input系统,但只在driver处理,而s原创 2012-03-29 17:50:34 · 1864 阅读 · 0 评论 -
在Ubuntun下Windows分区无法编译android
Issue In Ubuntun11.04,sometimes my /home disk is not enough,so switch to /media/d: or /meida/e: to make Android,but there are errors:build for the simulator or the device? 1. Device原创 2012-03-12 16:22:09 · 1902 阅读 · 0 评论 -
史上最经典的Linux内核学习方法论
待到山花烂漫时,还是那些经典在微笑。 有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲 解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1 比 1”的场景?)。 《Linux内核设计与实现》转载 2012-02-13 19:39:50 · 572 阅读 · 0 评论 -
I2C系统
一:I2C 概述I2C是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。二:在linux下的驱动思路谈到在linux系统下编写I2C驱动,目前主要有两种方法,一种是把I转载 2011-12-29 19:33:03 · 606 阅读 · 0 评论 -
查看OS和CPU32位,64位?
1.查看LINUX软件是32位还是64位#uname -a如果有x86_64就是64位的,没有就是32位的我的:Linux yuebao-desktop 2.6.31-23-generic #74-Ubuntu SMP Mon Feb 28 22:20:11 UTC 2011 x86_64 GNU/Linux2.查看CPU是否为64位?32位?16位?在linux操作系统不知道在哪里看 cpu是多少位的,看下这个方法。打开终端输入下面的命令#grep flags /proc/cpuinfo输出原创 2011-05-18 19:47:00 · 989 阅读 · 0 评论