自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (9)
  • 收藏
  • 关注

原创 linux页面回收浅析

关于页面的使用在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的t

2013-05-12 00:37:54 1429

原创 linux文件读写浅析

在《linux内核虚拟文件系统浅析》这篇文章中,我们看到文件是如何被打开、文件的读写是如何被触发的。对一个已打开的文件fd进行read/write系统调用时,内核中该文件所对应的file结构的f_op->read/f_op->write被调用。本文将顺着这条路走下去,大致看看普通磁盘文件的读写是怎样实现的。linux内核响应一个块设备文件读写的层次结构如图(摘自ULK3):

2013-05-12 00:36:02 1910

原创 linux虚拟文件系统浅析

linux虚拟文件系统浅析虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有不同的nam

2013-05-12 00:34:51 1473

原创 MIPS 寄存器介绍

MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下:下表描述32个通用寄存器的别名和用途REGISTERNAMEUSAGE$0$zero常量0(constant value 0)$1$at保留给汇编器(Reserved for as

2013-05-11 22:18:55 1674

原创 基于MIPS架构的BackTrace实现

基于MIPS架构的BackTrace实现基础知识介绍: 1.         MIPS32的内部寄存器。最简单的办法就是通过GDB的命令,可以获得下面的列表(gdb) info registers          zero       at       v0       v1       a0       a1       a2       a3R0

2013-05-11 22:14:43 2095

原创 MIPS汇编小贴示

MIPS汇编小贴示指令长度和寄存器个数 MIPS的所有指令都是32位的,指令格式简单。不像x86那样,x86的指令长度不是固定的,以80386为例, 其指令长度可从1字节(例如PUSH)到17字节,这样的好处代码密度高,所以MIPS的二进制文件要比x86的大大约20%~30%。而定长指令和格式 简单的好处是易于译码和更符合流水线操作,由于指令中指定的寄存器位置是固定的,使得译码过程和读指令

2013-05-11 22:13:37 1941

原创 VIM IDE搭建

工欲善其事,必先利其器。一个强大的开发环境可以大大提高工作效率。好吧,我知道这是废话。。。不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样可以一键安装并且功能几乎完美无缺的开发工具而郁闷不已,甚至打算收回刚刚迈出的脚步。所幸的是,通过几天努力,我总算配置出了一个功能完备的基于Vim的开发环境。这个开发环境除了基本的Vim外,还包括Cta

2012-07-22 23:29:49 1997 1

原创 LCD之 调色板

对于一个显示设备,数据的更新率正比于画面的像素数和色彩深度的乘积。在嵌入式Linux系统中,受处理器资源配置和运算能力的制约,当使用大分辨率显示时(如在一些屏幕尺寸较大的终端上,往往需要640×480以上),需要降低显示的色彩深度。否则,由于数据处理负担过重会造成画面的抖动和不连贯。这时,调色板技术将发挥重要作用。ARM9内核的S3C2410在国内的嵌入式领域有着广泛的应用,芯片中带有LCD控制器

2012-07-05 14:33:30 1085

原创 serial_put_hex

2012-07-04 14:15:22 876

原创 LCD裸机驱动程序设计 .

驱动程序流程----1----LCD初始化---端口初始化---显示模式初始化---帧缓冲初始化2----将图像写入帧缓冲端口初始化----------GPC5        GPC6GPC7未用-----GPC0-------10lineend 信号static v

2012-07-03 09:32:16 1371 1

原创 Linux MIPS 启动分析

系统加电起动后,MIPS处理器默认的程序入口是0xBFC00000,此地址在无缓存的KSEG1的地址区域内,对应的物理地址是0x1FC00000,即CPU从0x1FC00000开始取第一条指令,这个地址在硬件上已经确定为FLASH的位置,Bootloader将Linux内核映像拷贝到  RAM 中某个空闲地址处,然后一般有个内存移动操作,目的地址在arch/mips/Makefile内指定:c

2012-05-16 11:23:49 1456

原创 softirq和taskled

softirq和taskled都属于软中断,而工作队列是和软中断无关,仅仅是内核中的一个内核线程在等待工作任务,工作队列可以发送工作任务。不过他们还是有个共同点,就是都有延后执行的作用。1.首先看do_softirq如何被调用和如何处理。#ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED# define invoke_softirq() __do_soft

2012-05-16 11:02:21 3226 1

原创 Linux内核中NAND Flash坏块管理

由于NAND Flash的现有工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND芯片出厂的时候,厂家只能保证block 0不是坏块,对于其它block,则均有可能存在坏块,而且NAND芯片在使用的过程中也很容易产生坏块。因此,我们在读写NAND FLASH 的时候,需要检测坏块,同时还需在NAND驱动中加入坏块管理的功能。    NAND驱动在加

2012-05-02 20:54:03 11299 3

原创 NAND Flash的坏块管理设计

NAND Flash的坏块管理设计摘要:主要介绍了基于嵌入式Linux的NAND Flash坏块管理设计和实现方案,详细阐述了坏块映射表的建立、维护及其相关算法,同时分析了此坏块算法在Linux内核及Bootloader中的具体应用。测试结果表明该算法能够处理NANDFlash的相关坏块问题,具有较高的稳定性。关键词:NAND Flash;嵌入式IAnux;映射表;坏块管理

2012-05-02 20:43:11 2972 1

原创 ARM]NAND FLASH的MLC和SLC架构对比

