
每天进步一点
文章平均质量分 52
suwenqiang2011
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
免费文档下载
文档下载免费助手/新浪爱问/百度文库/道客巴巴/豆丁网/全部免费下载1、文档下载免费助手http://keyan.cc/free/index.php2、iDown资源下载http://idown.org/cloud/3、优快云免积分下载http://wwww.beianx.com/Csdn/www.mixiazai.com提供4、冰转载 2013-02-17 13:53:25 · 1914 阅读 · 0 评论 -
相机像素
原来相机的像素就是指拍摄出来的图片的分辨率。相机像素 = 拍摄出来的图片分辨率X * Y。例如:iphone4S摄像头为800W,则它最大支持3264×2448 =7990272像素照片拍摄。原创 2012-12-20 16:26:50 · 770 阅读 · 0 评论 -
创建字符设备与生成设备节点
使用udev在/dev/下动态生成设备文件create_chrdev.c---------------------------------------------#include //dev_t #include //struct cdev #include //alloc_chrdev_region()#include /转载 2012-12-24 10:03:07 · 841 阅读 · 1 评论 -
kthread内核线程
1. 使用kthread_create创建线程: struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char *namefmt, ...);这个函数可以像print转载 2012-12-22 11:34:11 · 733 阅读 · 0 评论 -
tp驱动问题
在看goodix的tp驱动代码时,有加载驱动时加载配置文件的代码,代码如下: thread = kthread_run(guitar_update_proc, (void*)ts, "guitar_update"); if (IS_ERR(thread)) { dev_err(&client->dev, " failed to crea原创 2012-12-22 12:35:56 · 890 阅读 · 0 评论 -
INIT_WORK等有关工作队列的理解
此文是从《我是USB》中节选出来的!INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看见一些同志抱怨说最近某个模块编译失败了,转载 2013-01-15 22:06:04 · 1524 阅读 · 1 评论 -
usb设备驱动程序范例usb-skeleton.c
初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。事实上,Linux的设备驱动都遵循一个惯例--表征驱动程序(用driver更贴切一些,转载 2013-01-16 17:36:01 · 1014 阅读 · 0 评论 -
技术与业务
前两天在想想不同的接口之间有什么区别,突然联想到,在IT行业中常见的语言之争,经常是java,c#,c++争得不可开交,偶尔c,python也会去凑热闹,哲学上有句话叫做“存在即合理”,一种语言既然存在,必然会有他的用途,没必要去比较。其实,重要的不是那种语言,而是业务上的一些东西,例如一些网站,既可以用c++,也可以用java,用什么不重要,关键在于你网站的内容是否有新意,能否吸原创 2013-02-19 11:32:16 · 577 阅读 · 0 评论 -
转义字符
在SHELL脚本中,转义字符为/,正斜杠在C语言中, 转义字符为\,反斜杠正斜杠 / slash表示除法,分隔。在windows系统中通常用来分隔命令行参数,/ 表示选项等。不能作为文件名isiss/。正斜杠"/"在某些文档里面表示“或”,如通讯方式GSM/GPRS/3G,表示采用其中一种通讯方式。反斜杠 \ backslash在windows系统中用来表示原创 2013-02-21 12:15:19 · 689 阅读 · 0 评论 -
EXPORT_SYMBOL的用法
C 程序员都知道,要使用某个外部的函数,应当#include某个头文件,这个头文件包含了那个函数的原型(prototype)。内核的头文件在 include/下,其中include/asm是个符号链接,指向你所用内核的具体的体系结构目录,比方说我的系统是i386的,那么include /asm就指向include/asm-i386 。 内核编程中我们不能链接libc库,不能使用libc库中转载 2012-12-27 11:40:06 · 1491 阅读 · 0 评论 -
ctags和Tlist
习惯了在windows下用sourceInsight编程的人,当然也希望在linux的字符终端下也能有一样酷的软件,这里要介绍给大家的是如题所示的三款软件:vim , ctag 和Taglist 。 很多时候我们需要在多个源程序之间实现函数、宏定义、外部变量等的跳转查询,甚至有时候需要到内核或库源代码里窥视他们真面目,我们也需要有列出程序内部所使用的各个函数、变量、宏等等信息的工具转载 2012-12-27 17:02:29 · 877 阅读 · 0 评论 -
什么是经验?
有个客户做平板,要换掉其中的camera的ic,新换的那款ic型号是已经被原厂调好了的,所以只需要更改配置文件就可以了,驱动不需要修改。但是换了以后,发现效果很差,左思右想不得其解,遂准备打电话给camera原厂来看看是否驱动没调优。此时,一个经验丰富的硬件工程师路过,拿过我手中的平板一看,问我camera上面是否有一层薄膜没有去掉,经检查,正是此原因,这就是经验。原创 2012-11-23 16:20:02 · 765 阅读 · 0 评论 -
IS_ERR
原文地址:http://blog.youkuaiyun.com/xxu0123456789/article/details/6339625像struct class *cls = class_create();这种语句,其中返回的指针值并不行kmalloc一样这么简单,只判断是否为NULL就可以了,内核是返回其错误值。那么我怎么来判断它呢,总不能用if()来将每个错误例出来吧,这里我们的IS_ERR()宏转载 2012-12-22 11:08:24 · 544 阅读 · 0 评论 -
字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
原文地址:http://blog.youkuaiyun.com/tommy_wxie/article/details/71954711. 字符设备结构体 内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static struct char_device_st转载 2012-12-24 09:56:25 · 683 阅读 · 0 评论 -
device_create ()详解
在驱动程序中初始化入口函数中,向内核注册一个设备后,往往要注册一个类例如static int __init mydriver_init(void) //驱动程序的初始化{ …… MYDRIVER_Major = register_chrdev(0, DEVICE_NAME, &mydriver_fops); //向内核注册一个设备,返回值为注册的主设备号转载 2012-12-24 09:54:10 · 984 阅读 · 0 评论 -
会计记录accton
sudo apt-get install acct安装acct包,然后才能使用accton命令原创 2012-12-12 14:45:24 · 717 阅读 · 0 评论 -
\r只回车不换行
#include#includeint main(void){ int i; for(i=0;i { printf("\rComplete Percent :%d%%",i); fflush(stdout); sleep(1); } printf("\n");}原创 2012-12-13 09:21:46 · 1493 阅读 · 0 评论 -
V4L2
作者:刘洪涛,华清远见嵌入式学院讲师。转自http://www.embedu.org/Column/Column320.htm编写基于V4L2视频驱动主要涉及到以下几个知识点:● 摄像头方面的知识 要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。● Camera解码器、控制器转载 2012-12-27 14:12:49 · 4612 阅读 · 2 评论 -
*(p++)与*p++
综上所述:*p++是先取出*p的值,然后让p++(*p)++是先取出*p的值,让这个值++*(p++)是先取出*p的值,让p++所以,*p++等价于*(p++)而且printf的运行顺序是从右向左运行。而且右++是在整个运算表达式运算完才进行,而且右++的执行顺序是从左到右进行。而左++遇到变量就会立即增加变量的值原创 2013-02-22 10:32:11 · 1483 阅读 · 0 评论 -
"undefined reference to" 问题解决方法
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(转载 2013-03-08 11:36:26 · 1003 阅读 · 0 评论 -
ioremap,request_mem_region
文章内容来自:http://blog.youkuaiyun.com/fudan_abc/archive/2007/10/04/1811451.aspx 以我们家 Intel 为代表的 i386 系列处理器中 , 内存和外部 IO 是独立编址独立寻址的 , 于是有一个地址空间叫做内存空间 , 另有一个地址空间叫做 I/O 空间 . 也就是说 , 从处理器的角度来说 ,i386 提供了一些单独的指转载 2013-04-22 17:52:08 · 1118 阅读 · 0 评论 -
MTK项目配置文件ProjectConfig.mk解析
在MTK平台下工作,很多东西都只是需要配置一下就可以了,因为MTK的东西太完善了,各种工具,各种配置文件都有,所以很多时候,我们需要了解在这些工具的背后,到底修改的是什么,以及他是如何实现的。 每个在MTK平台下工作的人,都应该知道有个针对项目的配置文件,叫做ProjectConfig.mk,目录是mediatek/config/xxx/ProjectConfig.mk,其中的x原创 2013-04-12 14:19:43 · 10122 阅读 · 1 评论 -
调试gpio模拟i2c的TP中碰到的问题
最近有个板子,TP使用的是不是i2c总线传输,而是利用的gpio模拟的i2c通信,导致整个移植过程稍显负责,现在记录下碰到过的问题。问题1.GPIO模拟i2c时,那个adapt一定要重新设置,因为在传输的过程中,主要还是使用adapter的具体传输方法,所以,不能使用在i2c注册时使用的adapter问题2.移植GPIO成功了以后,在读取TP的寄存器参数时,读取的数据不一致因为要读原创 2013-04-13 12:07:20 · 2860 阅读 · 0 评论 -
从RF、BB、AP、外设4个角度看手机的硬件性能http://bbs.weiphone.com/read-htm-tid-2396773.html
原文地址:http://bbs.weiphone.com/read-htm-tid-2396773.html其实手机的架构都是相同的:RF、BB、AP三个部分,再加上外设,也就4各部分就可以把手机说清楚。 RF射频部分的功能主要是射频接收和发射,这部分性能好坏的区别主要是:手机信号的好坏、手机会不会掉线、手机的辐射这些。一个好的射频模块是可以根据信号的强弱调制辐射水平的,信号转载 2013-08-03 09:57:18 · 2208 阅读 · 0 评论 -
MT8377 MT8389 MT6589 MT6577解析
MT8377的主频比MT6577要高,两者架构同为ARM Cortex-A9,支撑方面为40nm,二级缓存达到了1MB,二级缓存越大,处理能力会越强,二级缓存是CPU与内存之间存取的高速通道,其可以加速数据存储速度,节省CPU直接读取内存的的时间。这就意味这二级缓存对CPU性能影响之大,同样在主频频率相同底下,二级缓存容量越大,CPU处理能力便会越强。不同架构的CPU在配置二级缓存的的大小值不一样转载 2013-08-03 10:24:10 · 2881 阅读 · 0 评论 -
EMMC相关
低端智能手机:eMMC的新机遇 自2012年下半年起,低端智能手机开始大量采用eMMC/eMCP存储器,这为存储控制器厂商带来了新的机会,而设计服务公司也可从中分一杯羹。 在智能手机领域,eMMC和eMCP将逐渐取代MCP存储器。估计目前只有65%的智能手机使用eMMC嵌入式存储器,但随着低端智能手机开始使用eMMC,2013年底它的市场份额将上转载 2013-10-08 11:23:23 · 2428 阅读 · 0 评论 -
学习python爬虫
python爬虫总结原文地址http://www.pythonclub.org/python-network-application/observer-spider学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本,写过简单的验证码识别的脚本,本来想写google music转载 2013-09-23 19:56:54 · 1170 阅读 · 0 评论 -
vi/vim显示中文字符并且去掉^M的方法
原文地址:http://www.cnblogs.com/fangbo/archive/2009/12/24/1631196.htmlvim上经常会碰到中文显示不正常的现象,也就是传说中的乱码。搜索了一下,在 http://www.chinalinuxpub.com/bbs/showthread.php?t=45475找到了一个解决办法。但是gbk编码的正常了转载 2013-04-12 10:13:17 · 1310 阅读 · 0 评论 -
git基本使用
原文地址:http://blog.chinaunix.net/uid-24203478-id-3271735.htmlgit pull从服务器的仓库中获取代码,和本地代码合并。(与服务器交互,从服务器上下载最新代码,等同于: Git fetch + Git merge) 从其它的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:“git pull origin master转载 2013-04-10 15:08:57 · 888 阅读 · 0 评论 -
使用expect脚本自动下载和同步代码
刚换了工作,新公司采用git和repo来共同管理代码,不同的cpu型号对应在服务器上有不同的sdk,一来就需要下载这些东西,repo相当于是对git指令的打包集合指令,本来下载一个sdk只需要三条指令,但是需要输入一些东西,我突然想到,为何不是用shell脚本将这三条指令打包,然后每次只需要执行一个脚本就可以去实现下载和同步的功能了。很快我写了个shell脚本,但是发现在指令执行的过程中,需要输入原创 2013-04-02 20:26:56 · 1207 阅读 · 0 评论 -
late_initcall和module_init
在init.h 中有如下定义 #define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)转载 2013-02-25 15:26:33 · 1086 阅读 · 0 评论 -
sysfs详解
最近想把驱动模型彻底整明白,翻译了几篇文档,这篇sysfs是Patrick Mochel 2003年写的,现在代码有些变化,不过可以让我们基本了解sysfs这个东西。发现个有趣的事情,一般看kernel的东西都会在文件头部看到作者的信息,然后google.com搜这些大侠的名字和相关模块都能找到相关的知识~~sysfs说穿了是kernel和userspace打交道的一个借口,kernel的转载 2013-02-26 15:06:10 · 1959 阅读 · 0 评论 -
linux静态链接库与动态链接库的区别及动态库的创建(转)
一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式转载 2013-02-28 16:32:26 · 605 阅读 · 0 评论 -
OTG和普通usb连接线
OTG线实际是五根的,usb连接线是四根的,多出来的一根线是接地的。如果在支持OTG功能的机器上,插上usb线,它会去检测这根信号线,从而判断,机器处于主机还是从机的位置。所以接不同的线,主机状态不一样,很容易引起很多问题。原创 2013-03-14 16:33:05 · 1556 阅读 · 0 评论 -
expect脚本自动登录
使用VPN,每次都要在Terminal上重复输入命令:ssh -D port user@host出来密码提示符后,把复杂的密码拷贝下来,然后粘贴到Terminal,敲回车... 终于忍受不了这样的重复了,于是用Shell写一个可以自动登录的脚本:Shell script代码 #!/usr/bin/expect -f set转载 2013-04-02 13:32:30 · 1100 阅读 · 0 评论 -
I2C总线使用方法继续研究
转载地址:http://www.cnitblog.com/luofuchong/archive/2009/10/27/62162.html记得以前曾研究过Linux内核下i2c子系统,了解了i2c总线上,适配器、设备驱动的注册过程与使用方法,详细请查看: 1、i2c总线上,适配器、设备驱动注册:http://www.cnitblog.com/luofuchong/archive/转载 2013-04-03 09:54:55 · 985 阅读 · 0 评论 -
一些有用的小知识点
原文地址:http://blog.youkuaiyun.com/lizhongkan/article/details/60039681. 在shell下,打开当前目录的文件管理器的方法 nautilus是ubuntu的文件管理器程序,打开当前目录的命令就是:nautilus . 故只需为其设定一个别名即可: 1.1 新建(或打开)~/.bash_alia转载 2013-04-03 16:35:08 · 861 阅读 · 0 评论 -
编程小技巧
编程小技巧 在编程工程中,积累的一些小技巧:1.使用pow(x,y)函数,编译是需要添加-lm选项,这是要指定链接原创 2013-03-22 10:37:57 · 884 阅读 · 0 评论 -
undefined reference to `pow'
写了段小程序,用到了pow函数,也加了头文件了结果编译时出现了问题,然后我提示:undefined reference to `pow' 然后我就测试了一下,发现,如果pow(a,b),如果a,b都是常量时,是不会出现提示的,但是,如果a,b中有任何一个是变量,那么编译时都会出现提示。 现象就是这么简单,解决方式就是在编译的时候加上-lm,其实man手册上写的很清原创 2012-11-22 17:37:58 · 7455 阅读 · 2 评论 -
系统调用read,write和标准库函数IO
在系统调用的函数中有STDIN_FILENO,和STDOUT_FILENO,STDERR_FILENO,分别对应标准输入(一般使键盘),标准输出(一般使显示器),标准错误,(他们都是非负整数,属于文件描述符)一般在老程序中也将他们分别用0,1,2代替,但建议还是使用他们的别名。而在标准IO函数中还有stdin,stdout,stderr等是FILE *类型,使属于文件指针,属于标准I/O,高级的输转载 2012-12-03 18:11:02 · 2436 阅读 · 2 评论