
Linux学习
skywalkzf
这个作者很懒,什么都没留下…
展开
-
android leds简单代码总结
linux leds 【源码:linux-3.2-rc7】关于led,前两天被问道一个问题,这里顺便总结下吧。 led,对于我们所有的人来说这是一个比较简单的模块,当然也是学习时比较好入口的一个模块。分析驱动,都了解先看Makefile &Kconfig# LED Coreobj-$(CONFIG_NEW_LEDS)原创 2012-05-07 20:52:13 · 4388 阅读 · 7 评论 -
linux中常用的头文件
#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include 在linux-2.6.31_TX2转载 2011-06-23 16:00:00 · 3269 阅读 · 0 评论 -
Shell中if的相关参数
<br /><br />由于自己不是经常使用shell,所以有时候命令经常容易忘,这里把其中的一个if的参数给保存下吧。<br /> <br />-----------------------------华丽的分割线之下是转贴内容-------------------------------------------------------------<br /> <br />[ -a FILE ] 如果 FILE 存在则为真。 <br />[ -b FILE ] 如果 FILE 存在且是一个块特殊文件转载 2011-04-06 16:14:00 · 720 阅读 · 0 评论 -
使用 inotify 监控文件系统的活动
系统管理就像日常生活一样。就像刷牙和吃蔬菜一样,日常的维护能保持机器的良好状态。您必须定期清空废物,比如临时文件或无用的日志文件,以及花时间填写表单、回复电话、下载更新和监控进程等。幸好自动化 shell 脚本、使用 Nagios 等工具进行监控、通过常见的 cron 进行任务调度可以减轻这个负担。但奇怪的是,这些工具没有一个具有响应性。当然,您可以安排一个频繁运行的 cron 任务来监控条件,但这样繁忙的轮询 — 消耗大量资源并且具有不确定性 — 并不是很理想。例如,如果您必须监控输入数据的几个 Tran转载 2011-05-16 13:31:00 · 1365 阅读 · 0 评论 -
arm Linux系统启动之----reset_init,系统1号进程
<br />先来看下一些基础概念<br />内核线程(thread)或叫守护进程(daemon),在操作系统中占据相当大的比例,当Linux操作系统启动以后,<br />尤其是Xwindow也启动以后,你可以用”ps”命令查看系统中的进程,这时会发现很多以”d”结尾的进程名,这些进程就是内核线程。<br />内核线程也可以叫内核任务,它们周期性地执行,例如,磁盘高速缓存的刷新,网络连接的维护,页面的换入换出等等。在Linux中,内核线程与普通进程有一些本质的区别,从以下几个方面可以看出二者之间的差异:<br原创 2011-05-12 20:51:00 · 4103 阅读 · 0 评论 -
arm Linux系统启动之----start_kernel函数
head-common.S---具体做了哪些动作---跳转到init/main.c ---b start_kernel//关于start_kernel的强文深入理解linux内核,第八章main.casmlinkage void __init start_kernel(void){char * command_line;extern struct kernel_param __start___param[], __stop___param[];//来设置smp pro原创 2011-05-11 20:52:00 · 5724 阅读 · 0 评论 -
【doc/input】input系统基础
在我的印象中,input系统应该是将输入设备进行了抽象得到的一个统一的接口。常见的键盘,光鼠,轨迹球,传感器我们都可以归到input系统中来。编写一个input的基本的步骤是:1创建input device和driver1.0 一个简单的例子一个简单的例子是一个简单的I/O按键(BUTTON)。当一个按下或者释放的动都都会产生一个BUTTON_IRQ。#include #include #include #include #include static struct input_dev *button_de原创 2011-03-01 14:25:00 · 1622 阅读 · 1 评论 -
ubuntu rar解压缩出现无效的编码的问题
<br />ubuntu默认是无法解压缩rar格式的文件,需要安装其他的软件。<br />通常我们的做法为sudo apt-get install rar来解决。但是这样安装之后会在解压部分文件的时候出现“无效的编码”的问题,原因在于该rar文件中的编码与ubuntu不同。<br />我的解决的办法是:<br />1、卸载掉当前的rar软件<br /> sudo apt-get remove rar<br />2、安装p7zip-rar解决<br /> udo apt-get install原创 2011-01-04 14:39:00 · 3156 阅读 · 1 评论 -
【转帖】U-boot给kernel传参数和kernel读取参数—struct tag (以及补充)
文章来自:http://blog.chinaunix.net/u3/90973/showart_1925725.htmlU-boot 会给 Linux Kernel 传递很多参数,如:串口, RAM , videofb 等。而 Linux kernel 也会读取和处理这些参数。两者之间通过 struct tag 来传递参数。 U-boot 把要传递给 kernel 的东西保存在 struct tag 数据结构中,启动 kernel 时,把这个结构体的物理地址传给 kernel ; Linux kernel转载 2010-12-14 15:07:00 · 1579 阅读 · 0 评论 -
Linux下的SVN使用---命令行控的最爱
<br /><br />1、Linux命令行下将文件checkout到本地目录<br /> svn checkout path(path是服务器上的目录)<br /> svn checkout <br /> <br /> <br />2、Linux命令行下往版本库中添加新的文件<br /> svn add file<br /> 例如:svn add test.php(添加test.php)<br /> <br /> <br />3、Linux命令行下将改动的文件提交到版本库<br /> svn原创 2010-10-11 15:47:00 · 1083 阅读 · 0 评论 -
bus,device,driver三者关系
<br />bus,device,driver三者关系<br /><br />bus:<br />总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。<br />一块网卡在嵌入式开发中,直接通过内存总线接入到CPU。我们在写网卡驱动时,要给该BUS定转载 2010-08-24 17:01:00 · 704 阅读 · 0 评论 -
linux gpio模拟i2c的使用
linux kernel 中的i2c-gpio使用 在linux中,我们可以自己来使用gpio来模拟i2c,但是万能的linux中其实也已经有了i2c的东东了。 现在看看i2c-gpio.c文件中到底提供了哪些接口static void i2c_gpio_setsda_dir(void *data, int state)static void i2c_gpio_s原创 2011-06-29 20:13:00 · 18157 阅读 · 3 评论 -
内核中并发所所采取的措施
多线程执行的时候会出现并发的问题,处理不好,多线程会出现数据处理的错误。SMP(对称多处理器)和内核抢占是多线程执行的两个场景。我们提出要保护共享内核资源的问题,下面有内核中常用的方式。1、自旋锁和互斥体 首先先了解临界区的概念,临界区是访问共享资源的代码原创 2011-07-05 21:45:40 · 2611 阅读 · 0 评论 -
Linux调试中使用的proc和sys中的接口
在调试的过程中我们通常需要去不停的修改寄存器的值来调试效果,在现在发现有两个手段,分别利用的proc和sysproc--| |-----read_proc |-----write_proc sys---| |----原创 2011-08-02 22:13:00 · 3859 阅读 · 4 评论 -
Linux 固件子系统----如何更新固件
在一般的使用中,可能会需要使用到升级固件这个功能,在linux的系统中提供了固件子系统这个设备模型来帮助快速的升级固件。在这里先将linux中提供的常用的接口来说明下:内核的固件接口:#include int request_firmware(const struct firmware **firmware_p, const char *name,原创 2012-04-19 21:35:45 · 15751 阅读 · 2 评论 -
makefile参数说明
通常我们需要看看自己的编写的makefile是否有错误,命令是否正确,执行顺序是否使我们期望的方式,这里就需要使用makefile的参数。-n--just-print--dry-run--recon不执行参数,这些参数只是打印命令,不管目标是否更新,把规则和连带规则的命令打印出来,但不执行。-t--touch这个参数的意思就是把目标文件的时间更新,但原创 2011-11-01 21:39:06 · 10779 阅读 · 0 评论 -
Makefile中使用的函数
Makefile中使用的函数在学习有哪些函数之前,现在先看看如何使用,语法是怎么样的。如下:$()或是${}这里,function是函数名,make支持的函数不多。arguments是函数的参数,参数间以逗号“,”分隔,函数名和参数之间以“空格”分隔。函数调用以“$”开头,用圆括号或者是花括号括起。语法就是这些,起始是要注意格式要求,现在开始makefile中的函数原创 2011-11-01 21:37:24 · 2793 阅读 · 0 评论 -
shell中引号的使用
在我们shell脚本中,通常会使用引号,但是使用的引号到底有哪些区别呢? 单引号目的: 为了保护文字不被转换.除了他本身. 就是说除去单引号外, 在单引号内的所有文字都是原样输出.双引号目的: 为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出.反单引号函数转换. 但单引号内其无作用.比如a=`da原创 2011-11-01 21:34:20 · 2183 阅读 · 0 评论 -
cat proc/version在内核中是如何实现的?
proc/version平时的时候我们都在用cat /proc/version来获得我们内核的版本号,但是是如何产生的呢?let's see see fs/proc/version.c。static int version_proc_show(struct seq原创 2011-09-23 22:31:51 · 14704 阅读 · 0 评论 -
基于V4L2的视频驱动开发
基于V4L2的视频驱动开发编写基于V4L2视频驱动主要涉及到以下几个知识点:●摄像头方面的知识要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。●Camera解码器、控制器如果摄像头是模拟量输出的,要熟悉解码器的配置。最后数字视频原创 2011-08-25 21:00:30 · 4415 阅读 · 1 评论 -
VIM 卡片,常用的命令
原创 2011-09-07 21:10:41 · 3265 阅读 · 0 评论 -
走读printk代码
走读printk代码在我们书写内核代码的时候通常会使用printk,这里我们看下printk是如何和uart关联起来的。关于uart的相关的硬件知识不介绍了,so easy。我们这里只是走读下printk的代码,看看和uart的驱动的关联。printk--原创 2011-09-06 19:32:35 · 4699 阅读 · 0 评论 -
printk如何定向输出到UART的?
我们通常在config里面配置这么一句“CONFIG_CMDLINE="console=tty0 console=ttyMT3,921600n1 root=/dev/ram"”,然后修改console的赋值就可以改变输出的位置,代码中如何实现的呢?这里紧接着上文中的pri原创 2011-09-06 21:40:27 · 4829 阅读 · 0 评论 -
LCD驱动中常识问题
1、常见的视频格式分辨率QQCIF Quarter QCIF 88*72 QCIF面积的1/4SQCIF Sub Quarter CIF 128*96 QCIF Qua原创 2011-08-02 21:43:33 · 2716 阅读 · 0 评论 -
引导加载程序之争:了解 LILO 和 GRUB
引导加载程序之争:了解 LILO 和 GRUB<br />对照并比较这两个竞争对手<br /><br />级别: 初级<br />Laurence Bonney (bonneyl@uk.ibm.com), WebSphere MQ JMS Test Team Lead, IBM<br />2005 年 9 月 20 日从普通的桌面用户到 Linux® 系统管理员,大部分 Linux 用户都使用过一种名为引导加载程序的工具。此类工具的不同变种会提供不同层次的支持和功能。在很多情转载 2010-07-23 15:23:00 · 684 阅读 · 0 评论 -
转自 Linux大棚《find技巧》
<br />1. 想查看当前文件夹及子文件夹里有没有文件名为“abc”的文件<br /># find . -name abc<br />. :表示当前目录<br />-name:表示要根据名称查找<br />2. 想查看当前文件夹及子文件夹里有没有”xyz”目录<br /># find . -type d -name xyz<br />-type:表示设定类型,d表示文件夹类型,可以替换为f(普通文件)、l(链接文件)<br />3. 想找出当前文件夹及子文件夹里所有后缀是”.txt”的文件<br转载 2010-07-20 10:39:00 · 1031 阅读 · 1 评论 -
Ubuntu 10.04 使用libfetion
在Ubuntu 10.04 中,默认的输入法改为了IBUS。这个输入法的输入都比以前的快很多。但是在libfetion中,却打开不了。这里只要简单的安装一个组件就可以; sudo apt-get install ibus-qt4 然后,开始享受IBUS pinyin 吧!原创 2010-05-20 13:02:00 · 906 阅读 · 0 评论 -
Ubuntu zgegblog十个漂亮主题
发现自己还真是发烧友,安装要花8 9 个小时 ,然后安装完毕了。看起来还真是酷,感觉舒服的多了。但是按官方的安装方法那要花个 8 9个小时啊。我想了个办法,把我已经安装好的主题拷贝出来,然后大家可以快速下载这样就快多了。可以下载这个 : zegeblog-themes.zip这里面有壁纸,有主题,还有登录窗口。设置登录窗口要把themes文件夹里的主题拷贝到/usr/s原创 2009-12-04 19:34:00 · 831 阅读 · 0 评论 -
linux启动logo修改 bootlogo
改目标:用自定义的ppm图片替代/drivers/video/logo/logo_linux_clut224.ppm同时删除logo_linux_clut224.c logo_linux_clut224.o文件这样才能使编译的使用logo_linux_clut224.ppm重新编译ppm图片的生成:# pngtopnm logo_linux_clut224.png > logo_l原创 2010-02-01 18:18:00 · 4491 阅读 · 0 评论 -
Linux Kernel時序的三種機制
最近在寫Driver時,常常遇到需要「等待一段時間」再處理的動作,以往我都傻傻的用msleep()或mdelay(),殊不知這種busy waiting會hold住cpu資源,在這段期間內都無法讓給其他process執行,時間短(10ms以下等級)或許還可以,太長就不行了,所以需要Kernel本身就有提供的「時序」機制來做處理,於是我漸漸學會了如何使用Timer、Tasklet和Workqueue转载 2010-02-01 17:50:00 · 1994 阅读 · 0 评论 -
VPATH与vpath的区别与应用
在Linux操作系统管理中,经常需要用到make命令来编译一些源代码。如内核升级,驱动程序安装等过程中,就需要用到这个命令。关于这个命令的使用技巧已经是老生常谈了。不过笔者这次要谈的是一个被大家所忽视的细节,即VPATH与vpath的区别,以及其在make命令中的应用。 一、让系统自动取寻找文件到依赖关系。 在利用make命令来编译一些大型项目时,往往会涉及到大量的源文件。可能这个项目有原创 2009-11-20 11:15:00 · 638 阅读 · 0 评论 -
探索 /proc 目录
/proc 在 Linux 中是一个比较奇妙的目录,保存了当前系统所有的详细信息,包括进程、文件系统、硬件…… 而且还可以通过 /proc 来即时修改系统中的某些参数。你可能会认为,“文件”指的就是硬盘上保存的数据,要么是文本,要么就是二进制文件。而在 Linux 的世界中,所有的东西都可以通过文件来表示和管理,哪怕是硬件设备,也可以通过 /dev 下的设备文件来操作硬件设备。/proc 就是这样转载 2010-01-18 18:28:00 · 1212 阅读 · 1 评论 -
关机和重启在Linux Kernel中的哪些函数里实现?
关机和重启在Linux Kernel中的哪些函数里实现。 reboot的最终实现在arch_reset()函数,它通常定义在arch/arm/mach-xxx/include/mach/system.h里。system.h被ARM kernel的public code应用,因此你需要定义这个头文件,并实现它。arch_reset的函数原型为void arch_reset(char原创 2010-01-15 17:28:00 · 4835 阅读 · 0 评论 -
MACHINE_START宏
linux2.6.18内核,在Mach-s3c2410.c文件中,有如下的宏定义: MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch to SMDK2410 */ /* Maintainer: Jonas Dietsche */ .phys_io = S3C原创 2010-01-13 16:52:00 · 1146 阅读 · 1 评论 -
内核态与用户态
内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的用户程序使用,它们工作在用户态。运行于处理器核心态的代码不受任何的限制,可以自由地访问任何有效地址,进行直接端口访问。而运行于原创 2010-01-13 14:27:00 · 16804 阅读 · 3 评论 -
Arm linux 内核移植及系统初始化过程分析
Arm linux 内核移植及系统初始化过程分析本文主要介绍内核移植过程中涉及文件的分布及其用途,以及简单介绍系统的初始化过程。整个arm linux内核的启动可分为三个阶段:第一阶段主要是进行cpu和体系结构的检查、cpu本身的初始化以及页表的建立等;第二阶段主要是对系统中的一些基础设施进行初始化;最后则是更高层次的初始化,如根设备和外部设备的初始化。了解系统的初始化过程,有益于更好地移植内核。转载 2009-10-14 16:10:00 · 1247 阅读 · 0 评论 -
嵌入式系统的动态电源管理技术
嵌入式系统的动态电源管理技术作者:刘旭晖 http://blog.youkuaiyun.com/colorant/archive/2008/08/25/2827812.aspx在嵌入式系统中,电源的管理和功耗的控制,始终是一个非常重要的任务。所以通常面向嵌入式应用的CPU都会有各自不同的软硬件策略来辅助电源管理和功耗控制,最常见的包括各种低功耗模式,以及动态的频率切换等功能。本文转载 2009-09-24 00:00:00 · 1311 阅读 · 0 评论 -
Ubuntu下自由切换jdk的版本
有时候大家会在Ubuntu中安装多个jdk,有时候需要相互切换。 可以使用下面的命令做到: sudo update-alternatives --config javasudo update-alternatives --config javac 然后选一个编号,就切换过去了,就这么简单。原创 2010-02-08 10:38:00 · 1951 阅读 · 0 评论 -
error trying to exec 'cc1' 错误修复
error trying to exec cc1错误查找错误提示:error trying to exec cc1: execvp: No such file or directory解答:1)所使用的GCC是不是合适的;2)查看自己的PATH路径是否加入了一些存在冲突的路径;原创 2009-12-11 10:04:00 · 3257 阅读 · 0 评论 -
vim cscope taglist 使用
vim cscope taglist 使用一 . 安装apt-get install exuberant-ctags cscope global cppcomplete 和 taglist 要到www.vim.org的扩展列表中下载 taglist 的下载地址:http://www.vim.org/scripts/script.php?script_id=273cppcomplete 的下原创 2009-12-15 10:15:00 · 3759 阅读 · 0 评论