目前业内最具争议的话题莫过于NAND闪存的两大架构MLC和SLC了,这两种架构最大的区别是存取技术不同,由此也带来了制造成本、工艺要求、辅助电路、存取次数上的迥异。从短期发展来看,SLC架构在使用上优势较为明显,也因此成为了部分厂商炫耀产品的资本。然而MLC架构具有成本低廉、单片容量较SLC成倍增大等优势,长远来看势必会成为NAND闪存的下一代主流架构。现在购买随身数码影音产品也许我们还在为闪存芯

2012-03-15 10:00:05 1681

原创 NAND FLASH ECC校验原理与实现

NAND FLASH ECC校验原理与实现作者:龙林 EMAIL:[email protected] WEB:www.dragon-2008.comECC简介  由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND Flash的系统中一般都会采用一定的坏区

2012-03-15 09:59:12 1192

原创 NAND FLASH芯片R/B引脚上拉电阻的作用和阻值选择

NAND用R/B输出作为一种硬件方法标示页操作、擦除和随机读等操作的完成,平时R/B为高电平状态,但当NAND进行编程、随机读或擦除操作时变为低电平状态,操作完成后又变为高电平状态。R/B引脚为漏极开路驱动,因此需要接上拉电阻才能把R/B拉回高电平状态。R/B引脚端的上拉电阻电路图如下图所示:图中电容CL的值为常量:若器件的供电电压为1.8V,则CL=30pF;若供电电压为3.3V

2012-03-15 09:57:11 10292 1

原创 RamDisk工作原理

一 什么是RamDiskRam:内存,Disk:磁盘,在Linux中可以将一部分内存当作分区来使用,称之为RamDisk。对于一些经常被访问、并且不会被更改的文件,可以将它们通过RamDisk放在内存中,能够明显地提高系统性能。RamDisk工作于虚拟文件系统(VFS)层,不能格式化,但可以创建多个RamDisk。虽然现在硬盘价钱越来越便宜,但对于一些我们想让其访问速度很高的情况下,RamDi

2012-03-15 09:49:20 2375

原创 Nand Flash -详述4

【内存技术设备,MTD(Memory Technology Device)】MTD,是Linux的存储设备中的一个子系统。其设计此系统的目的是,对于内存类的设备,提供一个抽象层,一个接口,使得对于硬件驱动设计者来说,可以尽量少的去关心存储格式,比如FTL,FFS2等,而只需要去提供最简单的底层硬件设备的读/写/擦除函数就可以了。而对于数据对于上层使用者来说是如何表示的,硬件驱动设计者可以不关心

2012-03-15 09:47:14 1152

原创 Nand Flash -详述3

【Nand flash的一些典型(typical)特性】1.页擦除时间是200us,有些慢的有800us。2.块擦除时间是1.5ms.3.页数据读取到数据寄存器的时间一般是20us。4.串行访问(Serial access)读取一个数据的时间是25ns,而一些旧的nand flash是30ns,甚至是50ns。5.输入输出端口是地址和数据以及命令一起multiplex复用的。

2012-03-15 09:46:24 2577 2

原创 Nand Flash -详述2

【Nand Flash的物理存储单元的阵列组织结构】Nand flash的内部组织结构,此处还是用图来解释,比较容易理解:图2.Nand Flash物理存储单元的阵列组织结构上图是K9K8G08U0A的datasheet中的描述。 简单解释就是:1.一个nand flash由很多个块(Block)组成,    块的大小一般是        -> 12

2012-03-15 09:44:11 2613 1

原创 Nand Flash -详述1

1.       硬件特性:【Flash的硬件实现机制】 Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。这类设备,除了Flash,还有其他比较常见的如硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,

