随笔分类 - linux
linux学习与应用
    
            
    make的命令行选项
    
            
            
        
摘要:-b -m 忽略,提供其它版本make兼容性。 -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件。 -C DIR --directory=DIR 在读取Makefile之前,进入目录“DIR”,就是切换工作目录到“DIR”之后执行make。存在多个“-C”选项时,make的最终工作目录是第一个目录的相对路径。如:“make –C / -C etc”等价于“make –C /etc”。一般此选项被用在递归地make调用中。 -d make在执行过程中打印出所有的调试信息。包括:make认为那些文件需要重建;那些文件需要比较它们...
        阅读全文
            
        
            
    linux环境变量 export命令详解
    
            
            
        
摘要:由host $ export DVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引发的问题1、${HOME}:首先, HOME 是个变量,它代表你的 home 目录,变量前必须加上 $ 符号,否则会报错usr/local/dvsdk为dvsdk的destination folder 由#echo $DVSDK测试环境变量添加成功否2、想要使得开机时自动加载这个环境变量免除以后每次设置,可将其写入/etc/re.localLinux export 命令功能说明:设置或显示环境变量。(比如我们要用一个命令,但这个命令的执行文件不在当前目
        阅读全文
            
        
            
    GT_Trace的使用
    
            
            
        
摘要:使用Codec Engine开发DaVinci系统,最令人头痛的莫过于调试。由于evm6446开发过程分成DSP端和GPP端,因此我们无法使用IDE下的调试工具对程序进行跟踪调试。为此,TI在Codec Engine中提供了一套名为Generic Trace Support 的模块,专门用来打印Debug信息。要使用GT_Trace,需要在应用程序文件夹下的remote.cfg文件中将GT_Trace的配置://TraceUtil.attrs = TraceUtil.SOCRATES_TRACING; TraceUtil.attrs = TraceUtil.FULL_TRACING; //..
        阅读全文
            
        
            
    getopt_long及其使用
    
            
            
        
摘要:Linux系统下,需要大量的命令行选项,如果自己手动解析他们的话实在是有违软件复用的思想,不过还好,GNU C library留给我们一个解析命令行的接口(X/Open规范),好好使用它可以使你的程序改观不少。使用getopt_long()需要引入头文件#include <getopt.h> 现在我们使用一个例子来说明它的使用。一个应用程序需要如下的短选项和长选项。 短选项 长选项 作用 -h --help 输出程序命令行参数说明然后退出 -o filename --output filename 给定输出文件名 -v --version 显示程序当前版本后退后为了使用getopt
        阅读全文
            
        
            
    Something about the linux/Documentation/kbuild
    
            
            
        
摘要:1. Open the 00-INDEX first, it give some overview of the kbuild directoryroot@debian:/usr/src/linux-2.6.32.5/Documentation/kbuild# vi 00-INDEX 00-INDEX - this file: info on the kernel build processkbuild.txt - developer information on kbuildkconfig.txt - usage help for make *configkconfig-language.t
        阅读全文
            
        
            
    .ko内核模块文件以及载入模块命令modprobe insmod
    
            
            
        
摘要:2.6内核版本,我完成了rtc_driver.c文件,在Makefile加入obj-$(CONFIG_RTC_XXXX) += rtc_driver.o,并对Kconfig进行修改,加入config RTC_XXXX bool "rtcrtcrtcrtcrtc",编译内核和内核模型,只能生成.O文件.请问如何生成能够insmod的.KO文件,是不是应该在Makefile中加些语句生成.ko文件已经完成了,可是[root@localhost char]# insmod rtc_driver.kortc_driver.ko: ELF file rtc_driver.ko not
        阅读全文
            
        
            
    vim命令学习总结
    
            
            
        
摘要:第一讲小结:1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。h (左移)j (下行) k (上行) l (右移) 2. 欲进入vim编辑器(从命令行提示符),请输入∶vim 文件名 <回车> 3. 欲退出vim编辑器,请输入以下命令放弃所有修改∶ <ESC> :q! <回车> 或者输入以下命令保存所有修改∶ <ESC> :wq <回车> 4. 在正常模式下删除光标所在位置的字符,请按∶ x 5. 在正常模式下要在光标所在位置开始插入文本,请按∶ i输入必要文本<ESC> 特别提示∶按下 <E
        阅读全文
            
        
            
    make的常见错误信息
    
            
            
        
            
        
摘要:本文对make执行时可能出现常见错误进行汇总、分析,并给出修正的可能方法。 make执行过程中所产生错误并不都是致命的;特别是在命令行之前存在“-”、或者make使用“-k”选项执行时。make执行过程的致命错误都带有前缀字符串“***”。 错误信息都有前缀,一种是执行程序名作为错误前缀(通常是“make”);另外一种是当Makefile本身存在语法错误无法被make解析并执行时,前缀包含了makefile文件名和出现错误的行号。 在下述的错误列表中,省略了普通前缀: [FOO] Error NN [FOO] signal description 这类错误并不是make的真正错误。它表示...
        阅读全文
            
        
            
    wget 使用技巧
    
            
            
        
摘要:wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。$ wget -r -np -nd http://example.com/packages/这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/与上一条命令相似,但多加了一个 
        阅读全文
            
        
            
    GNU make的特点以及和其它版本的兼容
    
            
            
        
摘要:GNU make特点的一些总结。主要是和其它版本make得比较。这些特征都是以4.2 BSD 中的make的为基准。当需要书写可移植到不同的类UNIX系统上的Makefile时,应避免使用GNU 版本make自身的一些特征。一、 源自System v的特点 下面所罗列的这些是来自System V版本make的一些特点: 1、 变量“VPATH”及它的含义。System V版本的make支持,但没有得到验证。4.3 BSD 的make支持(据说是对System V的make这一功能的仿照)。 2、 可包含其它makefile文件。使用指示符“include”可同...
        阅读全文
            
        
            
    伪目标 多目标 override 指示符
    
            
            
        
