随笔分类 - linux
linux学习与应用
如何成为一个Linux内核开发者
摘要:你想成知道如何成为一个Linux内核开发者么?或者你的老板告诉你,“去为这个设备写一个Linux驱动。“这篇文档的目的,就是通过描述你需要 经历的过程和提示你如何和社区一起工作,来教给你为达到这些目的所需要知道的所有知识。本文也尝试解释社区为什么这样工作的一些原因。内核几乎全 是用C写成的,有一些架构相关的部分是用汇编语言写成的。熟练掌握C语言是内核开发的必备条件。汇编语言(任何架构)的了解不是必须的,除非你准备做某个 架构的底层开发。虽然下面这些书不能完全代替扎实的C语言教学和/或者成年累月的经验,他们还是不错的参考,如果用得着的话:- "The C Programming Lan
阅读全文
mdev的使用方法和原理。
摘要:mdev的使用方法和原理mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。mdev使用mdev的使用在busybox中的mdev.txt文档已经将得很详细了。但作为例子,我简单讲讲我的使用过程:(1)在编译时加上对mdev的支持(我是使用的是busybox1.10.1): Linux System Utilities ---> mdev Support /etc/mdev.co
阅读全文
Qt/Linux 下的摄像头捕获(Video4Linux2)
摘要:Linux下使用各种设备是一件令人兴奋的事情。在Unix的世界里,用户与硬件打交待总是简单的。最近笔者在Linux下搞了摄像头的开发,有一点感想发于此处。Linux中操作一个设备一般都是打开(open),读取(read)和关闭(close)。使用Read的大多是一些字符型设备,然而对于显示屏 或者摄像头这种字符设备而已,挨个字的读写将使得系统调用变得频繁,众所周之,系统调用对于系统而已是个不小的开销。于是有内存映射(mmap)等物,本 例中将讲述在Linux下开发摄像头的一般过程以及使用Qt进行界面开发的实例。使用mmap方式获取摄像头数据的方式过程一般为:打开设备 -> 获取设备的信息
阅读全文
awk运算符和内置变量
摘要:1.awk的常规表达式元字符 \ 换码序列 ^ 在字符串的开头开始匹配 $ 在字符串的结尾开始匹配 . 与任何单个字符串匹配 [ABC] 与[]内的任一字符匹配 [A-Ca-c] 与A-C及a-c范围内的字符匹配(按字母表顺序) [^ABC] 与除[]内的所有字符以外的任一字符匹配 Desk|Chair 与Desk和Chair中的任一个匹配 [ABC][DEF] 关联。与A、B、C中的任一字符匹配,且其后要跟D、E、F中的任一个字符。 * 与A、B或C中任一个出现0次或多次的字符相匹配 + 与A、B或C中任何一个出现1次或多次的字符相匹配 ? 与一个空串或A、B或C在任何一个字符相匹配 (Bl
阅读全文
Debian 忘记root密码的处理(passwd:command not found)
摘要:Step1:在开机启动进入蓝色GRUB界面后,用上下键,迅速移动光标至第二行...(recovery mode)Step2:按字母 “e” 进入编辑界面,于第七行,即有 “linux /vm......single” 的行 末尾加上 “init=/bin/bash” (引号不可省略) Step3:按 “Ctrl+x ” 启动系统,进入 root@(none): 命令行模式Step4:使用命令使系统可读写 # mount -no remount, rw /Step5:此时 passwd、vi、vim 等都提示Command not found。 使用Debian自带默认文本编辑器 nano 编辑
阅读全文
实例解析linux内核I2C体系结构
摘要:一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有:●思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。第一种方法问题(对应第二种方法的好处)有:●要求工程师不仅要对I2C设备的操作熟悉,而且要熟悉I2C的适配器操作;●要求工程师对I2C的设备器及I2C的设备操作方法都比较熟悉,最重要的是写出的程序可移植性差;●对内核的资源无法直接使用。因为内核提供的所有I2C设备器及设备驱动都是基于I2C
阅读全文
linux内核GPIO模拟I2C实例
摘要:前言:在许多情况下,我们并没有足够的I2C总线,本文主在介绍如何利用Linux内核中的i2c-gpio模块,利用2条GPIO线模拟i2c总线,并挂载设备。思路:先通过对i2c-gpio所定义的结构体初始化(包括初始化i2c的2条线,频率,timeout等)并将i2c-gpio模块编译进内核,实现用GPIO_X,GPIO_Y 2条GPIO线注册新的i2c总线。此时这个模块对i2c设备是透明的,及挂在这2条GPIO线的i2c设备可以直接使用Linux内核通用的i2c设备注册,传输和注销等方法。步骤:首先确认在注册i2c-gpio模块前,所要用到的2条GPIO口是没有被系统其它地方所调用的。在每个系
阅读全文
Thttpd manual
摘要:1.名字thttpd- 是一款小型/快速/非阻塞的HTTP服务程序2.概要thttpd [-C configfile] [-p port] [-d dir] [-dd data_dir] [-r|-nor] [-s|-nos] [-v|-nov] [-g|-nog] [-u user] [-c cgipat] [-t throttles] [-h host] [-l logfile] [-i pidfile] [-T charset] [-P P3P] [-M maxage] [-V] [-D]3. 描述thttpd 是简单的,小型,快速而安全的 HTTP 服务程序。 没有许多特别的特征,但是
阅读全文
tar用法
摘要:构造tar包tar zcvf tar包名.tar 目录,文件列表而解tar包tar zxvf tar包名.tar 目录,文件列表解压语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项:c创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。r把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。t列出档案文件的内容,查看已经备份了哪些文件。u更新文件。就是说,用新增的文件取代原备份
阅读全文
在Linux下minicom超级终端使用方法
摘要:系统环境: Ubuntu 9.101.下载安装minicomsudo apt-get install minicom2.运行minicom运行“sudo minicom -s”命令进入配置界面(或者直接运行“sudo minicom”, 然后同时按下“回车+A”,再按Z,最后按O,同样进入配置界面)+----[配置]--------+| 文件名和路径 | 文件传输协议 | 串口设置 | 调制解调器和拨号 | 屏幕和键盘 | 设置保存为dfl | 设置保存为.. | 退出 | 退出Minicom +--------------------+3.配置串口选择 “串口设置”,进入串口配置界面+---
阅读全文
Linux下解压rar
摘要:1、安装下面是安装过程和命令详解:http://www.rarsoft.com/download.htm 最新版下载地址# wget http://www.rarsoft.com/rar/rarlinux-3.9.3.tar.gz# tar -zxvfrarlinux-3.9.3.tar.gz# cd rar# make# make install运行rar –help可以看到帮 助信息,如果出现下列信息:#rar: /lib/tls/libc.so.6: version `GLIBC_2.4′ not found (required by rar)#rar: /lib/tls/libc.so
阅读全文
获取ls源代码
摘要:# whereis lsls: /bin/ls /usr/share/man/man1/ls.1.gz# dpkg -S /bin/lscoreutils: /bin/ls# apt-get source -d "coreutils“下载到 coreutils_8.5-1.diff.gz coreutils_8.5-1.dsc coreutils_8.5.orig.tar.gz # tar -zxvf coreutils_8.5.orig.tar.gz 解压下载到的最大的tar文件 在解压后的文件夹里的src文件夹里就有源代码
阅读全文
Virtualbox下Ubuntu host机usb转串口设置问题
摘要:1.在windows下安装usb转串口驱动,之后在‘设备管理器’内看到USB-SERIAL CH340(COM3)说明windows下驱动已安装好。2.进入虚拟机的‘设置‘——’串口‘进行设置3.运行Ubuntu输入$ ls /dev/tty* -alt 找到 /dev/ttyUSB[0-N] 说明ubuntu已经支持了host机的usb转串口装置4 继而可以配置minicom等设备了
阅读全文
dpkg and apt
摘要:dpkg学习:(1)dpkg是一个较底层的安装工具,处理.deb文件,软件包依赖性需要更高层的前端工具是apt; dpkg本身是不能解决依赖的。 dpkg是dpkg-deb的前端,如果dpkg搞不定,可以用dpkg-deb。(2)所有的packages信息在/var/lib/dpkg目录下: available是安装源的描述,包括已安装和没有安装的 info目录描述已安装的包:.list后缀是文件列表,.prerm描述关联的服务, .config是配置,.preinst安装前配置,.postinst安装后配置(3)dpkg命令: dpkg -l 查看已经安装的所有包 dpkg -s vim-t
阅读全文
如何查看linux系统源码
摘要:能够查看linxu系统源码是类unix系统开源性的体现,是在其他系统享受不到的待遇,系统Debian,将查看过程列在下面:例如我想查看cat命令工具的源码——查看工具的路径$ whereis catcat: /bin/cat /usr/share/man/man1/cat.1.gz查看工具所属的包$ dpkg -S /bin/catcoreutils: /bin/catcoreutils就是cat的源码包名下载工具源码包$ sudo apt-get source coreutils[sudo] password for lizh: 正在读取软件包列表... 完成正在分析软件包的依赖关系树 ..
阅读全文
bash中trap的用法
摘要:[root@cnc-squid2 ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFS
阅读全文
Dash与Bash的语法区别
摘要:如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交 互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题 (将先前默认的 bash shell 更换为了 dash。其表现是 /bin/sh 链接到了 /bin/dash 而不是传统的 /bin/bash。Ubuntu Edgy 是第一个将 dash 作为默认 shell 的发行,这似乎是受了 Debian 的影响。在 Ubuntu Wiki 上可以了解到更换的相关原因,dash.
阅读全文
VIM常见问题解答
摘要:01) 为什么别人的方法在我这里行不通?(02) 如何找到上次编辑的文件?(03) 如何复制粘贴?(04) 如何在多个文件中进行替换?(05) 如何把fold一次全部打开?(06) 如何选择、复制或者查找光标所在的单词?(07) 如何计数搜索的字符串?(08) 如何去掉高亮搜索?(09) 如何解决linux下gvim中文菜单乱码的问题?(10) 如何对所编辑的文件语法高亮显示?(11) 如何快速插入多行数字0-99?(12) 如何设置中文编码?(13) 如何去掉或者插入^M这样的字符?(14) 如何整体缩进一段代码(插入tab)?(15) 如何合并两行?(16) 如何设置缩进距离(tab宽度)
阅读全文
shell入门基础必备
摘要:1.建立和运行shell程序 什么是shell程序呢? 简单的说shell程序就是一个包含若干行shell或者linux命令的文件. 象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等. 在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件. 执行shell程序文件有四种方法 (1)#chmod +x file(在/etc/profile中,加入export PATH=${PATH}:~/yourpath,就可以在命令行下直接运行,像执行普通命令一样) (2)#sh file (3)# . file ...
阅读全文
Makefile2
摘要:四、嵌套执行make 在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。 例如,我们有一个子目录叫subdir,这个目录下有个Makefile文件,来指明了这个目录下文件的编译规则。那么我们总控的Makefile可以这样书写: subsystem: cdsubdir&&$(MAKE) 其等价于: subsyst
阅读全文

浙公网安备 33010602011771号