自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lwj103862095的专栏

大家好,我叫lwj,本博客用于记录学习生活的点点滴滴,希望一些技术性博客论文能够对一些新手起到助跑作用。我的宗旨是:新手交流,能者指教~~

  • 博客(141)
  • 资源 (4)
  • 收藏
  • 关注

原创 ARM Linux虚拟地址转换为内存物理地址

项目中经常需要把内存数据dump出来看看是否与自己设想的一样,dump之前我们需要把内核的虚拟地址先转换为物理地址才能借助工具dump出来。废话不多说,直接说正题。1. 内核里的地址是从3G开始算的,即起始地址为:0xc00000002. ARM小机端的内存起始地址并不是0,而是0x40000000也就是说虚拟地址与物理内存起始地址两者的差为:0x80000000那如果要将内核的虚拟地址转换为物理

2017-04-07 14:45:57 16721

原创 could not read symbols: File format not recognized

arm-linux-gnueabi-readelf工具解决问题编译一个32位平台的内核时,出现如下错误提示:libschw.a: could not read symbols: File format not recognized于是进入相应的目录发现,libschw.a这个文件是存在的,但是为啥编译不过呢,同样的编译在另外一个64位平台却没有这个报错。思路:是否与32位64位平台有关?使用rea

2016-12-03 13:29:17 24944

原创 shell如何在指定文件的指定位置后面添加内容

最近工作中遇到一个问题,想在某个文件的指定位置后面添加一个标志位,要求在shell脚本里实现。问题说明:想在sys_config.fex文本的某个字符串后面添加一个flag例如:sys_config.fex里有这么一段[nand_para]nand_use = 1要求在[nand_para]后面添加一个flag = 1,最后变成(不影响其他内容):[nand_para]flag = 1nand_u

2015-04-02 16:23:05 60519 1

原创 shell 如何实现i++操作以及字符串截取操作

这几天有个bug缠绕了我半天,于是就有了本文章。触摸屏因为加了个笔记本键盘后不能用了,摘掉笔记本键盘后,触摸屏又可以用了,真是见鬼了。稍微研究一看,原来是加了笔记本键盘后导致TP驱动的设备节点改变了,比如说,以前是event4,加了笔记本键盘后event6,导致应用程序使用的设备节点跟TP驱动不匹配。于是,我就纳闷了,以前的方法是在编译的时候写死了,比如配置为4了,运行的时候就是设置为4,不变了,

2015-02-13 15:16:56 49877 3

原创 如何判断指定的文件是否存在

问:如何在shell里面判断指定的文件是否存在,如果存在则做一些你想做的事情,如果不存在则做另外一些你想做的事情。假设你想判断tom是否在/sys/class/input/event0/device/name/sys/class/input/event1/device/name/sys/class/input/event2/device/name/sys/class/input/event3/de

2014-12-10 16:37:51 14995

原创 如何判断某个设备文件是否存在

问:如何在shell里面实现,判断设备文件是否存在,如果不存在则重新判断,直到它存在,如果存在了则往下跑?假设要判断的设备文件是一个字符设备,例如:/dev/input/event4while true; do if [ ! -c /dev/input/event4 ]; then echo "Can not find /dev/input/event4" sleep 1 conti

2014-12-10 16:22:36 24554

原创 iozone工具的使用

一、使用iozone常用的几个参数.-a 全面测试,比如块大小它会自动加-i N 用来选择测试项, 比如Read/Write/Random 比较常用的是0 1 2,可以指定成-i 0 -i 1 -i2.这些别的详细内容请查man  0=write/rewrite  1=read/re-read  2=random-read/write  3=Read-backwards  4=Re-write-r

2014-12-01 19:19:05 20023

原创 使用objdump调试驱动

最近在调式一个判断nand是好的还是坏的驱动+测试程序,于是有了以下的调式过程,似乎自己也学到了一点知识,所以记录一下。这篇文章主要是讲述调式驱动的一个方法而已。先来看看测试程序#include #include #include "dragonboard_inc.h"#include #include #include #include #include #include #i

2014-10-23 11:18:01 17256

原创 Linux高端内存的由来

抱着拿来主义,自己挑选了部分,以下内容摘自网络。Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。 Linux内核高端内存的由来 当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0xc0000003对应的物

2014-08-20 14:23:11 18654 1

原创 read系统调用深度剖析