2012-03-15 09:43:08 1456

原创 驱动之路-设备模型(下)上层模型

一、重要知识点:         设备模型由总线、设备、驱动三要素组成。底层模型决定上层模型,在总线,设备,驱动的结构体中你总是可以看到它们间接或者直接的包含了kobject结构或kset结构。         1.总线         总线是处理器和设备之间的通道,在设备模型中,所有设备都通过总线相连,甚至内部的虚拟“platform”总线。在linux设

2012-03-08 16:14:37 980

原创 驱动之路-设备模型(上)底层模型

一、重要知识点          1.Sysfs文件系统       Sysfs文件系统是一种类似于proc文件系统的特殊文件系统,它存在于内存当中,当系统启动时由内核挂载于内存当中。用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的数据结构信息。     2.Linux设备底层模型        1)为什么要使用设备模型

2012-03-08 16:12:52 854

原创 数据结构----排序2

排序;1、插入排序(直接插入排序和希尔排序)2、选择排序(直接选择排序和堆排序)3、交换排序(冒泡排序和快速排序)4、归并排序5、基数排序---------------------直接插入排序说明:逐个将后一个数加到前面的排好的序中。在直接插入排序过程中,对其中一个记录的插入排序称为一次排序;直接插入排序是从第二个记录开始进行的,因此,长度为n的记录序列需要进行

2012-02-16 18:31:05 477

原创 数据结构------排序(1)

排序简介排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。1、插入排序(直接插入排序、折半插入排序、希尔排序);2、交换排序(起泡排序、快速排序);3、选择排序

2012-02-16 18:25:06 1014

原创 数据结构-----查找算法

