自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

做一个有技术追求的人

但求好事 莫问前程!

  • 博客(223)
  • 资源 (3)
  • 收藏
  • 关注

转载 PHY管理接口MDIO时序

对吉比特以太网而言,串行通信总线称为管理数据输入输出(MDIO)。该总线由IEEE通过以太网标准IEEE802.3的若干条款加以定义。MDIO是一种简单的双线串行接口,将管理器件(如:MAC控制器,微处理器)与具备管理功能的收发器(如多端口吉比特以太网收发器或10Gbe XAUI收发器)相连接,从而控制收发器并从收发器收集状态信息。可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、T

2013-12-26 14:52:00 8565

转载 以太网自动协商原理

自协商基本原理   自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。  自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议

2013-12-25 16:22:07 29238 2

转载 mips下非对齐访问问题分析

1. 问题RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐。比 如在 MIPS 平台上,lh 读取一个半字时,存储器的地址必须是 2 的整数倍; lw 读取一个字时,存储器的地址必须是 4的整数倍; sd 写入一个双字时,存储器的地址必须是 8 的整数倍。倘若访存时,目标地址不对齐,则会引起异常,典型的是系统提示“总线错误

2013-12-08 18:59:45 6916

转载 ubuntu下获取对应内核源码的方法

输入:apt-cache search linux-source //查看内核版本输入:apt-get install linux-source-3.0.0 //获取对应版本的内核,默认安装在/usr/src目录下见:  ubuntu下编译本机模块是否需要下载内核源码呢?答案是可以的。dmesg | tail -1 命令用于查看载入内核后打印的数

2013-12-03 23:03:06 2586

转载 Linux 关于动态链接库以及静态链接库的一些概念

库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 ln -s libhello.so.1.0 libhello.so.1 ln

2013-12-03 16:52:16 1415

转载 BMP、PCX、PNG、JPEG、GIF图形格式区别

BMP:Windows 位图 Windows 位图可以用任何颜色深度(从黑白到 24 位颜色)存储单个光栅图像。Windows 位图文件格式与其他 Microsoft Windows 程序兼容。它不支持文件压缩,也不适用于 Web 页。从总体上看,Windows 位图文件格式的缺点超过了它的优点。为了保证照片图像的质量,请使用 PNG 文件、JPEG 文件或 TIFF 文件。BMP 文件适

2013-12-01 13:56:11 4569

转载 sja1000 can控制器波特率计算方法

CAN是controller Area Network的简称,中文为控制器局域网络。主要应用于汽车领域。在平时的硬件的设计中主要有两个控制器来实现扩展CAN设备,分别是SJA1000和MCP2515。其中SJA1000被设计替代原来的PCA82C200。SJA1000SJA1000为并行输入的CAN控制器。SJA1000有两种独立的工作模式:BasicCAN Mode(PCA8

2013-11-19 09:28:05 8982

原创 linux内核calibrate_delay函数实现分析

公司使用的死mips处理器,每秒钟jiffs是250个,内核变量HZ值就是250,由此我引发一个疑问,一个jiffs时钟中断耗时4ms,没法做到毫秒微妙甚至纳秒的精度,那么内核延时函数mdelay udelay ndelya是如何实现的呢,于是研究了一下,就找到了linux内核中一个有趣的函数calibrate_delay()。 calibrate_delay()函数可以计算出cpu在一秒钟内

2013-11-17 11:04:33 6650

原创 浮点数存储格式

对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为双精度,80-bit为扩展精度浮点数),1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数值用s表示;2、第30~23 bit为幂数,其读数值用e表示;3、第22~0 bit共23 bit作为系数,视为二进制纯小数,假定该小数的十进制值为x;十进制转浮点数的计算方法:则按照规定,十进制的值用浮点数表示为:如果十

2013-11-12 18:52:02 1275

原创 linux内核usb触摸屏驱动bug调试- selected device is not a touchscreen I understand