本文转自:http://blog.csdn.net/unbutun/article/details/6101354#ibm-pconRead 系统调用在用户空间中的处理过程Linux 系统调用(SCI,system call interface)的实现机制实际上是一个多路汇聚以及分解的过程,该汇聚点就是 0x80 中断这个入口点(X86 系统结构)。也就是说,所有系统调用都从用户空间中汇聚到 0x

2014-08-12 17:10:15 31303

原创 adb push命令的使用

最近刚接触一种工具(命令),什么命令呢?就是adb命令,对这个命令纯属一个小白鼠,什么都不懂,所以只能adb --help 一下参数,然后就尝试着使用。 今天遇到一个问题,需要将某个文件拷到小机上面,小机可以理解为手机或者平板电脑这种类似的机子,机子是跑安卓的。顿时就不知道怎么拷贝了。于是搜索了一番,从此就与adb打上交道了。 首先使用USB连接电脑与小机,然后安装adb相应的驱动,这是第一步,也

2014-08-07 17:03:02 217751 5

原创 SD3.0协议解读四

SD卡数据传输模式的流程分析!!!

2014-08-07 10:50:13 25623

原创 SD3.0协议解读三

SD卡功能描述 所有主机和SD卡间的通信都是由主机控制的,这和USB是一致的,例如:U盘并没有主动通知USB控制器的能力,USB鼠标也没有主动通知USB控制器的能力,当然,SD卡也是没有主动通知SD控制器的能力的。 主机发送的命令有两种,一种是一对多,另一种自然是一对一了,他们分别是:1.广播命令:广播命令发送给所有挂在SD总线上的SD卡,有一些广播命令需要SD卡作出响应。2.寻址(点对点)命令:

2014-08-06 15:11:53 53554 3

原创 SD3.0协议解读二

相信大家都学过I2C总线,

2014-08-06 13:23:41 33501 2

原创 SD3.0协议解读一

前言: 老衲我近期研究的是SD/MMC卡驱动,研究过的SD/MMC驱动的贫僧们都应该知道SD/MMC协议是必不可少的一部分,除非你不想研究透SD/MMC驱动,那你大可只研究driver/mmc/host目录下的文件即可。说到SD/MMC协议,网上一搜,SD3.0的协议只有英文版的资料,要想真正理解协议,英文水平差的贫僧就可吃力了,老衲英文水平实在是一般,但是网上对SD3.0协议的解读相关的中文资料

2014-08-06 10:14:33 55940 4

原创 SD/MMC的Commands和Responses的总结

SD总线通信是基于指令和数据比特流,起始位开始和停止位结束。SD总线通信有三个元素:1.Command:由host发送到卡设备,使用CMD线发送;2.Response:从card端发送到host端,作为对前一个CMD的相应,通过CMD线发送;3.Data:即能从host传输到card,也能从card传输到host,通过data线传输。一、Commands 以下是四种用于控制卡设备的指令类型,每个c

2014-08-01 17:35:02 23259

原创 SD/MMC相关寄存器的介绍

熟悉SD/MMC的相关寄存器对协议的理解有一定的辅助作用,

2014-08-01 15:15:54 39906 1

原创 SD/MMC/SDIO基础概念的介绍

以下内容大多摘自网络,自己看了觉的不错,自己整理了一番。

2014-08-01 14:01:30 62433

原创 SD与MMC的区别

经常看到SD/MMC这样的写法,在这里稍微总结一下SD卡和MMC卡的异同点吧。 首先,两者在外型的规格上是几乎一致的。而且两都的接口是兼容的。也就是说,两者可以用同一个卡座来进行读取。而且,两者在时序上也是一致的,读写命令控制也完全一样,这就是为什么经常把两者混在一起写的原因。不过,虽说外型几乎一致,但还是有点差异的。MMC比SD卡要薄一些,并且,长度只有SD卡的一半。下面,Hanny从主机驱动方

2014-08-01 13:05:45 33776

原创 浅谈IO调度算法

IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法。存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间。然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平衡这两者,IO调度器提供了多种调度算法来适应不同的IO请求场景。其中,对数据库这种随机读写的场景最有利的算法是DEANLINE。接着我们按照从简单到复杂的顺序,迅速扫一下Linux 2.6内核提供的几

2014-07-29 16:24:30 28029

原创 linux IO子系统和文件系统读写流程分析

以下内容的分析是基于2.6.32及其后的内核.我们在linux上总是要保存数据,数据要么保存在文件系统里(如ext3),要么就保存在裸设备里。我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据提交给我们,而我们则无需和块设备打交道。从下图,我们可以清除的看到:I/O子系统是个层次很深的系统,数据请求从用户空间最终到达磁盘,经过了复杂的数据流动。对设驱开发人员或与此相关

