
linux学习
文章平均质量分 85
yuyin86
这个作者很懒,什么都没留下…
展开
-
shell内置命令
shell有许多内置到它的源码中的命令。因为命令是内置的,shell无需到磁盘上定位它们,这样执行速度将快得多。 bash提供的help特性提供了所有内置命令的在线帮助。 内置命令命 令含 义:空命令。返回退出状态零.在当前进程的环境下执行程序。同source.file原创 2010-01-22 14:37:00 · 2393 阅读 · 0 评论 -
linux PS1 提示符定义
PS1:就是用户平时的提示符。 PS2:第一行没输完,等待第二行输入的提示符。 Linux系统提示符是用系统变量PS1来定义的。一般系统默认的形式是:[username@host 工作目录]$. 用echo $PS1可以得到PS1的值,即PS1="[/u@/h /w]"/$ 登录后可以更改PS1的显示样式,但是当退出重启登录进入系统后,样式又变成系统默认的样式了,如果要彻底改变它的转载 2010-01-22 19:34:00 · 2304 阅读 · 0 评论 -
如何定制bash提示符
我们常用的bash提示符一般是这样的:[username@hostname workpath]$即显示出用户名、主机名及当前工作目录。只要修改PS1系统变量即可,修改办法,在终端中执行命令:export PS1=[/u@/h /W]$ ,执行后命令提示符马上变回默认的样子。或者将其添加到$HOME/.bash_profile或是/etc/profile及 提转载 2010-01-22 23:23:00 · 832 阅读 · 0 评论 -
fork source exec区别
fork 使用 fork 方式运行 script 时, 就是让 shell(parent process) 产生一个 child process 去执行该 script, 当 child process 结束后, 会返回 parent process, 但 parent process 的环境是不会因 child process 的改变而改变的. source 使用 sou转载 2010-01-22 16:35:00 · 1142 阅读 · 2 评论 -
linux环境变量
PS1:就是用户平时的提示符。 PS2:第一行没输完,等待第二行输入的提示符。 Linux系统提示符是用系统变量PS1来定义的。一般系统默认的形式是:[username@host 工作目录]$. 用echo $PS1可以得到PS1的值,即PS1="[/u@/h /w]"/$ 登录后可以更改PS1的显示样式,但是当退出重启登录进入系统后,样式又变成系统默认的样式了,如果要彻底改变它的原创 2010-01-22 23:22:00 · 653 阅读 · 0 评论 -
Linux 命令学习之apt命令详解
Linux 命令学习系列教程之apt命令详解 apt-cache search # ——(package 搜索包) apt-cache show #——(package 获取包的相关信息,如说明、大小、版本等) sudo apt-get install # ——(package 安装包) sudo apt-get install # —–(package - - rei转载 2010-01-25 18:06:00 · 1910 阅读 · 3 评论 -
内核编译
一、源代码管理这里首次安讨论源代码的管理问题,下面给出一个方便的管理源代码的做法:1、首先,去http://www.kernel.org下载一份比较新的源代码。(可以下载最新的源代码,但是并不强求,原因后面会讲)2、在自己的主目录下面新建一个目录,名字可以随便取,这里以名称为kernel为例,以后这个文件夹就将专门用来存放源代码和编译的安装包,可以长期保存这个文件夹。3、打开终端,执行:代码:转载 2010-03-19 10:10:00 · 1268 阅读 · 0 评论 -
debian源目录结构及debian包结构
<br />顶层目录包括两个子目录,dists/和pool/,pool是包文件存放的目录,dists中包含一些分制(stable、testing、unstable目录),这里ubuntu下的文件目录结构和debian 是不太一样的。dists/stable 下包含三个子目录,main、contrib、non-free。在这些子目录中,每个里面都有一个source 目录 和多个支持不同体系结构(如binary-i386、binary-amd64)的目录。<br /> main 、contrib转载 2011-01-18 08:51:00 · 4091 阅读 · 2 评论 -
deb包 打包过程
<br />因为debian的包管理机制比较健全,加上官网上给出的Policy Manual很详细,打包过程容易了很多。这里主要讲一下单个二进制文件的打包过程。<br />deb包的打包步骤:<br />1、在源码的基础上添加适当的编译脚本(configure、makefile)。<br />2、使用dh_make生成相应的debian包模板,并对模板进行你需要的修改(尤其是debian/rules文件)。<br />3、使用dpkg-buildpackage等建包命令进行建包。<br />下面通过一个实例转载 2011-01-18 08:47:00 · 1416 阅读 · 0 评论 -
关于ucos-ii的移植
<br />们知道在UC/OS-ii的操作系统中有三个文件是关于移植的文件,它们分别是:OS_CPU.H、OS_CPU_A.ASM 、OS_CPU_C.C。OS_CPU.H 头文件定义了数据类型、处理器堆栈数据类型字长、堆栈增长方向、任务切换宏和临界区访问处理。OS_CPU.C用户任务创建时,需要调用 OSTaskStkInit 初始化任务堆栈,任务堆栈用于在发生任务上下文切换时保存被调度的任务寄存器内容。OS_CPU.C 用户任务创建时,需要调用 OSTaskStkInit 初始化任务堆栈,任务堆栈用于在转载 2011-01-18 08:58:00 · 1122 阅读 · 0 评论 -
内存管理
<br />内存管理分为连续物理内存和非连续内存区管理:连续内存管理<br />1. 页描述符<br />Page记录了每一个页框的状态信息,所有的页描述符存放在mem_map数组中。<br />2. 节点(node)-> 内存管理区(zone)-> 页描述符page->物理页<br />Node:是针对NUMA模型设计的,一般情况下都是UMA模型,所以节点也就一个<br />Zone:在一个节点下有很多管理区,<br />ZONE_DMA 包含低于16MB的内存页框<br />ZONE_NORMAL 包转载 2011-01-18 08:59:00 · 1022 阅读 · 0 评论 -
Eclipse CDT调试linux内核
<br />在Linux操作系统上,一般以C/C++开发为主。使用这个平台,主要都是针对C/C++开发。传统在 Linux下开发程序,是在文字模式下,利用vi或者vim等文字编辑器编辑C/C++程序,保存之后,在命令行中使用gcc进行相应的编译操作。如果想要调试程序,一般会用gdb来调试,但也都是在终端命令行环境下进行操作的。 <br />但是,这种开发和调试的环境,对熟悉使用IDE开发的人会又很大的不便;对一些不熟悉Linux环境的开发人员工作更是较为困难的;还有,这种开发和调试的方式,相对来说,生产力不转载 2011-01-18 09:00:00 · 4198 阅读 · 2 评论 -
deb包 安装和删除
<br />安装的一般步骤:<br />1、把包的控制文件解压(control.tar.gz/bz2)<br />2、如果有另外一个版本这样的包(the same package)已经被安装,执行原有包(the old package)的prerm脚本。<br />3、运行当前安装包的preinst脚本,当然如果有的话。<br />4、解压包中的新文件(data.tar.gz),同时,备份原有的文件,以便当发生错误时,可以恢复。<br />5、如果已经安装了另一个版本的这样的包,执行这个原有包的postrm转载 2011-01-18 08:48:00 · 1053 阅读 · 0 评论 -
U-boot中定制自己的命令
<br /> 我们使用U-boot的时候,大多数都是直接编译再移植了,很少改动里面的具体内容,特别是其中包含的命令等。虽然里面包含了一些常用的提供给用户进行交互的命令,并且也比较实用了。但是,根据某些开发板的特殊操作和用户的特定需求,还是不得不去在Uboot中,添加一些供自己调试和开发的命令,这样会更方便快捷的开展工作。 <br /> 这样,就介绍一下关于如何在Uboot中,添加命令的方法和步骤。 <br /> 首先,介绍以下有关Uboot的命令定义。<br /> 每个命令都是通过U转载 2011-01-18 08:56:00 · 1068 阅读 · 0 评论 -
U-boot初级学习笔记
<br />最近一直在做U-boot和Linux内核的编译与移植的工作,就来讲一讲对U-boot的初步理解。我的目标板核心片是i.MX255,以下都是依据这个环境所言。<br />1.U-boot启动过程:<br />1)/uboot/cpu/arm926ejs/start.S文件是Uboot的入口程序。 <br />2)/uboot/lib_arm/board.c Uboot执行的第一个C函数,完成系统的初始化。<br />3)init_sequence[] 是基本的初始化函数指针。 <br />4)vo转载 2011-01-18 09:03:00 · 1078 阅读 · 0 评论 -
linux 启动和线性地址总结
启动总结<br />1. 在bootloader加载grub到0×07c00地方,grub把实模式代码setup放到0×90000处,把vmlinux放在0×100000即1M的地方。<br />2. 在boot/head.s中,跳转到setup的入口处_start地方开始执行,然后短跳转到start_of_setup处执行,其功能为:<br />(1) 复位硬盘<br />(2) 在_end后建立512的堆栈<br />(3) 比对签名<br />(4) 清空bss<br />(5) Call main<转载 2011-01-18 09:04:00 · 1040 阅读 · 0 评论 -
deb包 建包原理
<br />首先,如果你不理解debian/rules文件,可以先查看一下《Not Your Grandpa’s Debhelper》<br />一、建立环境(设置环境变量)<br />二、检查依赖和冲突<br />三、用-T选择一个目标,或调用fakeroot debian/rules clean 清除生成树。<br />四、调用dpkg-source产生源码包(如用-b,产生二进制包)<br />五、调用debian/rules build,然后fakeroot debian/rules binary-转载 2011-01-18 08:45:00 · 2743 阅读 · 0 评论 -
deb包 内容解析
<br />deb文件,其实是一种ar文件,但是有一个<!arch>头,如果你用编辑器打开的话,可以看到<br />使用ar解压后,可以看到里面包含一般三个文件:<br />debian-binary 只包含一行信息 “2.0”<br />control.tar.gz 这个是控制信息的压缩包<br />data.tar.gz 包含一个文件系统,它是最后一个成员,在这个文件之后的成员将在安装时被省略掉<br />这里说一下control.tar.gz中的control文件<br /转载 2011-01-18 08:46:00 · 1332 阅读 · 0 评论 -
debian打包工具
<br />经过一个星期的调研,对Debian源码包和二进制包的一般结构了解的基础上,对源码文件进行了打包。<br />这里总结一下打包的工具:<br />debhelper<br />debhelper最初是由Joey Hess写的一套程序用于帮助Debian packager 编写rules files。Rules files 是一个makefile文件,包含建立和创建Debian包的指令。<br /> <br />dh_make <br />dh_make与debhelper是相关的,但不是debhe转载 2011-01-18 08:50:00 · 3161 阅读 · 0 评论 -
SVN 简明教程
<br />以前不太注意版本控制,有时候,弄了一天的程序没有及时保存,费了;跟团队的人一起做东西时,联调之前还要该死的整合,有了SVN,我们可以很好的进行版本控制以及组内协助。<br />写篇日志,作为参考<br />首先从TortoiseSVN官网上下载TortoiseSVN,安装<br /><br />在你要同步的文件夹上,点击右键<br /> <br />输入URL<br /> <br />点击OK后,出现如下界面<br /> <br />输入你的用户名和密码(这里是你的QA上的用户名和密码)<br转载 2011-01-18 09:01:00 · 969 阅读 · 0 评论 -
Linux网络编程一步一步学+基础
http://blogold.chinaunix.net/u1/48325/showart_413841.html转载 2011-06-14 08:16:00 · 680 阅读 · 0 评论 -
基于Linux视频驱动接口V4L2视频采集编程
视频采集基本步骤流程如下: 打开视频设备,设置视频设备属性及采集方式、视频数据处理,关闭视频设备,如下图所示: 一、打开视频设备打开视频设备非常简单,在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备:1. 用非阻塞模式打开摄像头设备int cameraFd;cameraFd = open("/dev/video0", O_RDWR | O_N转载 2011-06-17 13:22:00 · 791 阅读 · 0 评论 -
linux 中解析命令行参数 (getopt_long用法)
getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下: #include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts转载 2011-06-17 09:41:00 · 667 阅读 · 0 评论 -
linux读写文件速度测试
一. 文件一次读入速度linux下读文件这东西最后都是要通过系统调用sys_read(fd,buf,count)来实现的,所以如果要提高速度,就是最简单地调用sys_read的封装,比如直接用read()或fread()。下面是我在linux下的几个测试。首先创建一个130M数据文件 dd if=/dev/zero of=data bs=1024k count=130[dd if=/d转载 2011-06-17 14:28:00 · 1837 阅读 · 2 评论 -
关于Linux下的视频编程
前言:目前正在忙于ARM平台的Linux应用程序的开发(其实是刚刚起步学习啦)。底层的东西不用考虑了,开发板子提供了NAND Bootloader,和Linux 2.6的源码,而且都编译好了。自己编译的bootloader可以用,但是Linux编译后,文件很大,暂且就用人家编译的系统,先专心写应用程序吧。。正文:要做的任务是,把一块板子上的摄像头采集的图像和声卡采集的声音(貌似很啰嗦哈)通过T转载 2011-06-20 08:21:00 · 739 阅读 · 0 评论 -
ioctl函数详解
本函数影响由fd 参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0 :成功 -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:套接口操作文件操转载 2011-06-20 11:10:00 · 1532 阅读 · 0 评论 -
linux内核空间与用户空间信息交互方法(转)
内核空间(kernel-space) VS 用户空间(user-space)作为一个Linux开发者,首先应该清楚内核空间和用户空间的区别。关于这个话题,已经有很多相关资料,我们在这里简单描述如下:现代的计算机体系结构中存储管理通常都包含保护机制。提供保护的目的,是要避免系统中的一个任务访问属于另外的或属于操作系统的存储区域。如在IntelX86体系中,就提供了特权级这种保护机制,通过转载 2011-06-21 13:57:00 · 909 阅读 · 0 评论 -
驱动程序与应用程序之间的通信
驱动程序必须与应用程序进行通信,才能最终达到应用程序控制设备的目的,不然驱动有QIU用。要通信就涉及到3个方面: 1.应用程序与驱动程序通信2.驱动程序与应用程序通信3.数据传输下面分别讨论1。应用程序与驱动程序通信1-1 应用程序实现与驱动通信的过程: ---用CreateFile打开设备,然后用DeviceIoControl和驱动通信,包括从驱动读数据和写数据2种情况也可以使用ReadFile转载 2011-06-30 14:27:00 · 1075 阅读 · 0 评论 -
在linux应用层写driver驱动程序介绍
刚从vxworks或其他rtos转到linux的朋友一定对linux下涉及到硬件的操作很不适应,因为在linux的体系结构中不允许应用层直接对物理地址进行访问,应用看到的都是进程内经过映射的虚拟地址。所以一般的做法是只要涉及到硬件的操作都是设计一个相应的driver,随后应用程序通过driver提供的文件操作接口去读写寄存器或者物理内存。在这里介绍一种比较折中的方法,即通过特殊的设计使得应用程序可转载 2011-06-30 14:37:00 · 1370 阅读 · 0 评论 -
在驱动和应用程序间共享内存
在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是: l 应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存) l 由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程序。(驱动程序分配共享内存) 使用I转载 2011-06-30 14:56:00 · 1137 阅读 · 0 评论 -
V4L2 – Linux下视频驱动模型
在DM6446平台,我们在GPP端一般使用MontaVista操作系统来进行程序控制。MontaVista作为一种嵌入式的Linux,和桌面Linux类似,同样使用视频驱动V4L2(Video For Linux Two)来进行视频采集、输出。本文就V4L2的使用方式做简易说明。视频采集的基本流程一般的,视频采集都有如下流程: 打开视频设备在V4L2中,视频设备被看做一个文件。转载 2011-06-30 15:57:00 · 1158 阅读 · 0 评论 -
linux进程间的同步方法
进程间通讯(IPC)方法主要有以下几种: 管道/FIFO/共享内存/消息队列/信号 1.管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式转载 2011-07-08 00:07:53 · 523 阅读 · 0 评论 -
linux-programming-note-6(基本进程间通信方法)
Chapter 9-------基本进程间通信方法控制多线程下对某个非共享资源的访问,最简单的方法是使用临时文件作为访问标志。首先进程判断临时文件是否存在,如果存在表明有进程占用了该资源。进程A------\ \|文件存在?---------资源进程B_______/使用文件实现转载 2011-07-08 00:17:52 · 597 阅读 · 0 评论 -
S3c2410 LCD驱动学习心得
一 实验内容简要描述1.实验目的学会驱动程序的编写方法,配置S3C2410的LCD驱动,以及在LCD屏上显示包括bmp和jpeg两种格式的图片2.实验内容 (1)分析S3c2410实验箱LCD以及LCD控制器的硬件原理,据此找出相应的硬件设置参数,参考xcale实验箱关于lcd转载 2011-07-07 09:08:49 · 1135 阅读 · 0 评论 -
Linux经典书籍推荐
入门篇 《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。驱动篇 《LINUX设备驱动程序》就是网上说的“转载 2011-07-09 10:23:13 · 536 阅读 · 0 评论 -
编译OpenCV for arm-linux
OpenCV是Intel支持的开源计算机视觉库。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。它不依赖于其它的外部库—尽管也可以使用某些外部库。OpenCV使用BSD License,对非商业应用和商业应用都可以免费使用。OpenCV的主要应用转载 2011-07-08 16:44:59 · 941 阅读 · 0 评论 -
linux C 之时间函数
函数分类:1. 设置时间: settimeofday, tzset2. 获取时间: time, ftime, gettimeofday3. 时间格式转换: mktime, strftime; gmtime, localtime; asctime, ctime4. 其他: cloc转载 2011-07-14 11:44:28 · 717 阅读 · 0 评论 -
Linux驱动程序框架
http://blog.youkuaiyun.com/lemon_fantasy/archive/2009/02/17/3901030.aspxLinux 将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是L转载 2011-07-15 19:37:04 · 581 阅读 · 0 评论 -
Linux驱动程序入门
序言 Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,转载 2011-07-15 19:38:34 · 630 阅读 · 0 评论 -
linux c程序获取cpu使用率及内存使用情况
想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了。方法就是读取proc下的文件来获取了。 cpu使用率: /proc/stat ,内存使用情况: /proc/meminfo看程序 :/***********************转载 2011-07-16 11:39:12 · 3073 阅读 · 0 评论