近期给客户调试一块数控板,今天客户带过来一个屏,并且有一个usb的触摸屏芯片接在屏上。屏很快就弄好正常显示。   触摸屏在内核下找到usb 触摸屏驱动,内核启动后这个usb转的触摸屏也正常找到,注册为event接口事件event0, cat /dev/event0,触摸屏幕有乱码输出,说明usb触摸屏驱动产生中断并且将采集数据上报input子系统了。   然后用我移植的tslib中有几个校

2013-10-23 23:19:30 9204 1

原创 内存颗粒的逻辑bank理解

在 芯片的内部,内存的数据是以位(bit)为单位写入一张大的矩阵中,每个单元我们称为CELL,只要指定一个行(Row),再指定一个列 (Column),就可以准确地定位到某个CELL,这就是内存芯片寻址的基本原理。这个阵列我们就称为内存芯片的BANK,也称之为逻辑 BANK(Logical BANK)。由于工艺上的原因,这个阵列不可能做得太大,所以一般内存芯片中都是将内存容量分成几个阵列来制造,也

2013-09-26 16:56:39 8917 1

转载 linux下sysfs设备模型

设备模型(一)一、概述从2.6内核引入了sysfs文件系统,与proc, devfs, devpty同类别,属于虚拟的文件系统。目的是展示设备驱动模型中各组件的层次关系,第一层目录:block, device, bus, drivers, class, power, firmware.block 块设备;devices 系统所有的设备并根据设备挂接的总线类型组织成层

2013-09-25 10:27:07 1899

转载 关于IIC和SPI总线

IICvs SPI         现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。

2013-09-22 23:04:52 39428 2

转载 linux内核sysfs详解

"sysfs is a ram-based filesystem initially based on ramfs. It provides a meansto export kernel data structures, their attributes, and the linkages between them touserspace.” --- documentation/file

2013-09-17 18:35:14 33608 5

转载 spi协议及工作原理分析

说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html一、概述.     SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处

2013-09-15 17:11:07 152294 12

转载 串口通信协议

串口通讯—通信协议所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步

2013-09-09 15:55:24 26005 1

转载 NAPI处理方式分析

NAPI 的核心在于:在一个繁忙网络,每次有网络数据包到达时,不需要都引发中断,因为高频率的中断可能会影响系统的整体效率,在高流量下,网卡产生的中断可能达到每秒几千次,而如果每次中断都需要系统来处理,是一个很大的压力,而NAPI 使用轮询时是禁止了网卡的接收中断的,这样会减小系统处理中断的压力,NAPI 是Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而

2013-09-08 18:21:54 1577

转载 linux网卡驱动的NAPI技术分析

NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网

2013-08-27 17:50:58 3401 1

转载 计算机网络中二层 三层交换机以及路由器区别