2014-07-29 14:36:43 7291

原创 pdflush进程详解

大家知道,在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到磁盘上,在下面几种情况下,系统会唤醒pdflush回写脏页:1 、定时方式:     定时机制定时唤醒pdflush内核线程,周期为/proc/sys/vm/dirty_writeback_centisecs ,单位是(1/100

2014-07-29 14:14:19 7600

转载 块设备驱动程序<二>

一、块设备驱动之概念和框架1.基本概念块设备(blockdevice)--- 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。字符设备(Character device)---是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。他不具备缓冲区,所以对这

2014-07-24 17:05:27 2522

转载 块设备驱动程序<一>

一、块设备概述linux支持的两种重要的设备类型分别是字符设备和块设备,块设备可以随机地以固定大小的块传送数据。与字符设备相比,块设备有以下几个特殊之处:块设备可以从数据的任何位置进行访问块数据总是以固定长度进行传输,即便请求的这是一个字节对块设备的访问有大量的缓存。当进行读时,如果已经缓存了,就直接使用缓存中的数据,而不再读设备,对于写也通过缓存来进行延迟处理。在块系统中,数据块指的是固定大小的

2014-07-23 19:11:36 2870

原创 Linux MTD系统剖析

MTD,Memory Technology Device即内存技术设备,在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。如上图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。Flash硬件驱动层:Flash硬件驱动层负责对Flash硬件

2014-03-19 20:37:58 40961 9

原创 linux 输入子系统之电阻式触摸屏驱动

一、输入子系统情景回忆ING......在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成。其中设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,再通过核心层提交给事件处理层;而核心层对下提供了设备驱动层的编程接口,对上又提供了事件处理层的编程接口;而事件

2014-01-18 21:29:41 5877

原创 linux 混杂设备驱动之adc驱动

linux2.6.30.4中,系统已经自带有了ADC通用驱动文件---arch/arm/plat-s3c24xx/adc.c,它是以平台驱动设备模型的架构来编写的,里面是一些比较通用稳定的代码,但是linux2.6.30.4版本的ADC通用驱动文件并不完善,居然没有读函数。后来去看了linux3.8版本的ADC通用文件----arch/arm/plat-samsung/adc.c才是比较完善的。

2014-01-18 16:16:54 14559

原创 linux lcd设备驱动剖析四

在《linux lcd设备驱动剖析二》文章中,我们详细分析了s3c24xxfb_probe函数。linux lcd设备驱动剖析二的文章链接:http://blog.csdn.net/lwj103862095/article/details/18189765s3c2410fb.c中s3c24xxfb_probe是非常重要的函数之一,但仅仅分析probe函数,貌似感觉有点不够过瘾,貌似缺少分析

2014-01-17 21:24:02 7649 3

原创 linux lcd设备驱动剖析三

上一节文章中详细地剖析了probe函数,但是从始至终都没有看到打开读写文件接口的操作函数,只看到了下面这个操作结构体static struct fb_ops s3c2410fb_ops = { .owner = THIS_MODULE, .fb_check_var = s3c2410fb_check_var, .fb_set_par = s3c2410fb_set_par, .f

2014-01-12 21:44:49 4212

原创 linux lcd设备驱动剖析二

上一节中,分析了s3c2410fb,c的入口出口函数,以及一些重要结构体的分析,初步知道了这是一个平台驱动的架构。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/18188259上一节讲到probe函数就没继续往下深究了,这一节里,我们来详细分析s3c24xxfb_probe函数,整体分析如下:static int _

2014-01-12 21:18:04 5279

原创 linux lcd设备驱动剖析一

s3c2440 lcd驱动源码文件是:drivers/video/s3c2410fb.c看驱动源码首先当然是先看入口函数,这里是s3c2410fb_init函数int __init s3c2410fb_init(void){ /* 注册一个s3c2410fb_driver平台驱动 */ int ret = platform_driver_register(&s3c2410fb_dri

2014-01-12 20:43:40 5253 2

原创 linux平台总线驱动设备模型之点亮LED

上一节中,我们引入Linux input子系统的分离分层概念,发现这样的架构特别容易移植,因为有一部分是已经相对稳定,它已经把公共的部分抽象出来,不用驱动工程师再去修改,只需要添加符合输入设备的设备驱动即可。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17734625在这一节里,我们继续引入一种分离分层的概念,名叫 b

2014-01-07 21:33:20 5759 1

原创 Linux平台总线驱动设备模型

platform总线是一种虚拟的总线,相应的设备成为platform_device,而驱动则为platform_driver。Linux 2.6的设备驱动模型中,把I2C、RTC、LCD等都归纳为platform_device。

2014-01-07 21:09:07 13319

原创 linux输入子系统之按键驱动

上一节中,我们讲解了Linux  input子系统的框架,到内核源码里详细分析了输入子系统的分离分层的框架等。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17733993这一节,我们来以输入子系统的框架来写一个按键驱动。问:怎么写符合输入子系统框架的驱动程序?答:1. 分配一个input_dev结构体2

2014-01-01 15:51:52 20918

原创 linux输入子系统概念介绍

在此文章之前,我们讲解的都是简单的字符驱动,涉及的内容有字符驱动的框架、自动创建设备节点、linux中断、poll机制、异步通知、同步互斥、非阻塞、定时器去抖动。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17589311在这一节里,我们要引入linux的分离分层的概念,linux输入子系统是一个很好的代表,在讲解如何

2014-01-01 15:08:47 8710 6

原创 linux字符驱动之定时器去抖动按键驱动

上一节里,实现同一时刻只能有一个进程使用同一个设备,例如:只能有一个进程,在同一时刻里使用/dev/buttons这个设备。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17563953相信大家在写单片机的按键程序时,也必将会涉及一点,就去按键去抖动。按键去抖动的方法无非有二种,一种是硬件电路去抖动,这种在要求不是特别高

2013-12-26 19:35:07 7013

原创 linux字符驱动之同步互斥按键驱动

上一节里,我们将在上一节的基础上修改驱动,将其修改为有异步通知功能的按键驱动,目标是,按下按键时,驱动主动去通知应用程序。是不是感觉驱动已经比较完善了,好像已经是完美无缺了?是不是这样呢?好像不是呢,有没有这么一种情况,多个进程想同时使用驱动的设备节点?在多线的环境下,分分钟可能会发生这种情况。上一节文章链接:http://blog.csdn.net/lwj103862095/article/

2013-12-25 21:48:58 3236 1

原创 linux字符驱动之异步通知按键驱动

在上一节里,我们在中断的基础上添加poll机制来实现有数据的时候就去读,没数据的时候,自己规定一个时间,如果还没有数据,就表示超时时间。在此以前,我们都是让应用程序主动去读,那有没有一种情况,当驱动程序有数据时,主动去告诉应用程序,告诉它,有数据了,你赶紧来读吧。答案当然是有的,这种情况在linux里的专业术语就叫异步通知。上一节文章链接:http://blog.csdn.net/lwj103

2013-12-24 22:23:58 6221 1

原创 linux字符驱动之poll机制按键驱动

在上一节中,我们讲解了如何自动创建设备节点,实现一个中断方式的按键驱动。虽然中断式的驱动,效率是蛮高的,但是大家有没有发现,应用程序的死循环里的读函数是一直在读的;在实际的应用场所里,有没有那么一种情况,偶尔有数据、偶尔没有数据,答案当然是有的。我们理想当然的就会想到,当有数据的时候,我们才去读它,没数据的时候我们读它干啥?岂不浪费劳动力?上一节文章链接:http://blog.csdn.ne

2013-12-24 20:58:42 11552 2

原创 linux字符驱动之中断按键

在上一节中,我们讲解了如何自动创建设备节点,实现一个查询方式的按键驱动。测试的时候,大家都看到了,使用查询式的方法,占用CPU的利用率高达99%,那么有没有好的办法来取代这惨不忍睹的方法呢?答案当然是有的。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17484041这一节里,我们使用中断的方法来实现按键驱动。

2013-12-23 21:53:46 11496 1

libartsc.so.0

libartsc.so.0是一个共享库,用来解决mplayer: error while loading shared libraries: libartsc.so.0: cannot open shared object file: No such file or directory

2013-12-18

vsftpd-2.0.5-10.el5.i386.rpm

这个压缩工具包是红帽企版5的FTP安装工具,使用它来安装linux下FTP工具,安装简单方面。

2013-12-18

CuteFTP 8.3.1汉化破解版.rar

CuteFTP 8.3.1汉化破解版,是一款无需安装,直接使用,内有破解文件,无需序列号,好用无毒免费的绿色破解版FTP软件。

2013-12-18

TQ2440裸奔三部曲

此资料为天嵌公司提供的裸奔三部曲,希望大家能够通过此文档,能够快速熟悉S3C2440芯片,为以后学习驱动打下良好基础。

2012-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除