上一页 1 ··· 8 9 10 11 12 13 下一页
  2011年12月6日
摘要: 原文:Why I Love Reading Other People’s Code And You Should Too by Alan Skorkin 翻译:Yurii我恨读代码我发现,许多程序员都讨厌读代码——拜托别掩饰了,承认吧。差不多每个人都喜欢写代码——写代码乐在其中。可是,读代码真是不容易,而且还很烦人,又无可逃避,其他人写的代码总是很垃圾(即便不说,我们心里也这么想的)。即使自己写的代码,过几个小时再看也有点垃圾,过的时间再久点,就更垃圾了。那么,还有什么理由去看别人的蹩脚代码,而是不自己写几手漂亮的?能不能暂且忽略这个问题,花上几个小时看别人的代码,再回头来看自己的是不是还那么 阅读全文
posted @ 2011-12-06 23:09 风行雪舞 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2011-12-06 23:09 风行雪舞 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1、读程序一个线程一个线程的分析,由于程序一般比较大,我们可以截取其中独立的一小部分,进行分析。每一个线程可能包括很多函数,他们也许在不同的文件中,我们可以把他们都截取出来进行总结2、对于程序中某个知识点的漏洞,上GOOGLE上查找相关的资料,查找定义、原理、例子、程序的内容3、软件环境的搭建,要善于总结,总结时还要看看加载的一些文件是什么,什么性质的文件,最简单的就是把英文的翻译成中文的,一步一步总结完,要养成这个习惯4、在做项目过程中肯定会遇到很多问题,我们可以把出现的问题进行总结,并且把自己的思路写清楚5、对于不懂的命令或者板子进行测试,也有思路,确定好什么样子的测试思路很重要: 1、要 阅读全文
posted @ 2011-12-06 23:09 风行雪舞 阅读(632) 评论(0) 推荐(0) 编辑
摘要: 在规则中使用通配符 如果我们想定义一系列比较类似的文件,我们很自然地就想起使用通配符。make支持三各通配符:“*”,“?”和“[...]”。这是和Unix的B-Shell是相同的。 波浪号(“~”)字符在文件名中也有比较特殊的用途。如果是“~/test”,这就表示当前用户的$HOME目录下的test目录。而“~hchen/test”则表示用户hchen的宿主目录下的test目录。(这些都是Unix下的小知识了,make也支持)而在Windows或是MS-DOS下,用户没有宿主目录,那么波浪号所指的目录则根据环境变量“HOME”而定。 通配符代替了你一系列的文件,如“*.c”表示所以后缀为c的 阅读全文
posted @ 2011-12-06 23:08 风行雪舞 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 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/与上一条命令相似,但多加了一个 阅读全文
posted @ 2011-12-06 23:08 风行雪舞 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 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”可同... 阅读全文
posted @ 2011-12-06 23:08 风行雪舞 阅读(735) 评论(0) 推荐(0) 编辑
摘要: 一、后缀规则 后缀规则是一种古老定义隐含规则的方式,在新版本的make中使用模式规则作为对它的替代,模式规则相比后缀规则更加清晰明了。在现在版本中保留它的原因是为了能够兼容旧的makefile文件。后缀规则有两种类型:“双后缀”和“单后缀”。 双后缀规则定义一对后缀:目标文件的后缀和依赖目标的后缀。它匹配所有后缀为目标后缀的文件。对于一个匹配的目标文件,它的依赖文件这样形成:将匹配的目标文件名中的后缀替换为依赖文件的后缀得到。如:一个描述目标和依赖后缀的“.o”和“.c”的规则就等价于模式规则“%o : %c”。 单后缀规则只定义一个后缀:此后缀是源文件名的后缀。它可以匹配任何文件,其依赖文件 阅读全文
posted @ 2011-12-06 23:07 风行雪舞 阅读(657) 评论(0) 推荐(0) 编辑
摘要: 最早先的一个例子中,我们提到过一个“clean”的目标,这是一个“伪目标”, clean: rm*.otemp 正像我们前面例子中的“clean”一样,即然我们生成了许多文件编译文件,我们也应该提供一个清除它们的“目标”以备完整地重编译而用。(以“makeclean”来使用该目标) 因为,我们并不生成“clean”这个文件。“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。 当然,为了避免和文件重名的这种情况 阅读全文
posted @ 2011-12-06 23:07 风行雪舞 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 模式规则中,规则的目标和依赖文件名代表了一类文件名;规则的命令是对所有这一类文件重建过程的描述,显然,在命令中不能出现具体的文件名,否则模式规则失去意义。那么在模式规则的命令行中该如何表示文件,将是本小节的讨论的重点。 假如你需要书写一个将.c文件编译到.o文件的模式规则,那么你该如何为gcc书写正确的源文件名?当然了,不能使用任何具体的文件名,因为在每一次执行模式规则时源文件名都是不一样的。为了解决这个问题,就需要使用“自动环变量”,自动化变量的取值是根据具体所执行的规则来决定的,取决于所执行规则的目标和依赖文件名。 下面对所有的自动化变量进行说明: $@ 表示规则的目标文件名。如果目标是. 阅读全文
posted @ 2011-12-06 23:07 风行雪舞 阅读(398) 评论(0) 推荐(0) 编辑
摘要: JavaScript language overviewJavaScript syntax, operators, and flow-control statements are similar to those in the C language. It includes if, else, switch, break, for, while, do, and return statements which behave almost identically to their C counter-parts. As a result, C programmers can easily rea 阅读全文
posted @ 2011-12-06 23:06 风行雪舞 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 安排主编号最好的方式, 我们认为, 是缺省使用动态分配, 而留给自己在加载时指定主编号的选项权, 或者甚至在编译时. scull 实现以这种方式工作; 它使用一个全局变量, scull_major, 来持有选定的编号(还有一个 scull_minor 给次编号). 这个变量初始化为 SCULL_MAJOR, 定义在 scull.h. 发布的源码中的 SCULL_MAJOR 的缺省值是 0, 意思是"使用动态分配". 用户可以接受缺省值或者选择一个特殊主编号, 或者在编译前修改宏定义或者在 insmod 命令行指定一个值给 scull_major. 最后, 通过使用 scul 阅读全文
posted @ 2011-12-06 23:06 风行雪舞 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一、原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它是最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义于内核源码树的 atomic.h 文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。原子操作主要用于实现资源计数,很多引用计数(refcnt)就是通过原子操作实现的。原子类型定义如下:typedefstruct { volatileintcounter;}atomic_t; volatile修饰字段告诉gcc不要对该.. 阅读全文
posted @ 2011-12-06 23:06 风行雪舞 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 本文所说的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... 阅读全文
posted @ 2011-12-06 23:05 风行雪舞 阅读(1018) 评论(0) 推荐(0) 编辑
摘要: 前言:目前正在忙于ARM平台的Linux应用程序的开发(其实是刚刚起步学习啦)。底层的东西不用考虑了,开发板子提供了NAND Bootloader,和Linux 2.6的源码,而且都编译好了。自己编译的bootloader可以用,但是Linux编译后,文件很大,暂且就用人家编译的系统,先专心写应用程序 吧。。正文:要做的任务是,把一块板子上的摄像头采集的图像和声卡采集的声音(貌似很啰嗦哈)通过TCP/IP协议传输到另一块板子上。第一步,先把视频获取并且在本地LCD上显示。看了板子提供的文档,视频传输需要用V4L2的API。一.什么是video4linux Video4l... 阅读全文
posted @ 2011-12-06 23:04 风行雪舞 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 一、RS-232C、RS-422与RS-485的由来RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范 阅读全文
posted @ 2011-12-06 23:04 风行雪舞 阅读(1583) 评论(0) 推荐(0) 编辑
摘要: 1概念1.1功能LTT是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:?系统调用的进入和退出?陷阱/中断(Trap / Irq)的进入和退出?进程调度事件?内核定时器?进程管理相关事件:创建 ,唤醒,信号处理等等?文件系统相关事件:Open / Read / Write / Seek / Ioctl 等等?内存管理相关事件:内存分配/释放等?其他事件:IPC / Socket/ 网络 等等此外 Ltt还提供了自定义和记录需要跟踪的事件类型的函数接口。1.2结构LTT主要由4个部分组成:?内核代码补丁:LTT目前还没有纳入正式的官方内核,在内核中的部分代 阅读全文
posted @ 2011-12-06 23:02 风行雪舞 阅读(1304) 评论(0) 推荐(0) 编辑
摘要: 1、stdio2、STDIN_FILENO数据类型不一致:stdin类型为 FILE* ,指向一个结构体指针;属于标准I/O,由标准C库实现;是高级的输入函数,定义在标准库<stdio.h>。STDIN_FILENO类型为 int;是0号文件描述符(操作系统一级提供的文件API都是以文件描述符来表示文件,文件描述符是linux内核专有概念,对文件描述符的操作属于系统调用。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符)是非负整数,打开文件句柄;属于没有buffer的I/O,能直接调用系统调用,定义/usr/include/unistd.h。代码:/* Stand 阅读全文
posted @ 2011-12-06 23:01 风行雪舞 阅读(452) 评论(0) 推荐(0) 编辑
摘要: I2C总线具有结构简单使用方便的特点。本文描述了Linux下I2C驱动的结构,并在此基础上给出了I2C设备驱动和应用的实现。 1 引言 I2C (Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线最初为音频和视频设备开发,现已应用于各种服务与管理场合,来实现配置或掌握组件的功能状态,如电源、系统风扇、系统温度等参数,增加了系统的安全性,方便了管理。 ... 阅读全文
posted @ 2011-12-06 22:50 风行雪舞 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 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,但由于它在内存占用和启动时间 阅读全文
posted @ 2011-12-06 22:50 风行雪舞 阅读(462) 评论(0) 推荐(0) 编辑
摘要: ti@ti-desktop:~$ sudo find / -name cmemk.ko返回所有名为cmemk.ko文件的路径(“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件)ti@ti-desktop:~$ find /etc -name httpd.conf 表示在etc目录中查询httpd.conf这个文件。根据部分文件名查找方法: ti@ti-desktop:~$ find /etc -name '*srm*'这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这 阅读全文
posted @ 2011-12-06 22:49 风行雪舞 阅读(808) 评论(0) 推荐(0) 编辑
摘要: 在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM)。此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。下面就给大家介绍一下它的具体使用方法。 1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看: rpm -qpi Linu... 阅读全文
posted @ 2011-12-06 22:49 风行雪舞 阅读(201) 评论(0) 推荐(0) 编辑
摘要: wheel组就类似于一个管理员的组通常在UNIX下,即使我们是系统的管理员,也不推荐用root用户登录来进行系统管理。一般情况下 用普通用户登录,在需要root权限执行一些操作时,再su登录成为root用户。但是,任何人只要知道了root的密码,就都可以通过su命令来登录为 root用户--这无疑为系统带来了安全隐患。所以,将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户,但如果不对一些相关的 配置文件进行配置,这个管理员组内的用户与普通用户也没什么区别--就像警察下班后,没有带枪、穿这便衣和普通人(用户)一样,虽然他的的确确是警察。根 据应用的实例不同应用wheel组 阅读全文
posted @ 2011-12-06 22:48 风行雪舞 阅读(509) 评论(0) 推荐(0) 编辑
摘要: /etc/group 文件文件的格式和 /etc/passwd 文件格式类似,它也是一个纯文本文件,定义了每个组中的用户。每行的格式是:group_name:passwd:GID:user_list它们的含义如下:关于i-node的形象比喻和正解i-node您能够理解成一个大楼。 i-node用光了,不能增加,除非format的时候定制。。 i-node您能够理解成一个大楼。 假如这个楼房建筑的时候,就是100户,只能卖100套房子,住100户人家,没家4室二厅,200平米。。当来了101户人的时候,虽然没家人家200平米,但是也只是人家自己住。不能让其他人住了。。 假如您建立楼房的时候,都是 阅读全文
posted @ 2011-12-06 22:48 风行雪舞 阅读(425) 评论(0) 推荐(0) 编辑
摘要: Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件,Linux /etc/group文件相对另外两个文件内容相对较少,这里对这一文件进行以下分析。用户组的所有信息都存放在/etc/group文件中将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首 阅读全文
posted @ 2011-12-06 22:47 风行雪舞 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 其他的 1. /bin目录 / b i n目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些 命令都是二进制文件的可执行程序( b i n是b i n a r y - -二进制的简称),多是系统中重要的系统文件。 2. /sbin目录 / s b i n目录类似/bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使 用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。 3. /etc目录 / e t c目录存放着各种系统配置文件,其中包括了用户信息文件/ e t c / p a s s w d,系统初始化文 件/ e t 阅读全文
posted @ 2011-12-06 22:41 风行雪舞 阅读(787) 评论(0) 推荐(0) 编辑
摘要: 由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 命令功能说明:设置或显示环境变量。(比如我们要用一个命令,但这个命令的执行文件不在当前目 阅读全文
posted @ 2011-12-06 22:41 风行雪舞 阅读(833) 评论(0) 推荐(0) 编辑
  2011年4月26日
摘要: 专家关于高速线路的布线问题解答1 1。 如何处理实际布线中的一些理论冲突的问题 问:在实际布线中,很多理论是相互冲突的; 例如: 1。处理多个模/数地的接法:理论上是应该相互隔离的,但在实际的小型化、高密度布线中,由于空间的局限或者绝对的隔离会导致小信号模拟地走线过长,很难 实现理论的接法。我的做法是:将模/数功能模块的地分割成一个完整的孤岛,该功能模块的模/数地都连接在这一个孤岛上。再通过沟道让孤岛和“大”地连接。 不知这种做法是否正确? 2。理论上晶振与CPU的连线应该尽量短,由于结构布局的原因,晶振与CPU的连线比较长、比较细,因此受到了干扰,工作不稳定,这时如何从布线解决这个 问... 阅读全文
posted @ 2011-04-26 00:44 风行雪舞 阅读(619) 评论(0) 推荐(0) 编辑
摘要: 如果你是个很忙碌的人——每天要处理各种事情,不停地接电话、开会、收发邮件,甚至有时还会因为某些事把原有的安排全部打乱……到了下班时间,却发 现有很多事没来得及处理,这时候除了加班外,只能把这些事推到下一个24小时中。总是很忙碌,总有很多做不完的事情,好像时间总是不够用,难道没有办法改 善这样的局面吗?其实“让时间×2”的方法有很多,如果你学会运用时间,时间也会为你所用,并帮助你创造出更大的价值——1、列出时间花费表,来惊讶一下被你不经意间浪费掉的时间在改变你的时间观念前,先来分析一下你每天的时间都用到了什么地方,你会惊讶地发现有些时间不是被浪费掉了,不然就是做了一些无用功。浪费的时间 阅读全文
posted @ 2011-04-26 00:23 风行雪舞 阅读(303) 评论(0) 推荐(0) 编辑
  2011年3月16日
摘要: 1.不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2.初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。 3.看帮助。不要因为很难,而自己又是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观。 4.不要被一些专用词汇所迷惑;最根本的是先了解最基础知识。 5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。 6.知道一点东西,并不能说明你会用, 阅读全文
posted @ 2011-03-16 00:35 风行雪舞 阅读(176) 评论(0) 推荐(0) 编辑
  2011年3月15日
摘要: 1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。2、data区内最好放局部变量。因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;3、确保你的程序中没有未调用的函数。在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。4、程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。在 阅读全文
posted @ 2011-03-15 16:57 风行雪舞 阅读(2001) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 下一页
无觅相关文章插件,快速提升流量