摘要:最早先的一个例子中,我们提到过一个“clean”的目标,这是一个“伪目标”, clean: rm*.otemp 正像我们前面例子中的“clean”一样,即然我们生成了许多文件编译文件,我们也应该提供一个清除它们的“目标”以备完整地重编译而用。(以“makeclean”来使用该目标) 因为,我们并不生成“clean”这个文件。“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。 当然,为了避免和文件重名的这种情况
        阅读全文
            
        
            
    自动化变量
    
            
            
        
摘要:模式规则中,规则的目标和依赖文件名代表了一类文件名;规则的命令是对所有这一类文件重建过程的描述,显然,在命令中不能出现具体的文件名,否则模式规则失去意义。那么在模式规则的命令行中该如何表示文件,将是本小节的讨论的重点。 假如你需要书写一个将.c文件编译到.o文件的模式规则,那么你该如何为gcc书写正确的源文件名?当然了,不能使用任何具体的文件名,因为在每一次执行模式规则时源文件名都是不一样的。为了解决这个问题,就需要使用“自动环变量”,自动化变量的取值是根据具体所执行的规则来决定的,取决于所执行规则的目标和依赖文件名。 下面对所有的自动化变量进行说明: $@ 表示规则的目标文件名。如果目标是.
        阅读全文
            
        
            
    安排主编号
    
            
            
        
摘要:安排主编号最好的方式, 我们认为, 是缺省使用动态分配, 而留给自己在加载时指定主编号的选项权, 或者甚至在编译时. scull 实现以这种方式工作; 它使用一个全局变量, scull_major, 来持有选定的编号(还有一个 scull_minor 给次编号). 这个变量初始化为 SCULL_MAJOR, 定义在 scull.h. 发布的源码中的 SCULL_MAJOR 的缺省值是 0, 意思是"使用动态分配". 用户可以接受缺省值或者选择一个特殊主编号, 或者在编译前修改宏定义或者在 insmod 命令行指定一个值给 scull_major. 最后, 通过使用 scul
        阅读全文
            
        
            
    Linux原子操作
    
            
            
        
摘要:一、原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它是最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义于内核源码树的 atomic.h 文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。原子操作主要用于实现资源计数,很多引用计数(refcnt)就是通过原子操作实现的。原子类型定义如下:typedefstruct { volatileintcounter;}atomic_t; volatile修饰字段告诉gcc不要对该..
        阅读全文
            
        
            
    linux字符cdev和Inode的关系
    
            
            
        
摘要:本文所说的Inode是struct inode结构体,并不是在inode块中的inode结点。Char Device Driver 相关数据结构:struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_head list; dev_t dev; unsigned int count;};struct kobj_map { struct probe { struct probe *next; dev_t dev; un...
        阅读全文
            
        
            
    关于Linux的视频编程(v4l2编程)
    
            
            
        
摘要:前言:目前正在忙于ARM平台的Linux应用程序的开发(其实是刚刚起步学习啦)。底层的东西不用考虑了,开发板子提供了NAND Bootloader,和Linux 2.6的源码,而且都编译好了。自己编译的bootloader可以用,但是Linux编译后,文件很大,暂且就用人家编译的系统,先专心写应用程序 吧。。正文:要做的任务是,把一块板子上的摄像头采集的图像和声卡采集的声音(貌似很啰嗦哈)通过TCP/IP协议传输到另一块板子上。第一步,先把视频获取并且在本地LCD上显示。看了板子提供的文档,视频传输需要用V4L2的API。一.什么是video4linux Video4l...
        阅读全文
            
        
            
    LTT (Linux Trace Toolkit) 简介
    
            
            
        
摘要:1概念1.1功能LTT是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:?系统调用的进入和退出?陷阱/中断(Trap / Irq)的进入和退出?进程调度事件?内核定时器?进程管理相关事件:创建 ,唤醒,信号处理等等?文件系统相关事件:Open / Read / Write / Seek / Ioctl 等等?内存管理相关事件:内存分配/释放等?其他事件:IPC / Socket/ 网络 等等此外 Ltt还提供了自定义和记录需要跟踪的事件类型的函数接口。1.2结构LTT主要由4个部分组成:?内核代码补丁:LTT目前还没有纳入正式的官方内核,在内核中的部分代
        阅读全文
            
        
            
    Linux平台下I2C设备驱动开发和实现
    
            
            
        
摘要:I2C总线具有结构简单使用方便的特点。本文描述了Linux下I2C驱动的结构,并在此基础上给出了I2C设备驱动和应用的实现。 1 引言 I2C (Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线最初为音频和视频设备开发,现已应用于各种服务与管理场合,来实现配置或掌握组件的功能状态,如电源、系统风扇、系统温度等参数,增加了系统的安全性,方便了管理。 ...
        阅读全文
            
        
            
    Yaffs 文件系统分析
    
            
    
摘要:1Yaffs文件系统结构1.1简介1.1.1应用场合 Yaffs(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2 能够更好的支持大容量的NAND FLASH芯片。Yaffs文件系统有些类似于JFFS/JFFS2文件系统,与之不同的是JFFS1/2文件 系统最初是针对NOR FLASH的应用场合设计的,而NOR FLASH和NAND FLASH本质上有较大的区别,所以尽管JFFS1/2 文件系统也能应用于NAND FLASH,但由于它在内存占用和启动时间
        阅读全文
            
        
 
                    
                
 
 浙公网安备 33010602011771号
浙公网安备 33010602011771号