查找:1、顺序查找2、二分查找(折半查找)3、分块查找4、数表的动态查找(二叉排序树查找、平衡二叉树AVL树、B树、B+树)5、哈希查找---------------------------顺序查找说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。int SequelSearch(elemtype s[],keytype Key,int n)/*在s

2012-02-16 18:22:00 779

原创 题目:1*2*3*……*100 求结果末尾有多少个零

分析:一般类似的题目都会蕴含某种规律或简便方法的阶乘末尾一个零表示一个进位,则相当于乘以10而10 是由2*5所得,在1~100当中,可以产生10的有:0 2 4 5 6 8 结尾的数字,显然2是足够的,因为4、6、8当中都含有因子2,所以都可看当是2,那么关键在于5的数量了那么该问题的实质是要求出1~100含有多少个5由特殊推广到一般的论证过程可得:1、 每隔5个,会

2012-02-16 17:27:12 11041

原创 进程状态转换

一个进程在其生存期内,可处于一组不同的状态下,称为进程状态,如图所示。进程状态保存在进程任务结构的state字段中。当进程正在等待 系统中的资源而处于等待状态时,则称其处于睡眠等待状态。在Linux系统中,睡眠等待状态分为可中断的和不可中断的等待状态。  进程状态及转换关系(1)    运行状态(TASK_RUNNING)。当进程正在被CPU执行,或已经准备就绪随时可由调度程序

2012-02-15 21:44:09 5322 1

原创 基于2.6内核的pwm蜂鸣器驱动设计

基于2.6内核的pwm蜂鸣器驱动设计 一、开发环境 二、PWM怎样工作在ARM Linux中1. 什么是PWM?   PWM(脉冲宽度调制)简单的讲是一种变频技术之一,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。如果还不是很清楚,好吧,来看看我们实际生活中的例子,我们的电风扇为什么扭一下按扭,风扇的转速就会发生变化;调一下收音机的声音按钮,声音的大

2011-12-29 15:27:37 2051

原创 linux内核分析

启动  当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码。BIOS先进行一系列的系统自检,然后初始化位于地址0的中断向量表。最后BIOS将启动盘的第一个扇区装入到0x7C00,并开始执行此处的代码。这就是对内核初始化过程的一个最简单的描述。  最初,linux核心的最开始部分是用8086汇编语

2011-12-23 13:53:42 1534

原创 Udev具体实现

udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。udev是一个用户模式程序。它的配置文件是/etc/udev/udev.conf。这个文件一般缺省有这样几项:udev_root="/dev" ; udev产生的设备文件的根目录是/dev udev_db="/dev/.udevdb" ; 通过udev产生的设备文件形成的数据库udev_rul

2011-12-22 13:50:10 1408

原创 Linux内核引导参数简介

概述内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。内核源码树下的 Documentation/kernel-parameters.txt 文件列出了所有可用的引导参数,并指明了处理每个参数的具体文件。注意:对于模块而言,引导参数只能用于直接编译到核心里的模块,格式是使用"模块名.参数=值"模式指定,比如:usbcore.blinkenlights=1 。动态加载的模块可以在

2011-12-22 11:08:30 969

原创 Linux操作系统内核启动参数详细解析

Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。如果不使用启动管理器,比如直接从BIOS或者把内核文件用“cp zImage /dev/fd0”等方法直接从设备启动,就不能给内核传递参数或选项--这也许是我们使用引导管理器比如LILO的好处之一吧。Li

2011-12-22 11:01:05 821

原创 深入浅出分析Linux设备驱动程序中断

一、前言 Linux的中断宏观分为两种:软中断和硬中断。声明一下,这里的软和硬的意思是指和软件相关以及和硬件相关,而不是软件实现的中断或硬件实现的中断。软中断就是"信号机制"。软中不是软件中断。Linux通过信号来产生对进程的各种中断操作,我们现在知道的信号共有31个,其具体内容这里略过,感兴趣读者可参看相关参考文献[1]。一般来说,软中断是由内核机制的触发事件引起的(例如进程运行超时

2011-12-19 21:13:54 1176

原创 PDU编码(非常经典)

共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。 发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也

2011-12-19 19:41:57 26624 4

原创 SQLITE3,C语言使用

SQLITE3,C语言使用SQLITE 操作入门sqlite 提供的是一些 C 函数接口,你可以用这些函数操作数据库。通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给 sqlite 函数, sqlite 就会为你操作数据库。sqlite 跟 MS 的 access 一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发

2011-12-19 19:05:38 1575

原创 GSM短信发送PDU编码解码C++控制台实现

//SendMsg.cpp  #include "StdAfx.h"  #include "SendMsg.h"    HANDLE hComm;//串口设备句柄      // 正常顺序的字符串转换为两两颠倒的字符串,若长度为奇数,补'F'凑成偶数  // 如:"8613722216254" --> "683127226152F4"  // pSrc: 源字符串指针

2011-12-18 14:31:30 2997

原创 bash配置文件

本文主要对linux系统bash配置文件进行比较分析。1.       首先是两个全局的配置文件。/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bash.bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被

2011-12-17 10:04:59 640

原创 ubuntu8.10网络配置

一 配置网络-使用/etc/network/interfaces1)编辑配制文件:sudo vi /etc/network/interfaces  加入以下配置信息(修改为你自己的): auto lo iface lo inet loopback//静态配置IP auto eth0iface eth0 inet static address 192.168.

2011-12-17 10:00:34 541

SCSI-3 spec

这是一份关于SCSI-3标准协议的文档,介绍了SCSI的新特性,其中还包括罪行的技术手册,对于想学习和从事存储技术开发的IT人员非常珍贵。

2013-06-05

ELF文件格式详解

这是一一篇讲解Linux文件格式的文档,通过此文档,可以很好的了解,Linux文件格式,以及对于编译链接,都很有帮助,想要学习文件系统的也可以参考此文档

2013-06-01

Linux网络文件系统 (NFS)分析

此文档详细介绍了Linux网络文件系统 (NFS),对于想从事文件系统,或者存储开发的同志来说,是一份不可多得的好资料,希望对你们有用。

2013-05-11

GUN-LD中文使用说明

链接器ld各种命令详细讲解,能够帮助你很好的理解Linux编译,链接各种疑难问题

2013-05-11

Linux进程间通信(非常经典)

这是Linux进程间通信的资料 非常的详细 只要你看了这个文档 那么 你就能够完全明白Linux进程间通信的原理了!!

2011-12-06

华清远见uboot和linux内核移植实验手册

这是华清远见嵌入式开发 关于uboot移植和linux内核移植的实验手册 具有很高的参考价值 是自学的很好的资料(这是内部资料哦)

2011-11-20

华清远见 u-boot移植

这是我在华清远见时 做的uboot移植实验,按照此方法就能制作自己的uboot 方法简单 步骤清晰 希望大家喜欢

2011-11-15

嵌入式华清远见培训 ARM实例代码(内部资料)

这是我在华清远见嵌入式培训学习时老师给的关于ARM源代码程序 有很高的学习使用价值 希望大家好好利用!!

2011-11-09

华清远见-QT实战项目-QQ聊天室

这是我在 华清远见培训时做的一个项目,是关于Qt编程的。在linux下编写的一个QQ聊天室,实现了私聊群聊等功能,很适合自学者,学习和研究。

2011-11-06

空空如也

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

TA关注的人

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