二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地 址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地 址表中。具体的工作流程如下: (1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道 源MAC地址的机器是连在哪个端口上的; (2) 再去读取包头中的目的MAC地址,并在地址表

2013-08-25 23:14:49 5272

转载 linux power managment 详解

一.前言在这个对节能要求越来越严格的年代,对设备的电源管理就显的很重要的了,尤其对于可移动设备,在电源有限的情况下,续航能力就显的很重要的。在本文中将介绍linux是如何对设备电源进行管理的。二.睡眠Linux的电源管理的主要几个文件集中在/kernel/power/main.c和/driver/base/power/main.c中。主要以platform设备来看linux的睡眠和唤醒

2013-08-23 16:08:17 1269

转载 android源码下载方法

一、概述众所周知,Android移动操作系统是Google花费了很大的财力、物力及人力的前提下,推广到世界各个角落,以开放源代码的方式(当然也不是完全开放所有),使其在世界范围内迅速漫延开来,到目前虽说只有三四年的时间 ,火热程度,也不用我细说了,看看业界新闻就明白了。这里我们主要讨论Android系统源代码的下载,这里我们先了解两个工具:1、GitGit是面向Linux内核管理的一个

2013-08-22 19:38:23 943

转载 察看linux内核命令源码

用linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下:以搜索ls命令源码为例,先搜索命令所在包,命令如下:lpj@lpj-linux:~$ which ls/bin/ls用命令搜索该软件所在包,代码如下:lpj@lpj-linux:~$ dpkg -S /bin/lscoreu

2013-08-21 23:18:36 2063

转载 mips处理器linux内核添加系统调用

参考文件:arch/mips/kernel/scall32-o32.Ssys_call_table定义了系统调用的函数列表。在这个表中反复引用sys这个汇编宏定义二元组。.macro  sys function, nargs        PTR        /function        LONG        (/nargs         .endm这个表

2013-08-18 23:01:03 2195

原创 linux内核系统调用和标准C库函数的关系分析

今天研究了一下系统调用和标准库函数的区别和联系,从网上搜集的资料如下:资料引用分割线《=================================================================================================================================》1.系统调用是为了方便

2013-08-18 12:44:50 25483 5

原创 printf行缓冲区的分析总结

最近在客户那调试串口的时候,read串口然后printf打印,单字符printf,发现没有输出,后来想起来printf这些标准输入输出函数也是属于标准C库glibc的,  这里就要区分一下标准库函数和系统调用了。  系统调用是内核提供给上层程序的接口,能够实现内核和上层之间的交互,系统调用在内核中的实现是软中断的方式,通过相应的中断服务例程来实现,而标准库函数是在系统调用的基础之上封装

2013-08-18 12:29:30 14691 10

转载 内核EXPORT_SYMBOL分析

在查看内核驱动代码的时候会经常看到在一些函数后面总会跟EXPORT_SYMBOL()这样的宏定义,通过网上查阅,它的作用大致总结如下:1、定义说明     把内核函数的符号导出,也可以理解成将函数名作为符号导出;符号的意思就是函数的入口地址,或者说是把这些符号和对应的地址保存起来的,在内核运行的过程中,可以找到这些符号对应的地址的。2、相关处理     (1)、对编译所得的.ko进

2013-08-07 15:32:10 1496 1

原创 linux系统调用mount全过程分析

系统调用本身是软中断,使用系统调用,内核也陷入内核态,异常处理,找到相应的入口最后就会跳转到sys_mount,跳转到sys_mount之前的这个过程主要是跟系统的异常处理相关,以mips处理器为例,相关代码在arch/mips/kernel/下的traps.c syscall32-o32.S等文件中实现的,过几天有空再缕一遍,今天主要总结的是sys_mount之后的事情,内核是如何实现将文件系统

2013-08-04 19:07:50 13926

原创 linux内核SYSCALL_DEFINE分析

CVE-2010-3301是其中一个。这个漏洞的成因是,在64位的内核上执行32位的系统调用时,作为传递系统调用号的%rax高32位未被清零处理,而且在进行比较的时候直接使用的%eax,导致高32位被忽略: cmpl $(IA32_NR_syscalls-1),%eax ja ia32_badsysia32_do_call: IA32_ARG_F

2013-08-04 16:34:35 6524

原创 linux系统/sbin/init执行过程

对于linux的启动过程,之前一直都是研究到内核运行/sbin/init,启动第一个用户进程为止,因为这部分一直都是在内核态工作,所以对于学习内核还是有帮助的,当时/sbin/init之后的过程也需要明白,今天就总结一下。   首先大体写一下内核从启动到执行/sbin/init的流程:    head.S ===> start_kernel ===> rest_init ===>

2013-08-03 18:43:57 25953

原创 init命令

init命令所谓的init进程,它是一个由内核启动的用户级进程。   内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到i

2013-08-02 10:44:11 1320

转载 linux模块参数分析

module_param()理解-------------------------------------------在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()module_param()宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#def

2013-07-30 16:43:23 1179

转载 linux僵尸进程分析

Linux的僵尸进程及其解决方法  1. 产生原因:  在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。通过ps命令查看其带有defunct的标志。僵尸进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。  但是如果该进程的父进程已经先结束了

2013-07-27 14:13:10 1279

原创 linux守护进程实现

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。  守护进程的编程本身并不

2013-07-27 14:00:05 1983

转载 BUG 和BUG_ON

调试的时候很有用的东西:dump_stack 使用前,先在内核配置中把kernel debug选上:make menuconfig:kernel hacking-->kernel debug 作用:一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。为什么这

2013-07-25 18:43:50 2043

转载 linux内核spin_lock分析

今天我们详细了解一下spin_lock在内核中代码实现,我们总共分析四个项目: 1.spinlock_t的定义分析:首先来看一下spinlock_t的定义:typedef struct {       raw_spinlock_t raw_lock;#if defined(CONFIG_PREEMPT) &&defined(CONFIG_SMP)       unsig

2013-07-25 16:47:31 1915

原创 Ubuntu下解决bash 没有那个文件或目录的方法

因为之前电脑硬盘坏掉,维修换了新硬盘,今天重新安装了ubuntu,装好之后就赶紧搭建工作环境,将备份的资料拷贝进来,搭建交叉编译环境,但是发现,修改bashrc中PATH绝对路径指向交叉编译器后,在命令行下运行交叉编译器或出现说没有这个文件或者目录,但是按照绝对路径ls看又有这个文件,很是奇怪。后来找到问题,这次安装的系统是64位的,而这些编译环境都是32位的程序,因此需要安装对32位程序的支

2013-07-24 00:05:04 10943 1

原创 linux内核VFS虚拟文件系统总结

最近手里有一个项目需要写一个简单的文件系统,利用周末时间把深入理解linux内核书第十二章虚拟文件系统学习了一下,加深了对vfs的理解,这里也做一下总结,以备后查。  linux成功的关键因素之一就是它与其他操作系统和谐共存的能力,在linux下可以安装挂载很多格式的文件系统,之所以能实现就是通过虚拟文件系统这一中间系统层,虚拟文件系统的主要思想是引入了一个通用文件模型,它能够表示所有的文件系

2013-07-21 11:34:19 4259 2

原创 使用udev修改u盘设备文件名

udev的规则的编写,我这里就不说了,大家可以在udev的文档中可以了解,有时间的话我在安排一章在说明udev 的规则了。      下面是我要做的一个测试,我的系统是ubuntu9.10,我有一个usb优盘,是kinston的4G的优盘。       运行:           sudo fdisk -l       看下我的优盘的情况,如下图:     

2013-07-18 19:54:10 6117 1

转载 udev的自定义规则

自2.6 核心开始,就可以使用udev 协助管理系统中各设备名称。例如,磁盘设备排序、网卡设备排序等。udev能动态地在/dev 目录里产生自定义的、标识性强的设备文件或设备链接。本文即以红旗Asianux 3.0 平台,给新加载的U盘设备自定义一个链接为例进行简要说明。一、关于udev2.4 内核使用devfs(设备文件系统)在设备初始化时创建设备文件,设备驱动程序可以指定设备号、所

2013-07-18 19:52:47 10015

转载 linux下udev简介

一.关于Udevu即user space,dev是device,通过它的名字,我们就可以简单了解到,它是一个和用户态相关的驱动设备管理机制。udev是一个针对2.6内核的文件系统。提供一种基于用户空间的动态设备节点管理和命名的解决方案。用于取代落后的devfsudev与硬件平台无关,属于用户空间的进程,是一个后台程序,它脱离驱动层的关联,而建立在操作系统之上,只要修改配置文件使之生效,无需

2013-07-18 11:18:08 3529 1

ARMV7架构官方手册

ARMV7架构的官方datasheet,详细介绍armv7架构处理器的各个模块设计细节

2016-05-25

ARM体系架构详细的官方说明手册

ARM架构的官方说明手册,其中详细介绍了ARM处理器核各个模块的详细设计和原理,非常适合嵌入式工程师使用

2016-05-25

linux设备驱动开发

ldd3本书,在网上找了很久,这个很全很方便,里面有超链接

2012-12-07

空空如也

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

TA关注的人

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