12 2011 档案
hwclock(Linux)
摘要:在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在 BIOS画面设定的时钟。系统时钟则是指kernel中的 时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之後系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。 hwclock实现了BIOS和linux的时间同步既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。从
阅读全文
linux下测试RTC驱动相关的命令date和hwclock常见用法简介
摘要:之前对Linux下面时间相关的内容,一无所知,第一次见到hwclock,不知为何物,也没找到解释清楚的帖子。故此整理一下,简单介绍Linux下验证rtc驱动是否工作正常,相关的的命令:date和hwclock。先说明:1.本贴主要内容来整理自后注所引用的帖子。2.如下介绍,不涉及如何编写rtc驱动,只简单介绍,驱动实现后,如果通过date和hwclock去验证rtc驱动是否正常工作。1.date,Linux中用于显示/修改系统时间的一个命令。2.Linux的RTC驱动实现完了后,一般是默认的是一个普通的字符型设备,或者一个misc设备,也可以是一个平台设备。对应地,如果insomod驱动后,或
阅读全文
linux下find查找命令用法
摘要:一、Linux中find常见用法示例·find path -option [ -print ] [ -exec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #-exec command {} \; -----将查到的文件执行command操作,{} 和 \;之间有空格 #-ok 和-exec相同,只不过在操作前要询用户 ==================================================== -name filename #查找名为filename的文件 -perm #按执行权限来查找 -user userna
阅读全文
WinCE平台下BMP转JPG代码备份3
摘要:1 //带参数的保存位图函数 2 BOOL FileOperate::bmpSaveImage(PTSTR pstrFileName, BITMAPFILEHEADER *pbmfh) 3 { 4 BOOL bSuccess ; 5 DWORD dwBytesWritten ; 6 HANDLE hFile; 7 8 hFile = CreateFile ( pstrFileName, GENERIC_WRITE, 0, NULL, 9 CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, N...
阅读全文
WinCE平台下BMP转JPG代码备份4
摘要:1 void GetImage::CopyByteArrayToISream( 2 BYTE *pInByteArray,//输入的字节数组 3 DWORD dwArrayLength,//字节数组的长度 4 IStream **ppOutIStream//传出的由字节转换的流 5 ) 6 { 7 try 8 { 9 HRESULT hrRet = S_FALSE;10 HGLOBAL hg = NULL;11 BYTE* pbLocked = NULL;12 13 //分...
阅读全文
WinCE平台下BMP转JPG代码备份2
摘要:1 /********************************************************************************************************* 2 ** Function name: epcCamGetRgbFrame 3 ** Descriptions: 本函数用于获取RGB通道的图像的数据缓存区地址 4 ** input parameters: prAddInfo 存放获取的地址,注意访问该地址的图像数据时候使用SetKMode(TRUE) 5 ** outp...
阅读全文
WinCE平台下BMP转JPG代码备份1
摘要:这大概是一年前做的事情了,当时的项目要求在WinCE平台下BMP转JPG,然后自己折腾了好几个月才终于搞定,现在时间过去了快一年了,估计自 己今后再也不会碰WinCE相关的东西了吧,而且也准备把相关的学习笔记和代码项目全部删除掉。这些没有经过整理过的东西,放在电脑上也是垃圾,还不如整 理一下,放到网上,让有需要的同学借鉴参考一下吧。开发环境:VS2005开发平台:EPC6960 WinCE开发板主要目标:在WinCE平台下完成BMP图片转JPG实现方法:使用C++编写转换的DLL文件,使用C#编写界面,然后调用DLL代码涉及知识点:1.DLL的创建。2.函数传入参数,传出参数。3.位图格式。4
阅读全文
Linux及Arm-Linux程序开发笔记(零基础入门篇)
摘要:目录一、Arm-Linux程序开发平台简要介绍... 31.1程序开发所需系统及开发语言... 31.2系统平台搭建方式... 4二、Linux开发平台搭建... 52.1安装虚拟工作站... 52.2安装Linux虚拟机... 52.3虚拟机的一些基本配置... 72.3.1建立共享目录... 82.3.2调整桌面分辨率... 92.4安装软件... 11三、Fedora-linux系统... 113.1控制终端的基本操作命令... 123.2编程工具简介... 123.2.1 Fedora-Eclipse CDT. 133.2.2 Qt库及Qt界面设计软件... 14四、使用Eclipse
阅读全文
Python2.5.4移植到arm-linux
摘要:1 移植需求需求:在Arm9上运行python2.5.4。ARM Target环境:S3C2410A & arm-linux-2.4.18,和 AT91SAM9261 & arm-linux-2.6.20。host编译环境:RHEL5U3, gcc 4.1.2, arm-linux-gcc 2.95.3,arm-linux-gcc 3.4.4需要cross compile的软件包:sqlite 3.6.14, python 2.5.4, boa-0.94.13.2 交叉编译sqlite先到 http://www.sqlite.org/download.html 下载最新的sql
阅读全文
TQ2440下的openssh移植
摘要:
移植ssh到arm 今天在internet上参考了几位前辈文章, 将ssh移植到了TQ2440的arm板上, 现在不需要用minicom来控制uclinux了。 板子上的串口终于可以接上采集器。 主要参考文章:
•http://blog.chinaunix.net/u1/43047/showart_371372.html
•http://blog.chinaunix.net/u2/63379/showart_513655.html
阅读全文

nfs:server is not responding,still trying 原因与解决方案
摘要:今天,用开发板通过nfs挂载主机,想从主机上面拷贝一些资料,可是竟然出现:nfs:server is not responding,still trying , 我用的是友善之臂的mini2440,操作系统使用的是Ubuntu8.04。 本来还以为是nfs出了故障,但是google了一下发现原来不是nfs的原因,而是由于传送的数据太大,出现数据包丢失现象。 NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。可用的解决方案是:在客户端改用TCP协议,使用下面的命令, mount -t nfs -o intr,nolock,rsize=10...
阅读全文
web server大全之GoAhead移植
摘要:注:最近在做goAhead web server和移植其到TI芯片+linux上,这里先转一篇相关的文章来学习下,希望有所帮助。。。 ******************************* * web server大全之GoAhead移植 * ******************************* 2009/02/14asdjf@163.comwww.armecos.com 很多人希望在产品中使用Web Server,为此,我们总结了十几种各式各样的Web Server任君选择。Web Server开发再也不是困难的事情了。 本文档介绍强大的嵌入式Web...
阅读全文
Goahead在ArmLinux下的移植
摘要:Goahead是一款适合嵌入式的webServer,支持asp,cgi,embeddedJavaScrip等脚本语言基本上在windows下或者在redhat9下面只要make一下就能运行了. 体积小巧的嵌入式服务器:GoAheadGoAhead Web服务器,小巧,精致,提供了值得称道的性能。 GoAhead Web 服务器是一款主要面向嵌入式系统的WEB服务器,它的目标也许不在于目前的WEB服务器市场,而是面向当嵌入式系统深入我们的工作与生活的明天,那时,它也许会成为使用最广泛的WEB服务器。 GoAhead Web服务器是GoAhead公司的Embedded Managemen...
阅读全文
goAhead 2.5嵌入式web服务器移植到arm9 2440 + linux中
摘要:本文内容概要:详细描述了移植goAhead 2.5到S3C2440的linux系统的过程、步骤、遇到的问题及其解决方法。开发环境: 宿主 机:window XP;虚 拟 机:ubuntu9.10; 交叉编译器:arm-uclibc-gcc(arm-linux-gcc-4.3.2可以顺利编译通过)———————————————————————————————————————————————————————————————————1. GoAhead Web服务器介绍goAhead Web服务器,小巧、精致,提供了值得称道的性能,特别适合于嵌入式系统,因此,在很多嵌入式产品如路由器中都用到了goA
阅读全文
GoAhead2.5源代码分析之1-用户管理(um.c)
摘要:Um.c(用户管理)umconfig.txt----------------------------------------TABLE=usersROW=0name=adminpassword=Uzgroup=Administratorprot=1disable=0TABLE=groupsROW=0name=Administratorpriv=4method=3prot=1disable=0TABLE=accessROW=0name=/main.htmlmethod=3secure=0group=Administrator------------------------------------
阅读全文
GoAhead2.5源代码分析之2-文件数据库(emfdb.c)
摘要:Emfdb.c(文件数据库)数据库按照下面结构体存放typedef struct dbTable_s { char_t *name; int nColumns; char_t **columnNames; int *columnTypes; int nRows; int **rows;} dbTable_t;每个table对应上面结构的一个变量。Name是table的名字nColumns是table有多少列columnNames是各个列的名字columnTypes是各个列中内容的类型,是字符串,还是整数nRows是table有多少行rows是:rows[n]指向各个行的指针,rows[n][m
阅读全文
GoAhead2.5源代码分析之3-用户管理实例(umui.c)
摘要:Umui.c(用户管理实例)文件中代码与webs-2-5\wwwdemo\um中的页面对应,(addgroup.asp、addlimit.asp、adduser.asp、delgroup.asp、dellimit.asp、deluser.asp、dspuser.asp、loadcfg.asp、savecfg.asp、um.htm)是这些页面调用的form、asp函数,通过这些实例,有助于对用户管理的理解。------------------------------------------------------------------------------------------------
阅读全文
GoAhead2.5源代码分析之4-用户管理用到的一些函数(uemf.c misc.c)
摘要:Uemf.c和misc.c(用户管理用到的一些函数)void error(E_ARGS_DEC, int etype, char_t *fmt, ...)功能:将出现的错误根据错误类型,输出对应字符串说明:函数中使用了var_start,var_end, var_arg等宏下面我们来探讨如何写一个简单的可变参数的C函数。写可变参数的C函数要在程序中用到以下这些宏:voidva_start(va_listarg_ptr,prev_param);typeva_arg(va_listarg_ptr,type);voidva_end(va_listarg_ptr);va在这里是variable-arg
阅读全文
GoAhead2.5源代码分析之5-块分配模块(h.c和balloc.c)
摘要:h.c和balloc.cint hAlloc(void ***map)功能:分配使用的map数组说明:-----------------------------------------------------------------------------------------------------------------int hFree(void ***map, int handle)功能:释放使用的map数组说明:--------------------------------------------------------------------------------------
阅读全文
GoAhead2.5源代码分析之6-访问验证(security.c)
摘要:security.c主要功能是:验证登陆用户的信息,会在页面上显示对应的信息,不成功,显示错误页面,成功时,会验证用户名和密码。-----------------------------------------------------------------------------------------------------------------int websSecurityHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query)功能.
阅读全文
GoAhead2.5源代码分析之7-form请求处理(form.c)
摘要:form.c(form请求处理)-----------------------------------------------------------------------------------------------------------------int websFormHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query)功能:处理form请求说明:1. 根据form的路径path,分离出form程序名,例如/goform/my,
阅读全文
GoAhead2.5源代码分析之8-sym hash table(sym.c)
摘要:sym.c(symbol hash table)typedef struct { /* Symbol table descriptor */ int inuse; /* Is this entry in use */ int hash_size; /* Size of the table below */ sym_t **hash_table; /* Allocated at run time */} sym_tabent_t;typedef struct sym_t { struct sym_t *forw; /* Pointer to next hash list */ value_t n
阅读全文
GoAhead2.5源代码分析之9-cgi处理句柄(cgi.c)
摘要:cgi.c(cgi)int websCgiHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t* query)功能:处理cgi请求。说明:1. 抽出页面上form中调用的cgi程序的名字,构建完整的路径/ata0/webs/www/*2. 进入到cgi程序所在的目录,即/ata0/webs/www3. 分配内存,建立cgi程序的参数,主要是从也空格分割的qurey中提取出来4. 从cgi的环境变量中,构建名、值对。5. 确定标准输入、输出。标准输出是个临时
阅读全文
GoAhead2.5源代码分析之10-web server主程序(main.c)
摘要:main.c(主程序)是web服务器的主要,也就是启动函数。int websvxmain(int argc, char **argv)功能:goahead web服务器的启动的第一个函数。说明:1. 判断命令中有没有-demo,有则,代码中包含/wwwdemo/目录下的页面对应的cgi程序,该目录下是一些例子程序。2. 分配一个60k的内存空间。3. 初始化web服务器。4. 然后进入while循环,在打开的socket数组中寻找是否有一个socket需要处理(socketReady);如果没有,则等待2秒,发现有可读、可写socket(socketSelect)。如果有则进行处理(socke
阅读全文
goAhead上实现文件上传到嵌入式web服务器上
摘要:本文内容概要:详细描述了在goAhead 2.5上如何实现文件上传(上传文件)到服务器端的功能。开发环境: 宿主 机:window XP;虚 拟 机:ubuntu9.10; 交叉编译器:arm-uclibc-gcc(arm-linux-gcc-4.3.2可以顺利编译通过)———————————————————————————————————————————————————————————————————1. 说明最近调试web文件上传到服务器功能,但在调试时,处理函数总是获取不到文件路径,百思不得其解,查了网上许多文章,但大多提到的是前端文件上传的原理、实现方式等,而未提供服务器端处理的实现(
阅读全文
循序渐进学Python:IDLE的运行、编辑与调试
摘要:IDLE是Python软件包自带的一个集成开发环境,初学者可以利用它方便地创建、运行、测试和调试Python程序。本文将详细介绍IDLE的GUI界面、Python Shell、编辑器和调试器,为初学者快速上手助一臂之力。一、IDLE的安装实际上,IDLE是跟Python一起安装的,不过要确保出现图1所示的安装画面时选中了“Tcl/Tk”组件,准确地说,应该是不要取消该组件,因为默认时该组件是处于选中状态的。图1 IDLE的安装二、IDLE的启动安装Python后,我们可以从“开始”菜单→“所有程序”→“Python 2.5”→“IDLE(Python GUI)”来启动IDLE。IDLE启动后的
阅读全文
Python完全新手教程
摘要:1 from Tkinter import *2 root = Tk(className='bitunion')3 label = Label(root)4 label['text'] = 'be on your own'5 label.pack()6 root.mainloop()Lesson 1 准备好学习Python的环境下载的地址是:www.python.org为了大家的方便,我在校内作了copy:http://10.1.204.2/tool/compiler&IDE/Python-2.3.2-1.exelinux版本的我就不说了
阅读全文
Android在TQ2440开发板上的移植(转)
摘要:
一、目前进展
1.Android已经可以通过NFS在TQ2440开发板上运行
最近自己编译了android的文件系统,并在TQ上运行了,比熊猫版的bin程序多些,基本功能已经实现,大家可以从:
http://d.namipan.com/d/b64ce43b2388e5e1f66af18149824b98cd13b926c4921f02
下载文件系统试试,改天整理一下,发个详细的移植过程和注意事项。
阅读全文

到底什么是拉电流和灌电流
摘要:当逻辑门输出端是低电 平时,灌入逻辑门的电流称为灌电流,灌电流越大,输出端的低电平就越高。由三极管输出特性曲线也可以看出,灌电流越大,饱和压降越大,低电平越大。逻辑门 的低电平是有一定限制的,它有一个最大值UOLMAX。在逻辑门工作时,不允许超过这个数值,TTL逻辑门的规范规定UOLMAX ≤0.4~0.5V。当 逻辑门输出端是高电平时,逻辑门输出端的电流是从逻辑门中流出,这个电流称为拉电流。拉电流越大,输出端的高电平就越低。这是因为输出级三极管是有内阻 的,内阻上的电压降会使输出电压下降。拉电流越大,高电平越低。逻辑门的高电平是有一定限制的,它有一个最小值UOHMIN。在逻辑门工作时,不允许
阅读全文
关于驱动能力的基本问题
摘要:关于驱动能力的基本问题我一直都不明白驱动是什么.一般的说驱动一个负载,我想只要你的电压达到了一个阈值,那么就可以驱动这个负载啊,为什么有时候又说驱动能力不够了? 为什么说一个没有输出缓冲的op是驱动不了小电阻和大电容负载的了?我直接在这个op后面接个大电容或者一个小电阻负载有什么影响了?当我用运放驱动一个 大的mos管的时候为什么要级连几个反向器了,我直接把运放的输出接在这个大mos管上面不行吗?-----------------------------------楼主这个问题提得好,我以我自己的理解来试图做个解答。首先,所谓的驱动能力,指的是输出电流的能力。比方说,某型单片机通用IO口在高电
阅读全文
上拉电阻、下拉电阻 / 拉电流、灌电流 / 扇出系数
摘要:(一)上拉电阻: 1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平 (一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。 2、OC门电路必须加上拉电阻,才能使用。 3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。 4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。同時管脚悬空就比较容易接受外界的电磁干扰(MOS器件为高输入阻抗,极容易引入外界干扰)。 5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。 6、提高总线
阅读全文
轻轻松松给PCB板添加LOGO
摘要:在 PCB 图中放置汉字或图形的方法:A、文字——> 图片——> PCB 图——> 复制到自己作品中B、图片——> PCB 图——> 复制到自己作品中1、首先准备好“BMP”格式的图片,在图片中依靠颜色分辨图层,所以最好准备“单色黑白”图。在绘图软件中“另存为”按如下设置:得到“BMP 单色”图片2、使用“BMP2PCB”工具软件将图片转换成
阅读全文
C51编程在不同内存空间(data xdata bdata)定义变量的注意事项
摘要:1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。2、data区内最好放局部变量。因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;3、确保你的程序中没有未调用的函数。在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。4、程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。在
阅读全文
请不要做浮躁的嵌入式工程师~
摘要:转抄网上的一个帖子: 1.不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2.初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。 3.看帮助。不要因为很难,而自己又是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观。 4.不要被一些专用词汇所迷惑;最根本的是先了解最基础知识。 5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。 6...
阅读全文
64位win7可用usbasp驱动,AVRfighter专用驱动,测试有效
摘要:经过多天的尝试,终于整理修改出适用与WIN764位的usbasp驱动,这下可以给64位win7的电子爱好者带来福音了!安装包中包含已经带有数字证书的64位驱动,32位也可用哦,其中有我整理的简单说明,大家一看便知!驱动安装成功后,使用AVRflghter下载程序,将安装包中的libusb0.dll和libusb0.sys复制到AVR_fighter目录下覆盖原文件即可!网盘下载
阅读全文
要想成功,就按这个做吧,不出一年,你会发现自己变化很大!
摘要:要成功,就马上准备有所付出吧!这就是每天你应该养成的习惯。 1、不说“不可能”; 2、凡事第一反应: 找方法,不找借口; 3、遇到挫折对自己说声:太好了,机会来了! 4、不说消极的话,不落入消极的情绪,一旦发生立即正面处理; 5、凡事先订立目标; 6、行动前,预先做计划; 7、工作时间,每一分、每一秒做有利于生产的事情; 8、随时用零碎的时间做零碎的事情; 9、守时; 10、写点日记,不要太依靠记忆; 11、随时记录想到的灵感; 12、把重要的观念、方法写下来,随时提示自己; 13、走路比平时快30%,肢体语言健康有力,不懒散、萎靡; 1...
阅读全文
如何平衡布线密度和走线层数?
摘要:层数越多,就可以把线间距布得越大,使路径选择更容易,而且减少了串扰问题的风险。遗憾的是,多层印刷电路板的费用与层的数字和表面面积的乘积成正 比。使用层数越多,费用也就越高。 如果层数减少,必须使用更小的走线间距,那同样也将增加额外的费用。不仅如此,对于正好足够的走线间距,所冒的串扰风险太大。 决定一个板子需要的最少层数,靠的是经验和猜测相结合。问题的核心是:在一个确定大小的线路板上,使用M层,布通N个连接,估算所需要的走线间距,知道了走线间距,就能知道板子费用,而且同时可以给出串扰模型。走线间距由线路密度决定。关于线路密度,有个很有用的模型,称为RENT准则,是以推广它的IBM工程师的名字命名
阅读全文
Altium Designer完美双屏显示方法演示
摘要:布线时我们往往需要对一些信号线做特别的走线处理,这样需要边布线边对照原理图,在protel99中那是一个很痛苦的事,在Altium Designer中这种情况将变很简单。 硬件要求,笔记本+外接显示器,或者具有双显示输出的台式机 + 双显示器。 设置步骤: 1、在显卡属性中把windows桌面扩展到第二显示器上。如果你的笔记本有显示器管理程序那就更方便。 2、打开Altium Designer。把PCB或者原理图标签拖动到第二显示器释放鼠标。 双屏显示后情形 双屏显示实拍
阅读全文
PCB新手值得一看《Protel使用中的问题》
摘要:一、如何将一个原理图中的一部分加到另一张原理图上? 答:利用块拷贝。首先将要拷贝的原理图的那部分做成块,用其他文件名存储,然后调入目标原理图利用块读命令。 二、为何最后生成的制版图与原理图不相符,有一些网络没有连上? 答:这种情况是很容易发生的,确实原理图上很明显是连上的,最后形成的制版图也与原理图生成的网络表对照过的,没有发现为连上的网络。这种问题出现在原理图上,原理图看上去是连上的,由于画线不符和规范,导致表中他们并未连上,下面是连线属于不规范的连线: c 超过元器件的断点连线; c 连线的两部分有重复; c 在原理图连线时,应尽量做到: 1 在元件端点处连线; 2 元器件连线尽量一线连通
阅读全文
protel四层板及内电层分割入门
摘要:一、准备工作 新建一个DDB文件,再新建相关的原理图文件, 并做好相关准备设计PCB的准备工作,这个相信想画四层板的朋友都会, 不用我多讲了。二、新建文件 新建一个PCB文件, 在KeepOutLayer层画出PCB的外框, 如下图,用过Protel的朋友们应该都会。 三、设置板层 在PCB界面中点击主菜单Design 再点击Layer Stack Manager 如图: 点击后弹出下面的层管理器对话框, 因为在Protel中默认是双面板,所以,我们看到的布线层只有两层。 现在我们来添加层,先单击左边的TopLayer, 再单击层管理器右上角的Add Plane按钮,添加内电...
阅读全文
第1节 多层PCB层叠结构
摘要:在设计多层PCB电路板之前,设计者需要首先根据电路的规模、电路板的尺寸和电磁兼容(EMC) 的要求来确定所采用的电路板结构,也就是决定采用4层,6层,还是更多层数的电路板。确定层数之后,再确定内电层的放置位置以及如何在这些层上分布不同的 信号。这就是多层PCB层叠结构的选择问题。层叠结构是影响PCB板EMC性能的一个重要因素,也是抑制电磁干扰的一个重要手段。本节将介绍多层PCB板 层叠结构的相关内容。 11.1.1 层数的选择和叠加原则 确定多层PCB板的层叠结构需要考虑较多的因素。从布线方面来说,层数越多越利于布线,但是制板成本和难度也会随之增加。对于生产厂家来说,层叠结构对称与否是...
阅读全文
第2节 多层PCB设计布局和布线原则
摘要:11.2.1 元器件布局的一般原则 设计人员在电路板布局过程中需要遵循的一般原则如下。 (1)元器件最好单面放置。如果需要双面放置元器件,在底层(Bottom Layer)放置插针式元器件,就有可能造成电路板不易安放,也不利于焊接,所以在底层(Bottom Layer)最好只放置贴片元器件,类似常见的计算机显卡PCB板上的元器件布置方法。单面放置时只需在电路板的一个面上做丝印层,便于降低成本。 (2)合理安排接口元器件的位置和方向。一般来说,作为电路板和外界(电源、信号线)连接的连接器元器件,通常布置在电路板的边缘,如串口和并口。如果放 置在电路板的中央,显然不利于接线,也有可能因...
阅读全文
第4节 内电层设计
摘要:多层板相对于普通双层板和单层板的一个非常重要的优势就是信号线和电源可以分布在不同的板层上, 提高信号的隔离程度和抗干扰性能。内电层为一铜膜层,该铜膜被分割为几个相互隔离的区域,每个区域的铜膜通过过孔与特定的电源或地线相连,从而简化电源和 地网络的走线,同时可以有效减小电源内阻。 11.4.1 内电层设计相关设置 内电层通常为整片铜膜,与该铜膜具有相同网络名称的焊盘在通过内电层的时候系统会自动将其与铜膜连接起来。焊盘/过孔与内电层的连接形式以及铜膜和其他不 属于该网络的焊盘的安全间距都可以在Power Plane Clearance选项中设置。选择【Design】/【Rules…】命令,...
阅读全文
第3节 中间层创建与设置
摘要:中间层,就是在PCB板顶层和底层之间的层,其结构参见图11-1,读者可以参考图中的标注进行 理解。那中间层在制作过程中是如何实现的呢?简单地说多层板就是将多个单层板和双层板压制而成,中间层就是原先单层板和双层板的顶层或底层。在PCB板的 制作过程中,首先需要在一块基底材料(一般采用合成树脂材料)的两面敷上铜膜,然后通过光绘等工艺将图纸中的导线连接关系转换到印制板的板材上(对图纸中 的印制导线、焊盘和过孔覆膜加以保护,防止这些部分的铜膜在接下来的腐蚀工艺中被腐蚀),再通过化学腐蚀的方式(以FeCl3或H2O2为主要成分的腐蚀 液)将没有覆膜保护部分的铜膜腐蚀掉,最后完成钻孔,印制丝印层等后期处理
阅读全文
第5节 多层板设计原则汇总
摘要:在本章及前面几章的介绍中,我们已经强调了一些关于PCB设计所需要遵循的原则,在这里我们将这些原则做一汇总,以供读者在设计时参考,也可以作为设计完成后检查时参考的依据。 1.PCB元器件库的要求 (1)PCB板上所使用的元器件的封装必须正确,包括元器件引脚的大小尺寸、引脚的间距、引脚的编号、边框的大小和方向表示等。 (2)极性元器件(电解电容、二极管、三极管等)正负极或引脚编号应该在PCB元器件库中和PCB板上标出。 (3)PCB库中元器件的引脚编号和原理图元器件的引脚编号应当一致,例如在前面章节中介绍了二极管PCB库元器件中的引脚编号和原理图库中引脚编号不一致的问题。 (4)需要使用散热...
阅读全文
PROTEL99的图层设置与内电层分割
摘要:PROTEL99的电性图层分为两种,打开一个PCB设计文档按,快捷键L,出现图层设置窗口。左边的一种(SIGNAL LAYER)为正片层,包括TOP LAYER、BOTTOM LAYER和MIDLAYER,中间的一种(INTERNAL PLANES)为负片层,即INTERNAL LAYER。这两种图层有着完全不同的性质和使用方法。正片层一般用于走纯线路,包括外层 和内层线路。负片层则多用来做地层和电源层。因为在多层板中的地层和电源层一般都是用整片的铜皮来作为线路(或做为几个较大块的分割区域),如果用 MIDLAYER即正片层来做的画则必须用铺铜的方式来实现,这样将使整个设计数据量非常大,不利于
阅读全文
电子产品开发过程中工程师的坚持:钻、细、变……
摘要:作为电子工程师,在产品的开发调试过程中,难免会遇到形形色色的问题。有些问题也常常让我们吃不下饭睡不好觉,那种感觉叫纠缠不清(谁要咱是个负责任的工 程师)。但是随着经验的积累,我们在面对每一个疑难杂症的时候,脑子却越发的清醒,也能够更加从容的面对它们。可不是,傻瓜才会在做梦的时候再遇见0和1 这两位帅哥美女呢。 特权同学是个喜欢总结、擅于积累的人,好记性不如烂笔头,在解决各种问题后总是要用笔或键盘记录一些东西。不得不承认,人脑的容量是有限的,很多时候我们 是记着这个忘了那个。甚至于特权同学也常常回头翻看过去的博文,查找新问题可能的蛛丝马迹。对于开发调试过程中的一些雕虫小技不是本文的重点,这...
阅读全文
linux 常用命令
摘要:# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块# env # 查看环境变量资源# free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du -sh <目录名> # 查看指定目录的大小 # grep MemTotal /proc/me
阅读全文
vim 字符串替换
摘要:vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky n 为数字,若 n 为 .,表示从当前行开始到最后...
阅读全文
Linux SSH远程文件/目录传输命令scp
摘要:相信各位VPSer 在使用VPS时会 经常在不同VPS间互相备份数据或者转移数据,大部分情况下VPS上都已经安装了Nginx或者类似的web server,直接将要传输的文件放到web server的目录,然后在目标机器上执行:wget http://www.vpser.net/testfile.zip 就行了。当VPS上没有安装web server和ftp server的时候或感觉上面的方法比较麻烦,那么用scp命令 就会排上用场。一、scp是什么?scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而
阅读全文
Fedora 12 13 14基础环境配置
摘要:这里假设Fedora 12/13/14业已安装完成,并能联入网络,那么接下来的基础办公和编程环境的配置过程可以走下面这个路线:1、配置sudo file;首先,打开终端,获得root环境:su - ,并输入root帐户密码。然后: visudo ,在root ALL=(ALL) ALL这一行下面空白行处按“A”键进入插入状态,插入一行和上面一行相似的行,只是root改为要加入sudo组的用户名,如我的:然后,按“ESC”键,再按“:”键,即冒号键,再输入“wq”,作用是write and qiut。完成后执行“exit”命令退出root环境,再执行: sudo whoami ,输入密码后如果效
阅读全文
Java学习笔记——文本操作(记事本实现)
摘要:用Java写的一个记事本的小程序,实现了新建,打开,另存为,删除,复制,剪切,粘贴,查找和替换一些菜单功能,先看效果图吧~ 打开文本文件下面贴上完整代码,代码里面有详细注释 1 import java.awt.FileDialog; 2 import java.awt.GridLayout; 3 import java.awt.Toolkit; 4 import java.awt.datatransfer.Clipboard; 5 import java.awt.datatransfer.DataFlavor; 6 import java.awt.datatransfer.Stri...
阅读全文
minicom配置
摘要:串口转USB线在linux下使用 首先把usb转串口线插上然后用dmesg | grep usb查找如果看到: “drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic” 就说明设备已被识别,然后往下看 drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303 usb 2-2: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
阅读全文
AT91RM9200+pcf8563在linux2.6.20下的调试心得
摘要:这两天调试了AT91RM9200+pcf8563在linux2.6.20下的驱动,记录一下我的调试过程以及调试心得,呵呵 在linux2.6.20/drivers/rtc目录下面已经有了pcf8563的驱动程序,通过make menuconfig配置一下就可以了。 问题出来了“This chip cannot be reliably autodetected”这是源码中的注释,不能自动检测,实际上确实如此,怎么解决这个问题呢?google..... 搜索很久终于看到有个牛人的解决方法: static unsigned short normal_i2c[] = { I2C_CLIENT_END
阅读全文
SQLite移植手记
摘要:前几天成功地把Berkeley DB移植到uClinux上,虽然可以正常工作了,但是文件还是太大了些。今天来试一个稍微小一点的,它叫SQLite。 SQLite实现了大部分SQL92标准的SQL语句,同时支持ACID。还有其它许多特性这里不做深究,因为这在嵌入式领域来说应该是够用了。Hily JiangEmail&Gtalk: hilyjiang at GmailBlog: http://hily.me/blog/下载:下载页面:http://www.sqlite.org/download.html我使用的还是当前最新版本:sqlite-3.3.7.tar.gz(写完的时候已经更新出3
阅读全文
sqlite 移植到arm平台 和测试
摘要:文件:sqlite笔记和例子.rar大小:5KB下载:下载1.============================================交叉编译sqlite首先备份configure文件cp configure configure.old1).修改configure文件,主要是出错了的地方(可以看config.log文件查找到第几行对应删除即可)./configure --host=arm-linux --disable-tcl --prefix=/usr/local/arm/3.3.2/arm-linux2).修改Makefile #BCC = arm-linux-gcc -g
阅读全文
sqlite-3.3.6编译安装与交叉编译全过程详细记录
摘要:下文介绍的内容都是基于 Linux RedHat 9.0平台的。一、PC机编译安装请阅读在安装包里的 INSTALL文件。或者使用PEAR installer with "pear install sqlite"。SQLite已经内置了,你不需要安装任何附加的软件(additional software)。Windows users可以下载SQLite扩展DLL(php_sqlite.dl)。这里简单介绍一下:假设你得到的是源代码sqlite-3.3.6.tar.gz,这里将告诉你怎么编译它。解压sqlite-3.3.6.tar.gz到 /home目录下For exampl
阅读全文
SQLite移植手记1
摘要:SQLite实现了大部分SQL92标准的SQL语句,同时支持ACID。还有其它许多特性这里不做深究,因为这在嵌入式领域来说应该是够用了。下载:下载页面:http://www.sqlite.org/download.html我使用的还是当前最新版本:sqlite-3.3.7.tar.gz(写完的时候已经更新出3.3.8版本了,真快啊……)安装:时间不多,简单介绍安装过程:解压sqlite到uclinux-dist/user/sqlite/============ 对uClinux的修改 ============1. 下载sqlite,解压到uclinux-dist/user/下2. 编辑ucli
阅读全文
SQLite入门与分析(一)
摘要:写在前面:出于项目的需要,最近打算对SQLite的内核进行一个完整的剖析,在此希望和对SQLite有兴趣的一起交流。我知道,这是一个漫长的过程,就像曾经去读Linux内核一样,这个过程也将是辛苦的,但我相信结果一定是美好的... ...接下来是第一章。1、SQLite介绍自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。正与数据库管理系统非常关键一样,它们也变得非常庞大,并占用了相当多的系 统资源,增加了管理的复杂性。随着软件应用程序逐渐模块模块化,一种新型数据库会比大型复杂的传统数据库管理系统更适应。嵌入式数据库直接在应用程序进程 中运行,提供了零配置(zero-co
阅读全文
SQLite入门与分析(二)---设计与概念
摘要:写在前面:谢谢各位的关注,没想到会有这么多人关注。高兴的同时,也感到压力,因为我接触SQLite也就几天,也没在实际开发中用过,只是最近项 目的需求才来研究它,所以我很担心自己的文章是否会有错误,误导别人。但是我很想把自己的学习成果与大家分享,所以如果大家觉得我有不对的地方,望不吝赐 教。 我原打算直接从VDBE入手的,因为它起着承上启下的作用,是整个SQLite的核心,并分析源码,但考虑到这是一个系列的文章,我希望能把问题说全,所 以还是从基本概念入手,对于初学者,如果没有这些概念,是很继续下去的。好了,下面开始第二章,由于这一章内容很多,我将分两部分讨论,下面开始第一部 分。1、API 由
阅读全文
SQLite入门与分析(三)---内核概述(1)
摘要:写在前面:从本章开始,我们开始进入SQLite的内核。为了能更好的理解SQLite,我先从总的结构上讨论一下内核,从全局把握SQLite很 重要。SQLite的内核实现不是很难,但是也不是很简单。总的来说分为三个部分,本章主要讨论虚拟机(Virtual Machine),但是这里只是从原理上概述,不会太多的涉及实际代码。但是概述完内核之后会仔细讨论源代码的。好了,下面我们来讨论虚拟机(VM)。1、虚拟机(Virtual Machine) VDBE是SQLite的核心,它的上层模块和下层模块都是本质上都是为它服务的。它的实现位于vbde.c, vdbe.h, vdbeapi.c, vdbeInt
阅读全文
sqlite3 命令行简易教程
摘要:SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。开始启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。例如,创建一个包含一个表"tb11"名字为"ex1"的SQLite数据库,你可以这样做:$sqlite3 ex1SQLite
阅读全文
sqlite3 学习 记录
摘要:创建数据库 在cmd下面调用sqlite3.exe,创建数据命令如下: sqlite3 db_name.xx; 数据库名称任意,创建后直接进入数据库;如果文件存在,则直接打开; SQL的指令格式 所有的SQL的指令都是以分号(;)结尾的,为增加可读性,允许一个指令多行编辑,直到遇到分号结束指令; sqlite3中两个减号(--)代表注释,sqlite会忽略。 创建表 键入以下指令即可创建一个tab_name表: create table tab_name (field1, field2, field3...); sqlite3对字段没有严格要求,字段可以存储任何类型数据,它会适时的自动转换,当
阅读全文
SQlite命令行工具的使用
摘要:最近使用sqlite较多,这东西现在是越用越着迷,不管是工作或者个人自娱自乐写东西,只要有数据存储首先就想到了sqlite,我一直对C/S模式的数据存储很反感,记得在知道sqlite之前的很长一段时间里一直用的是xml来存数我的数据,我喜欢将数据存储在单一文件里,我可以随时把数据带在身上,而且它们兼容性够好,拿着数据文件到那里都能用,哪怕是在嵌入式系统里照样玩儿的转…SQLite特性ACID事务零配置 – 无需安装和管理配置储存在单一磁盘文件中的一个完整的数据库数据库文件可以在不同字节顺序的机器间自由的共享支持数据库大小至2TB足够小, 大致3万行C代码, 250K比一些流行的数据库在大部分普
阅读全文
sqlite 数据库 查询时显示表字段
摘要:bash-2.05b# lscert devm radius rule sqlite3 uibase vpn<SPAN style="COLOR: #ff6600">bash-2.05b# ./sqlite3 rule </SPAN>//启动 进入数据库SQLite version 3.5.4Enter ".help" for instructions<SPAN style="COLOR: #ff6600">sqlite> .tab</SPAN> // 显示数据库中表DomainN
阅读全文
sqlite3的命令简单说明
摘要:sqlite3: 一个SQLite数据库的命令行接口原文地址:http://www.sqlite.org/sqlite.htmlSQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。开始启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后 sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。例如,创建一个包含一个表"
阅读全文
SQLite命令行程序说明
摘要:sqlite3: 一个SQLite数据库的命令行接口 译者注 原文地址:http://www.sqlite.org/sqlite.html SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。开始 启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。 例如,创建一个包含一
阅读全文
模块化编程的分层设计经验
摘要:模块化编程的分层设计经验 和文档管理办法(xwj) xwj 发表于 2006-2-26 23:28:00模块化编程的分层设计经验操作要点: 1、每一层直接对下一层操作,尽量避免交叉调用或越级调用 2、某些器件会把硬件驱动层合并成一个文件时,则归于较高的层 3、相同功能的外部函数尽量一致,尽量保证通用性 4、对于初次编程的模块,要严格保证中间各层的正确性好处: 1、对于后期维护扩展,只需修改应用层和物理层,根据需要扩展功能层 2、一个新项目只需把要用到的文件加入工程,简单修改调试就出来了 3、随着模块的不断积累,新的项目将越来越容易完成,后期的维护扩展也变得非常简单了 4、对于C语言编程,只需简
阅读全文
如何使用extern和static限定符
摘要:extern 和static的使用方法,应该属于C语言的基础知识了。可是,在实际工作中,还是经常会在代码里看到关于这两个限定符使用的问题,总结一下,大致有两类:其一,对于模块中的变量或者函数,不了解到底加不加static或者 extern修饰符;其二,在加限定符的时候,不知道正确的使用方法。因此,有必要旧话重提,说明一下。简单的说,记住两句话即可,1 Static表示:被修饰的变量或者函数不可以被本模块以外的其他任何模块使用;而extern恰恰相反,表示同意其被被本模块以外的其他模块使用;2当变量或者程序没有被static或者extern修饰的时候,变量或者函数可以被其他模块使用。这么说可能还
阅读全文
c++中const的应用
摘要:面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)2. const 修饰类的数据成员。如: class A{ const int size; … }const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多..
阅读全文
C语言条件编译及编译预处理阶段
摘要:一、C语言由源代码生成的各阶段如下:C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预 处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入
阅读全文
#ifdef,#ifndef,#if的用法随笔
摘要:#ifdnef,#ifdef,#if的用法简析#ifdnef,#ifdef,#if都是用于防止重复编译的命令。对于处理程序中提供了条件编译的功能。常用的预处理命令介绍如下:一:#include [ **.h] 指定的文件(file)插入到指令所在位置的代码处。通常用于包含头文件,是代码可以利用在别处定义的内容。二:#define [key] [key_value] 制定键(key)的每次出现都用key_value替换。 注意:#define(即宏定义)采用的是“傻瓜式”的替换,因此它往往很危险。在C++中采用const来定义常量,实现了与#define相同的功 能,而且功能要比#define强
阅读全文
sprintf,snprintf的用法(可以作为linux中itoa函数的补充)
摘要:sprintf,snprintf的用法(可以作为linux中itoa函数的补充) sprintf() 格式化输出函数(图形)功能: 函数sprintf()用来作格式化的输出。用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);说 明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用 outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函 数将所要输
阅读全文
Fedora 9安装vmtools后鼠标无法准确定位的问题
摘要:今天突然心血来潮装了个Fedora9玩一玩。结果在VM中装完vmtools发现鼠标在登陆界面根本无法使用,进入桌面后定位不准确,GOOGLE一下,找到方法,呵呵,记下来。如下: 由于在装载xorg-x11-drv-vmmouse驱动时的一个bug,在客户虚拟机的显示中,鼠标位置可能不正确。直到被更新前,在客户机中添加Option NoAutoAddDevices到/etc/X11/xorg.conf文件的ServerFlags节中。如果需要,创建这个节:Section "ServerFlags" Option "NoAutoAddDevices"EndS
阅读全文
Fedora 9 安装vmware tools无kernel-devel的问题
摘要:在vmware 6 上面安装 fc 9,然后安装vmwaretools 的时候,没有C header files。 What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include] 解决方法: 这个问题,需要安装与系统内核配套的开发包。查看内核: uname -r 内核头文件C header files下载地址:http://rpmfind.net/linux/rpm2html/search.php?query=kernel-devel
阅读全文
Fedora 9中“网卡无法自动激活”的解决方法
摘要:问题产生: 安装Fedora 9之后没有什么异常,所有的网卡都能DHCP自动获得IP地址。但是,有次我用系统网络管理工具(system-config- network/NetworkManager)做了一下设置,其实只是修改了一下Hosts。保存重启之后,发现我的所有网卡都没有起来,必须除了 wireless之外,所有的网卡都要手动启动。Firefox默认工作在Offline模式,好像其它的网络程序,如gaim,也不能正常工作。 问题解决: 到网上搜了一下,可能这是网络管理程序的问题,我的解决办法是: 打开网络管理程序,选中一个网卡,双击或编辑,为该网卡选中“Contrlled by Netw
阅读全文
C语言system函数用法
摘要:system()函数用于向操作系统传递控制台命令行,以WINDOWS系统为例,通过system()函数执行命令和在DOS窗口中执行命令的效 果是一样的,所以只要在运行窗口中可以使用的命令都可以用SYSTEM()传递,但要注意的是输入斜线时要输入两个,以名C语言当作转义字符处理。 system函数 是可以调用一些DOS命令,比如system("cls");//清屏,等于在DOS上使用cls命令,写可执行文件路径,可以运行它···· 下面列出常用的DOS命令,都可以用system函数调用:ASSOC 显示或修改文件扩展名关联。 AT 计划
阅读全文
fedora15 终端设置记录
摘要:虽然一直对ubuntu以外的linux并不感兴趣,但是工作需要,还是得研究一下,顺便强化一下自己对于ubuntu认知的正确性。。。工作中用到的fedora需要进行一些设置,首先先记录一下吧,防止以后被忘记1.如何设置fedora 15使其开机进入文本界面?这个问题其他是很古老的书上都有啦,是linux很基础的问题,原始的方法是sudo nano /etc/inittab改变 “:3/5:”就可以了,但如今时代变了,fedora也有了新的改变,虽然我并不了解fedora的systemd是啥创新,但是有改变了解了就好。。sudo rm /etc/systemd/system/default.tar
阅读全文
Fedora 15允许root用户登录桌面及桌面图标问题解决方案
摘要:1.Fedora 15使用root登录gnome首先以用户账号进入终端,允许root账号登陆:$ su$ vi /etc/pam.d/gdm删除其中的一行 auth required pam_succeed_if.souser != root quiet:wq保存并退出。$ vi /etc/pam.d/gdm-password删除其中的一行 auth required pam_succeed_if.souser != root quiet:wq保存并退出。这样就可以使用root进行GUI登陆了。2.Fedora15安装桌面工具Fedora15默认桌面没有图标,需要手工安装gnome-tweak
阅读全文
vmware下面fedora 14安装vm tools总结
摘要:第一步:安装VMware Tools时候需要安装perl、gcc和kernel-devel包yum install perl gcc kernel-devel解决这个问题:Detected GCC binary at "/usr/bin/gcc".The path "/usr/bin/gcc" appears to be a valid path to the gcc binary.Would you like to change it? [no]Searching for a valid kernel header path...The path &q
阅读全文
fedora14 安装后的设置(整合加转载)
摘要:安装版本:官方网站上下载的32位桌面版1,添加源:(1)添加163源:首先输入打开终端输入su,输入密码,取得管理员权限;其次输入 gedit /etc/yum.repos.d/163.repo,回车再次把一下内容复制到打开的163.repo中:[Fedora-mirrors.163.com] name=Fedora 12 – i386 baseurl=http://mirrors.163.com/fedora/updates/12/i386/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Fedora file
阅读全文
链表的C语言实现之单链表的实现
摘要:一、单链表的建立 有了动态内存分配的基础,要实现链表就不难了。 所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分: 1、数据域:用来存储本身数据 2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。 例: typedef struct node { char name[20]; struct node *link; }stud; 这样就定义了一个单链表的结构,其中char name[20]是一个用...
阅读全文
链表的建立、插入和删除
摘要:数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一。我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费。我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要。链表就是我们需要的动态数组。它是在程序的执行过程中根据需要有数据存储就向系统要求申请存储空间,决不构成对存储区的浪费。链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表、循环链表、双向链
阅读全文
单向链表操作详解(一)
摘要:/*===============================================作者:rerli时间:2003-12-05目的:学习单向链表的创建、删除、 插入(无序、有序)、输出、 排序(选择、插入、冒泡)、反序说明:编译没有任何错误,能生成EXE文件。 这个程序TC2.0中编译生成的EXE文件, 在运行输入节点时出现以下错误(TC2.01中没有任何错误): scanf : floating point formats not linked Abnormal program termination 即:struct student中float score字段在输入时, 它不
阅读全文
单向链表操作详解(二)[The End]
摘要:/*接着讲(测试编译时,请把相应的函数及测试代码放到上一讲代码的相关地方):排序(选择、插入、冒泡)插入(有序)*//*===============================================作者:rerli时间:2003-12-08目的:学习单向链表的创建、修改、删除、 插入(无序、有序)、输出、 排序(选择、插入、冒泡)、反序说明:编译没有任何错误,能生成EXE文件。 这个程序TC2.0中编译生成的EXE文件, 在运行输入节点时出现以下错误(TC2.01中没有任何错误): scanf : floating point formats not linked Abnorm
阅读全文
重温经典排序思想--C语言常用排序全解
摘要:/*===============================================作者:rerli时间:2003-12-15目的:重温经典排序思想,并用C语言指针实现排序算法================================================*//*=============================================================================相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):1、稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之
阅读全文
简单一道排序题,考倒多少读书人!
摘要:/*===================================================================作者:rerli时间:2003-12-17目的:从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!====================================================================*//* 简单一道排序题,考倒多少读书人! ——从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业! 大学生早已不是天之骄子,仅仅是一个普通劳动者。网上一句顺口溜“本科生象条
阅读全文
C语言编写linux下的守护进程
摘要:利用网上下载的这段代码,成功实现了守护进程,原来守护进程是很简单的事情。 在main函数中执行 1 init_daemon();//初始化为Daemon 2 3 就可以把进程变成守护进程 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 void init_daemon(void)11 {12 int pid;13 int i;14 15 if(pid=fork())16 exit(0);//是父进程,结束父进程17 else if(pid< 0)18 exit(1);//fork失败,退出19 //是第一子进程...
阅读全文
单链表
摘要:1、链接存储方法 链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))注意: 链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。 2、链表的结点结构 ┌──┬──┐ │data│ne...
阅读全文
单链表的运算
摘要:1、建立单链表 假设线性表中结点的数据类型是字符,我们逐个输入这些字符型的结点,并以换行符'\n'为输入条件结束标志符。动态地建立单链表的常用方法有如下两种:(1) 头插法建表① 算法思路 从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。 具体方法【参见动画演示】注意: 该方法生成的链表的结点次序与输入顺序相反。② 具体算法实现 1 LinkList CreatListF(void) 2 {//返回单链表的头指针 3 ...
阅读全文
循环链表(Circular Linked List)
摘要:循环链表是一种首尾相接的链表。 1、循环链表(1)单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可。 (2)多重链的循环链表——将表中结点链在多个环上。 2、带头结点的单循环链表 注意: 判断空链表的条件是head==head->next; 3、仅设尾指针的单循环链表 用尾指针rear表示的单循环链表对开始结点a1和终端结点an查找时间都是O(1)。而表的操作常常是在表的首尾位置上进行,因此,实用中多采用尾指针表示单循环链表。带尾指针的单循环链表可见下图。 注意: 判断空链表...
阅读全文
指针函数和函数指针有什么区别
摘要:1,这两个概念都是简称,指针函数是指带指针的函数,即本质是一个函数。我们知道函数都又返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示: 返回类型标识符 *返回名称(形式参数表) { 函数体 } 返 回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该 地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。例如 下面一个返回指针函数的例子: 1 #include 2 ...
阅读全文
指针津逮--------浅谈从指针到“ref”
摘要:大凡刚刚接触C语言的人,最头疼的就是指针和链表了,别的变量里存放的都是“正而八经”的值,这指针呢,偏偏存的就是一地址,用起来还有声明和定义之别, 声明是有“*”号的,赋其地址值,定义时是无“*”号方可赋地址值。由于可以直接给其赋内存地址,初学者稍有不慎,这指针便如群魔乱舞,使编译者错误迭 出。这时初学者不禁扼腕兴叹,要是没有指针多好!指针有什么用?然而指针被喻为C语言的精华,自有其必然之处,例如:1 void fun(int a)2 {3 a=20;4 }5 void main()6 {7 int a = 10;8 fun(a)9 }想让a变成20,若把a作为实参直接传进去经...
阅读全文
如何使用yum管理RPM (转)
摘要:一. yum是什么yum = Yellow dog Updater, Modified 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 二. yum特点 *可以同时配置多个资源库(Repository) *简洁的配置文件(/etc/yum.conf *自动解决增加或删除rpm包时遇到的倚赖性问题 *使用方便 *保持与RPM数据库的一致性 三. yum安装 CentOS自带(yum-*.noarch.rpm) #rpm -ivh yum-*.noarch.rpm 四. yum指令 注:当第一次使用yum或yum资源库有更新时,yum会自
阅读全文
怎样加快 fedora13 yum的下载速度
摘要:1、删除已经缓存的yum站点信息 # sudo yum clean all 2、安装fastestmirror,让yum自动找最快的源进行下载 # sudo yum -y install yum-fastestmirror 3、在修改/etc/yum.repos.d/*.repo文件, 每个文件的mirror×××××那行(一般是第5行)的最后面加上“&country=us”,即选择美国的服务器,因为美国的服务器最多,同 时速度基本上是最快的(可选,因为,我没有对比过) 经过这样的设置,我的yum速度从平均 6k/s - 20k/s 提
阅读全文
Fedora如何删除旧内核?
摘要:由于Fedora更新升级非常的频繁, 所以, 非常有必要清除陈旧的内核,方法如下:1. 查看当前系统中已安装的内核相关包:[root@knityster ~]# rpm -qa | grep kernelkernel-headers-2.6.32.12-115.fc12.i686kernel-firmware-2.6.32.12-115.fc12.noarchkernel-PAE-devel-2.6.32.11-99.fc12.i686kernel-devel-2.6.32.12-115.fc12.i686kernel-PAE-2.6.32.11-99.fc12.i686kernel-PAE-
阅读全文
如何防止yum自动更新apache,php,mysql等
摘要:有时候,我们必须不希望某些软件自动更新到最新版本。那么,如何防止yum自动更新apache,php,mysql等? 方法: vi /etc/yum.conf 在[main]增加如下一行: exclude=bind-chroot apache* pure-ftpd* mod_ssl* spamassassin* httpd* ruby* proftpd* courier* php* mysql* exim* ctohome.com* nsd* dovecot* squirr elmail* 看到了吧,exclude里面的所有软件,都不会被yum成最新版了。 比如,yum insta...
阅读全文
关闭Linux响铃、Fedora Core删除更新及安装过的文件
摘要:关闭Linux响铃1. 关闭shell中的响铃 整体关闭 vi /etc/inputrc 添加 set bell-style=none set bell-style none set bell-style off 关闭个人用户 vi ~/.inputrc 添加 set bell-style=none2. 关闭vi和vim中的响铃 vi /etc/vimrc vi /etc/virc 打开上面这两个文件后添加 set vb t_vb=在X Window系统下,可以使用xset 命令为之,命令如下: xset b off (输入xset 回车后得到xset命令的选项)在linux中控...
阅读全文
Linux(fedora)中安装和删除软件
摘要:在windows 下几乎所有的应用软件都提供了安装程序,如setup.exe、install.exe,大家只要双击然后一路“下一步”就行了,但是在linux 下很少有软件是通过这种方式安装的,因为linux 下的应用软件多是源码包方式,需要用户手工编译安装,在本章向大家讲解如何在linux 安装软件,另外在fedora 中大家也会发现提供了一个“添加/删除软件”的功能,但是只能联网使用。1_ ?*x T ~ E b-VT3} } L D Y I/W P W 1 具有安装程序软件的安装 前面说了,linux 软件很少有像windows 软件那样双击exe然后一路“下一步”,但并不是没有,如优..
阅读全文
程序员技术练级攻略
摘要:月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历,我在把他的心得做了不多的增改,并根据我的经历增加了“进阶”一节。这是一篇由新手和我这个老家伙根据我们的经历完成的文章。我的这个朋友把这篇文章取名叫Build Your ProgrammingTechni
阅读全文
虚拟机 如何打开3D加速
摘要:用虚拟机玩游戏的方法!! 开3D加速!用虚拟机玩游戏的方法!! 开3D加速! 曾经用过一些不同虚拟机结果大多都不支持3D驱动,所以导致虚拟机是不能够玩游戏的! 今天给大家带来的是用虚拟机玩游戏的方法!! 虚拟机软件:VMWare虚拟机,版本最好是在5.5以上 硬件要求, CPU2.4以上,内存在512以上,512的朋友可以试试 比这个低配置的朋友就不要浪费时间了! 最好显卡是128以上的,本人的是256的显卡 虚拟机安装的系统可以是2000和XP,98好像开3D有问题,就酸把Direct X9.0装上也好像不行 所以建议用2000或XP 然后找到你虚拟机的扩展名为 .vmx的文件 (什么,找不
阅读全文
嵌入式WEB服务器BOA的移植方法
摘要:今天自己在开发板上移植了boa服务器。参考资料是李驹光、郑耿大侠在恒颐论坛上的帖子。李大侠写的好,我没有费什么力气就搞定了,:-)。步骤如下:1.从http://www.boa.org/下载Boa源码,将其解压并进入源码目录的src子目录# tar -zxvf boa-0.94.13.tar.gz# cd boa-0.94.13/src2.生成Makefile文件# ./configure修改Makefile文件,a.找到CC=gcc,将其改成CC = arm-linux-gcc,b.找到CPP = gcc –E,将其改成CPP = arm-linux-gcc –E,保存退出。3.运行make
阅读全文
Linux系统编译boa-0.94-13出错信息问题
摘要:编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。 yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。 一开始make 错误1: debian:/home/a/boa-0.94.13/src# make yacc -d boa_grammar.y make: yacc: Command not found make: *** [y.tab.c] Error 127 解决方法: debian:/...
阅读全文
strstr函数
摘要:strstr函数2008年08月02日 星期六 10:30函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例:#include <stdio.h> #include <string.h>int main(void) { char string[10]; char *str1 = "abcdefghi
阅读全文
修改arm开发板IP地址
摘要:要修改arm开发板的IP,如果是yaffs2文件,可以1、首先要修改/etc/init.d/rcS文件,在/sbin/ifconfig lo 127.0.0.0下添加一行/sbin/ifconfig eth0 192.168.1.20 up注:192.168.1.20 只是举例,可以改成你想要修改的IP地址本来这样修改之后就可以的,但是我发现仍然不行,使用ifconfig命令,发现开发板IP地址没有被更改过来。后来无心插柳,发现还需要修改另一处2、修改/etc/eth0-setting将其IP地址改成你想要设置的IP重启开发板,使用ifconfig命令,就发现IP地址已经修改过来了。
阅读全文
SmartArm3250下的Linux系统安装
摘要:目前正在研究SmartArm3250的Linux驱动方面,所以首先就要在开发板上安装(也可以称为下载)Linux系统,按照书上的步骤,遇到一些小问题,通过多次试验和总结,现在可以熟练的安装Linux系统了,总结一下,其中包含个人的见解和自己找到的资料。首先,介绍一下安装Linux的大致步骤。开发板就像一个裸机一样,什么都没有(当然有硬件),首先要安装一个类似于电脑中BIOS一样的东西,还 有一个引导操作系统的东西,然后就是装入内核镜像,不是.iso文件哦,是编译内核生成的一个东东,最后就是一个文件系统,类似于电脑中的各个分区,也可 以理解成光是C盘的各种东西,而与电脑中安装系统的不同之处在于,
阅读全文
用C语言库(CGIC)编写CGI,实现文件上传
摘要:用C语言编写cgi程序的话,多半会用到CGIC。 这是个非常流行的库,遇到文件上传之类的应用更是离不开它。官方页面及下载地址为:www.boutell.com/cgic/#obtain不少网站都有文件上传的功能,本文展示如何用CGIC库编写文件上传的服务端程序,最后给出一段简单的HTML代码,供大家测试使用 。下载: upload.c#include<stdio.h>#include<string.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include&quo
阅读全文
Linux内核入门-如何获取Linux内核源代码、生成配置内核
摘要:如何获取Linux内核源代码如何获取Linux内核源代码下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。使用Git由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。你可以使用下
阅读全文
Linux 下 strace 命令用法总结(一)
摘要:1功能说明strace命令是一种强大的工具,能够显示任何由用户空间程式发出的系统调用.strace显示这些调用的参数并返回符号形式的值.strace从内核接收信息,而且无需以任何特别的方式来构建内核.strace的每一行输出包括系统调用名称,然后是参数和返回值.下面记录几个常用option:-f-F选项告诉strace同时跟踪fork和vfork出来的进程-oxxx.txt输出到某个文档.-eexecve只记录execve这类系统调用. 2详细用法usage:strace[-dffhiqrtttTvVxx][-acolumn][-eexpr]...[-ofile][-ppid]...[-sst
阅读全文
系统调用
摘要:1、execve系统调用用来执行参数filename字符串所代表的文件路径int execve(const char * filename,char * const argv[ ],char * const envp[ ]);2、brk & sbrk 系统调用库过程brk和sbrk用来调整数据段的上限3、access系统调用检查调用进程是否可以对指定的文件执行某种操作4、mmap系统调用void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); 参数fd为即将映射到进程空间的文件描述字,一
阅读全文
Linux内核的Oops
摘要:什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux内核也会抱歉的对我们说:“哎呦(Oops),对不起,我把事情搞砸了”。Linux内核在发生kernel panic时会打印出Oops信息,把目前的寄存器状态、堆栈内容、以及完整的Call
阅读全文
如何成为一个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方式获取摄像头数据的方式过程一般为:打开设备 -> 获取设备的信息
阅读全文
BMP_GIF_PNG_LZW_LZ77简介
摘要:一、BMP它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩;BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。当biBitCount=1时,8个像素占1个字节;当biBitCount=4时,2个像素占1个字节;当biBitCount=8时,1个像素占1个字节;当biBitCount=24时,1个像素占3个字节;二、GIFGIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右;GIF的图像深度从lbit到8bit,也即GIF最多支持256种色彩的图像。GIF格式的另一
阅读全文
每个程序员都应该学习使用Python或Ruby
摘要:如果你是个学生,你应该会C,C++和 Java。还会一些VB,或C#/.NET。多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaScript知识。总体上说,我们 很难发现会有学生显露出掌握超出这几种语言范围外的语言的才能。这真让人遗憾,因为还有很多种编程语言,它们能让你成为一个更好的程序员。在这篇文章里,我将会告诉你,为什么你一定要学习Python或Ruby语言。跟C/C++/Java相比 — Python/Ruby能让你用少的多的多的代码写出相同的程序。有人计算过,Python或Ruby写出的程序的代码行数只相当于相对应的Java代码的行数的五分之一。如果没有绝对的必要
阅读全文
做一个懒惰的程序员
摘要:本文写给所有可爱的程序员,(我)你们都是一群可爱的,用双手建造世界的思想家。从今天起,我要做一个懒惰的程序员。第一 拒绝鼠标从今天,我将拒绝鼠标。鼠标,是鼠标手的 根源,无数的程序员都被鼠标手所困扰,这似乎已经成为了程序人员的专利。我们养成了一个一个的“恶习”,比如,滥用鼠标右键刷新,看文档的时候,喜欢用鼠 标来标记正在阅读的段落等等。这些非常规的使用使我们的手得了严重的疾病,我不知道,这样继续下去,当我们牙齿掉光的时候,是否还有能力抚摸妻子动人的面 庞。所以,我要从以下几个方面拒绝鼠标的诱惑:(虽然某些时候它真的很方便)1. 我要开始使用Emacs或是VimEmacs和Vim就是程序员的倚天
阅读全文
不看这篇日志也许会节省你十分钟,但是却会耽误你的一辈子
摘要:HP大中华区总裁孙振耀退休感言 : 如果这篇文章没有分享给你,那是我的错。 如果这篇文章分享给你了,你却没有读,继续走弯路的你不要怪我。 如果你看了这篇文章,只读了一半你就说没时间了,说明你已经是个“茫”人了。 如果你看完了,你觉得这篇文章只是讲讲大道理,说明你的人生阅历还不够,需要你把这篇文章珍藏,走出去碰几年壁,头破血流后再回来,再读,你就会感叹自己的年少无知。 如果你看完了,觉得很有道理,然后束之高阁,继续走进拥挤的地铁,依然用着自己昨日的观念来思考自己的未来,你的人生也将继续重复着昨日的状况。 如果你看完了,觉得那是一个过来人,对你的人生忠告,并你也愿意用他告诉你的思想去指导自己今后的
阅读全文
这是给开发者的弥天大谎还是至理名言?
摘要:“当我需要用到它时我就去学它!”过去这些年里这句话我听到无数次;对于处在一个像软件开发 这样的快速发展变化的行业里,这听起来像是一种十分适用主义的态度。从某些层面上说,它确实十分适用,但从另一个层面来看,我很受这句话困扰。它似乎成了 我们这个行业的福音,但却从来没有把这个行业变的更好。问题就在于,这句话表面上借明智的有经验的开发者之言,其实是幌子,实为人们随波逐流的借口。实在是有太多的东西需要我们在工作之中“发现学习”,但对于这种对新知的“发现学习”,你是工作学习齐头并进,还是单纯的遇到了什么问题,就学习处理这问题的知识?这两者之间有很大的区别。整 个行业里到处都是通才、全才,也许向来如此,只
阅读全文
想要写好的程序应该远离计算机
摘要:我最近想明白了一些事情。最好的写程序的地方不是在你的计算机前,不是使用你的编译器、IDE或其它一些工具。这最好的地方是一个远离这些工具的场所 —— 是某个能让你认真的思考的地方。对于一个你很熟悉的编程语言,你很容易把你脑子里已经构思好的程序转换成编译器/解释器可以编译/解释的程序 —— 难就难在如何在脑子里先把程序编好。有 一天我乘火车旅行。我带了笔记本,但没有网络。不幸的是,我使用的是一种商业编程语言(IDL,真不巧),这种语言需要使用我大学网站上的许可证。因为不 能连上互联网,我拿不到许可证,于是我的编译器和IDE就跑不起来。你可能会喜欢使用一个需要昂贵的许可证的商业编程语言,但它的确使我
阅读全文
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 ...
阅读全文
如何高效阅读文献paper
摘要:1.牛人一(从phd到现在工作半年,发了12篇paper, 7篇first author.)我现在每天还保持读至少2-3篇的文献的习惯.读文献有不同的读法.但最重要的自己总结概括这篇文献到底说了什么,否则就是白读,读的时候好像什么都明白,一合上就什么都不知道,这是读文献的大忌,既浪费时间,最重要的是,没有养成良好的习惯,导致以后不愿意读文献.1. 每次读完文献 (不管是细读还是粗读), 合上文献后,想想看,文章最重要的 take home message是什么, 如果不知道,就从abstract, conclusion里找, 并且从discuss里最好确认一下. 这样一来, 一篇文章就过关了.
阅读全文
C/C++库文件简介
摘要:其实,C/C++世界开始时并没有库这个概念,我们编写程序的时候,都是自己搞定一切:Coding,Compile,Link,生成一个可执行文件后载 入系统运行就可以了。但是,如果每个程序员都这样各自为政的话,将会导致大量的重复劳动。譬如,在很多程序中都需要输入输出的功能,按照现在这种状况,只 有每个程序员都自己重新开发这样的功能模块,这样效率之低下可想而知。于是,大家渴望能够进行代码重用:一些通用的代码最好能够由别人提供,我只需调用即 可。 那么,我们如何得到这些可重用的代码呢?首先我们想到可以让编译器自动为我们生成这些代码。我们只需调用这些函数,编译器解析到这些函数时,如C语言的 print.
阅读全文
Makefile2
摘要:四、嵌套执行make 在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。 例如,我们有一个子目录叫subdir,这个目录下有个Makefile文件,来指明了这个目录下文件的编译规则。那么我们总控的Makefile可以这样书写: subsystem: cdsubdir&&$(MAKE) 其等价于: subsyst
阅读全文
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
阅读全文
vim命令学习总结
摘要:第一讲小结:1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。h (左移)j (下行) k (上行) l (右移) 2. 欲进入vim编辑器(从命令行提示符),请输入∶vim 文件名 <回车> 3. 欲退出vim编辑器,请输入以下命令放弃所有修改∶ <ESC> :q! <回车> 或者输入以下命令保存所有修改∶ <ESC> :wq <回车> 4. 在正常模式下删除光标所在位置的字符,请按∶ x 5. 在正常模式下要在光标所在位置开始插入文本,请按∶ i输入必要文本<ESC> 特别提示∶按下 <E
阅读全文
.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
阅读全文
make的常见错误信息
摘要:本文对make执行时可能出现常见错误进行汇总、分析,并给出修正的可能方法。 make执行过程中所产生错误并不都是致命的;特别是在命令行之前存在“-”、或者make使用“-k”选项执行时。make执行过程的致命错误都带有前缀字符串“***”。 错误信息都有前缀,一种是执行程序名作为错误前缀(通常是“make”);另外一种是当Makefile本身存在语法错误无法被make解析并执行时,前缀包含了makefile文件名和出现错误的行号。 在下述的错误列表中,省略了普通前缀: [FOO] Error NN [FOO] signal description 这类错误并不是make的真正错误。它表示...
阅读全文
如何阅读代码?
摘要:原文:Why I Love Reading Other People’s Code And You Should Too by Alan Skorkin 翻译:Yurii我恨读代码我发现,许多程序员都讨厌读代码——拜托别掩饰了,承认吧。差不多每个人都喜欢写代码——写代码乐在其中。可是,读代码真是不容易,而且还很烦人,又无可逃避,其他人写的代码总是很垃圾(即便不说,我们心里也这么想的)。即使自己写的代码,过几个小时再看也有点垃圾,过的时间再久点,就更垃圾了。那么,还有什么理由去看别人的蹩脚代码,而是不自己写几手漂亮的?能不能暂且忽略这个问题,花上几个小时看别人的代码,再回头来看自己的是不是还那么
阅读全文
做软硬件开发的经验总结
摘要:1、读程序一个线程一个线程的分析,由于程序一般比较大,我们可以截取其中独立的一小部分,进行分析。每一个线程可能包括很多函数,他们也许在不同的文件中,我们可以把他们都截取出来进行总结2、对于程序中某个知识点的漏洞,上GOOGLE上查找相关的资料,查找定义、原理、例子、程序的内容3、软件环境的搭建,要善于总结,总结时还要看看加载的一些文件是什么,什么性质的文件,最简单的就是把英文的翻译成中文的,一步一步总结完,要养成这个习惯4、在做项目过程中肯定会遇到很多问题,我们可以把出现的问题进行总结,并且把自己的思路写清楚5、对于不懂的命令或者板子进行测试,也有思路,确定好什么样子的测试思路很重要: 1、要
阅读全文
在规则中使用通配符
摘要:在规则中使用通配符 如果我们想定义一系列比较类似的文件,我们很自然地就想起使用通配符。make支持三各通配符:“*”,“?”和“[...]”。这是和Unix的B-Shell是相同的。 波浪号(“~”)字符在文件名中也有比较特殊的用途。如果是“~/test”,这就表示当前用户的$HOME目录下的test目录。而“~hchen/test”则表示用户hchen的宿主目录下的test目录。(这些都是Unix下的小知识了,make也支持)而在Windows或是MS-DOS下,用户没有宿主目录,那么波浪号所指的目录则根据环境变量“HOME”而定。 通配符代替了你一系列的文件,如“*.c”表示所以后缀为c的
阅读全文
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”可同...
阅读全文
后缀规则(一种古老的隐含规则)以及隐含规格搜索法
摘要:一、后缀规则 后缀规则是一种古老定义隐含规则的方式,在新版本的make中使用模式规则作为对它的替代,模式规则相比后缀规则更加清晰明了。在现在版本中保留它的原因是为了能够兼容旧的makefile文件。后缀规则有两种类型:“双后缀”和“单后缀”。 双后缀规则定义一对后缀:目标文件的后缀和依赖目标的后缀。它匹配所有后缀为目标后缀的文件。对于一个匹配的目标文件,它的依赖文件这样形成:将匹配的目标文件名中的后缀替换为依赖文件的后缀得到。如:一个描述目标和依赖后缀的“.o”和“.c”的规则就等价于模式规则“%o : %c”。 单后缀规则只定义一个后缀:此后缀是源文件名的后缀。它可以匹配任何文件,其依赖文件
阅读全文
伪目标 多目标 override 指示符
摘要:最早先的一个例子中,我们提到过一个“clean”的目标,这是一个“伪目标”, clean: rm*.otemp 正像我们前面例子中的“clean”一样,即然我们生成了许多文件编译文件,我们也应该提供一个清除它们的“目标”以备完整地重编译而用。(以“makeclean”来使用该目标) 因为,我们并不生成“clean”这个文件。“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。 当然,为了避免和文件重名的这种情况
阅读全文
自动化变量
摘要:模式规则中,规则的目标和依赖文件名代表了一类文件名;规则的命令是对所有这一类文件重建过程的描述,显然,在命令中不能出现具体的文件名,否则模式规则失去意义。那么在模式规则的命令行中该如何表示文件,将是本小节的讨论的重点。 假如你需要书写一个将.c文件编译到.o文件的模式规则,那么你该如何为gcc书写正确的源文件名?当然了,不能使用任何具体的文件名,因为在每一次执行模式规则时源文件名都是不一样的。为了解决这个问题,就需要使用“自动环变量”,自动化变量的取值是根据具体所执行的规则来决定的,取决于所执行规则的目标和依赖文件名。 下面对所有的自动化变量进行说明: $@ 表示规则的目标文件名。如果目标是.
阅读全文
JavaScript language overview
摘要: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
阅读全文
Linux原子操作
摘要:一、原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它是最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义于内核源码树的 atomic.h 文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。原子操作主要用于实现资源计数,很多引用计数(refcnt)就是通过原子操作实现的。原子类型定义如下:typedefstruct { volatileintcounter;}atomic_t; volatile修饰字段告诉gcc不要对该..
阅读全文
安排主编号
摘要:安排主编号最好的方式, 我们认为, 是缺省使用动态分配, 而留给自己在加载时指定主编号的选项权, 或者甚至在编译时. scull 实现以这种方式工作; 它使用一个全局变量, scull_major, 来持有选定的编号(还有一个 scull_minor 给次编号). 这个变量初始化为 SCULL_MAJOR, 定义在 scull.h. 发布的源码中的 SCULL_MAJOR 的缺省值是 0, 意思是"使用动态分配". 用户可以接受缺省值或者选择一个特殊主编号, 或者在编译前修改宏定义或者在 insmod 命令行指定一个值给 scull_major. 最后, 通过使用 scul
阅读全文
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...
阅读全文
RS-232、RS-422与RS-485串口标准简介
摘要:一、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是一种单机发送、多机接收的单向、平衡传输规范
阅读全文
LTT (Linux Trace Toolkit) 简介
摘要:1概念1.1功能LTT是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:?系统调用的进入和退出?陷阱/中断(Trap / Irq)的进入和退出?进程调度事件?内核定时器?进程管理相关事件:创建 ,唤醒,信号处理等等?文件系统相关事件:Open / Read / Write / Seek / Ioctl 等等?内存管理相关事件:内存分配/释放等?其他事件:IPC / Socket/ 网络 等等此外 Ltt还提供了自定义和记录需要跟踪的事件类型的函数接口。1.2结构LTT主要由4个部分组成:?内核代码补丁:LTT目前还没有纳入正式的官方内核,在内核中的部分代
阅读全文
stdio 与 STDIN_FILENO
摘要: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
阅读全文
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,但由于它在内存占用和启动时间
阅读全文
linux下查找文件find命令详解
摘要: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这
阅读全文
Linux 中 RPM 命令参数使用详解
摘要:在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM)。此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。下面就给大家介绍一下它的具体使用方法。 1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看: rpm -qpi Linu...
阅读全文
linux中的staff和wheel
摘要:wheel组就类似于一个管理员的组通常在UNIX下,即使我们是系统的管理员,也不推荐用root用户登录来进行系统管理。一般情况下 用普通用户登录,在需要root权限执行一些操作时,再su登录成为root用户。但是,任何人只要知道了root的密码,就都可以通过su命令来登录为 root用户--这无疑为系统带来了安全隐患。所以,将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户,但如果不对一些相关的 配置文件进行配置,这个管理员组内的用户与普通用户也没什么区别--就像警察下班后,没有带枪、穿这便衣和普通人(用户)一样,虽然他的的确确是警察。根 据应用的实例不同应用wheel组
阅读全文
理解 /etc/group 文件,关于i-node的形象比喻和正解
摘要:/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平米,但是也只是人家自己住。不能让其他人住了。。 假如您建立楼房的时候,都是
阅读全文
详细介绍Linux /etc/group文件
摘要:Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件,Linux /etc/group文件相对另外两个文件内容相对较少,这里对这一文件进行以下分析。用户组的所有信息都存放在/etc/group文件中将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首
阅读全文
关于linux的etc/的文件目录
摘要:其他的 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
阅读全文
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 命令功能说明:设置或显示环境变量。(比如我们要用一个命令,但这个命令的执行文件不在当前目
阅读全文