自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

转载 Android的Message机制(简单小结)

================简单调整了下格式就共享了===============================================对于Android的Message机制主要涉及到三个主要的类,分别是Handler、Message、Looper;首先对每个类做一个简单介绍;然后再介绍所谓的Android的Message机制是如何实现的,最后给了一个示例。一、介绍三

2013-11-14 10:08:07 542

转载 linux下交叉编译环境的安装(转载

在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都

2012-10-17 10:43:14 968

转载 s3c2410_lcd & frame buffer 驱动分析

s3c2410_lcd & frame buffer 驱动分析 时间:2010-06-08 20:37来源:cnitblog.com作者:luofuchong 点击:346次s3c2410_lcd & frame buffer 驱动分析:自问这个文档写得不是很好。由于到目前为止接手的项目都不带tft的屏,暂时没什么动力深入去研究,等以后有机会再继续完善这个文档好了^_^

2012-09-12 17:30:47 398

转载 Linux Kernel Threads in Device Drivers

PurposeThis examples shows how to create and stop a kernel thread.Thedriver is implemented as a loadable module. In the init_module()routine five kernel threads are created. This kernel threads sl

2012-08-31 17:01:00 982

转载 Linux启动过程综述

Bootloader在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引导,另一种是由Firmware直接引导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等),firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导的设

2012-08-31 16:59:57 503

转载 关于do_initcalls函数的说明

1.在看linux核心代码的时候看到/init/main.c 里面的do_initcalls函数static void __init do_initcalls(void)742 {743        initcall_t *call;744745         for (call =__initcall_start; call __ini

2012-08-31 16:59:02 2161 1

转载 Linux 运行时内核分析(二版)

我们基于RH9 内核从两部分来分析Linux系统动态运行过程一: 系统初始化开始,Linux进入保护模式,初始内存系统、中断系统、文件系统等,直到创建第一个用户进程。二: 用户进程通过系统调用主动进入内核,CPU 接受中断请求被动执行各种中断服务。第一部分 系统初始化进入保护模式 Arch/i386/boot/Setup.sgdt:.fill GDT_ENTRY_KER

2012-08-31 16:56:21 628

转载 ARM-Linux开发环境的介绍:启动的流程

下面是我收藏的一篇好文章,就是忘记是那位仁兄,写的了,如果您正好看到这篇文章,请补注您的作者信息------------------------------------首先,porting linux的时候要规划内存影像,如小弟的系统有64m SDRAM, 地址从0x 0800 0000 -0x0bff ffff,32m flash,地址从0x0c00 0000-0x0dff ffff

2012-08-31 16:53:23 1024

转载 Linux 内存管理系统:初始化

inux 内存管理系统:初始化作者:Joe Knapka臭翻:colyli内存管理系统的初始化处理流程分为三个基本阶段:激活页内存管理 在swapper_pg_dir中初始化内核的页表 初始化一系列和内存管理相关的内核数据 Turning On Paging (i386)启动分页机制(i386)Kernel 代码被加载到物理地址0x100000(1MB),

2012-08-31 16:41:51 1512

转载 linuxMACHINE_START-MACHINE_END

在友善mini2440提供的linux2.6.32.2内核中,有如下定义:MACHINE_START(MINI2440, "FriendlyARM Mini2440 developmentboard").phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_VA_UART)>> 18) &0xfffc,.boot_par

2012-08-31 14:04:32 311

转载 深入嵌入式系统的 BootLoader

///////////////////////////////////////////////////////////////2011.5.13--黑米/////////////////////////////////////////////////////////////////////////////////这周在调试新的处理器和内存。遇到了一些问题。解决了,回想这篇文章,大概的思路很有借

2012-08-31 14:01:16 874

转载 Linux kernel command line 参数详解

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

2012-08-31 13:59:19 3376

转载 Linux-2.6.20的cs8900驱动分析

一、初始化阶段    网络初始化被调用的路径为:init->do_basic_setup->do_initcalls->net_olddevs_init->ethif_probe2->probe_list2->cs89x0_probe->cs89x0_probe1真是不容易啊,终于进到cs89x0_probe1了,在这里开始探测和初始化cs8900了。下面就按照这个顺序来说明网络驱动第

2012-08-29 11:07:08 731

转载 platform_driver_probe与platform_driver_register的区别

Platform Device and Drivers从我们可以了解Platformbus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线Platform bus使用最小结构来集成SOC processer上的各种外设,或者各种“legacy”之间的互联。Platform device典型的Platf

2012-08-29 11:05:36 425

转载 Linux驱动中,probe函数何时被调用

最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了structdevice_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices{}中加入设备也会调用。但

2012-08-29 11:04:30 433

转载 MTD原始设备与FLASH硬件驱动的对话

MTD原始设备与FLASH硬件驱动的对话看了>后对以MTD的分层结构以及各层的分工情况有了大致的了解,然而各层之间是如何进行对话的呢,对于这个问题,>上没有详细的去说明。小弟抽空研究了一下,打算从下到上,在从上到下,分两条主线来研究一下MTD原始设备与FLASH硬件驱动的对话(MTD原始设备与更上层的对话留待以后再研究)。以下是第一部分,从下到上的介绍FLASH硬件驱动与MTD

2012-08-28 16:16:42 575

转载 linux设备和驱动加载的先后顺序

Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_initàdo_basic_setup()àdo_initcalls()该函数中会将在__

2012-06-27 14:45:32 603

转载 C语言的宏定义

C语言的宏定义写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义:1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 type

2012-06-27 09:42:03 399

转载 Linux内核部件分析--设备驱动模型之device-driver

前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。本节的实现代码集中在drivers/base/bus.c和drivers/base/dd.c中。先来回忆下,在device_registe

2012-06-25 15:06:50 448

转载 Linux内核部件分析--设备驱动模型之bus

前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/base.h,实现代码主要在bus.c中。因为在bus中有很多代码时为了device找到driver或者driver找到dev

2012-06-25 15:05:57 405

转载 Linux内核部件分析--设备驱动模型之driver

上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕drivers/base/driver.c,但头文件仍然是include/linux/device.h和drivers/bas

2012-06-25 15:05:08 727

转载 Linux内核部件分析--设备驱动模型之device

linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。     头文件是include/linux/device.h,实现在drivers/base目录中。本节要分析的,是其中的设备,主要在core.c中。struct device {      struct devi

2012-06-25 15:03:59 771

转载 Linux内核部件分析--设备驱动模型的基石kobject

之前我们分析了引用计数kref,总结了sysfs提供的API,并翻译了介绍kobject原理及用法的文档。应该说准备工作做得足够多,kobject的实现怎么都可以看懂了,甚至只需要总结下API就行了。可我还是决定把kobject的实现代码从头分析一遍。一是因为kobject的代码很重要,会在设备驱动模型代码中无数次被用到,如果不熟悉的话可以说是举步维艰。二是为了熟悉linux的编码风格,为以后分析

2012-06-25 14:47:57 371

转载 Linux内核部件分析--更强的链表klist

前面我们说到过list_head,这是linux中通用的链表形式,双向循环链表,功能强大,实现简单优雅。可如果您认为list_head就是链表的极致,应该在linux链表界一统天下,那可就错了。据我所知,linux内核代码中至少还有两种链表能占有一席之地。一种就是hlist,一种就是本节要介绍的klist。虽然三者不同,但hlist和klist都可以看成是从list_head中发展出来的,用于特殊

2012-06-25 14:09:03 485

转载 Linux内核部件分析--记录生命周期的kref

kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。kref的头文件在include/linux/kref.h,实现在lib/kref.c。闲话少说,上代码。str

2012-06-25 13:50:54 341

转载 Linux内核部件分析--原子性操作atomic_t

在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前

2012-06-25 13:47:06 1921

转载 Linux内核部件分析--连通世界的list

在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。struct list_head {      struct list_head *next, *prev;  };  这是链表的元素结构。因为是循环链表,表头和表中节点都是这一结构。有pre

2012-06-25 13:44:23 431

转载 ubuntu下编译内核

本文的参考网站:http://kernel-handbook.alioth.debian.org/ 在分析linux内核源码的过程中,要是能够修改内核源码并运行修改后的内核,我想肯定是令人高兴的事,哪怕第一次修改仅仅是在启动时打印一行"Hello, Wang Jiankun!",肯定也是令我高兴的。为了能成功编译修改后的内核,今天先编译一遍内核。为了有一个完整的记录,今天的起点是一

2012-06-21 07:22:16 2125

转载 uevent分析

1.kobject, ktype, ksetkobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个kobject,所以里面包含了一个kobject对象。另外,kset中

2012-06-20 14:02:01 271

转载 人生(最经典的十句话)

一、成功都是逼出来的; 二、如果你简单,这个世界就对你简单; 三、怀才就像怀孕,时间久了会让人看出来;四、过去酒逢知己千杯少,现在酒逢千杯知己少; 五、参加一次21天训练营,行动力强弱决定成功快慢; 六、人生如果错了方向,停止就是进步;七、要成功,需要朋友;要取得巨大成功,需要敌人; 八、人生两大悲剧:一是万念俱灰,一是踌躇满志(却只想不做);九

2012-06-20 13:04:16 328

转载 kmalloc kfree学习笔记

2.6.26中的内存管理大概分为3个层次SLUB,伙伴系统和ZONE,其中SLUB在最高层,这里通过分析kmalloc和kfree来分析SLUB的模型,在内存管理中还有NUMA系统,但是NUMA不是必须得,所以以下笔记建立在无SMP和不使用NUMA的环境下,并且不运行DEBUG设置SLUB主要对1页以下的内存进行管理,将1页内存分成相同大小的块,SLUB将这些块称为object,内核进行内存申

2012-06-18 14:22:35 1057

转载 arm-none-linux-gnueabi交叉工具链安装

arm-none-linux-gnueabi交叉工具链与arm-linux-gcc 的区别:参考网友的说法:eabi标准的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一个链接参考网友的一些做法:1 下载arm-2009q1-203-arm-none-linux-gnueabi.bin2 执行./arm-2009q1-203-arm-non

2012-06-11 11:07:24 8646

转载 嵌入式Linux启动流程分析

当Bootloader将控制权交给内核的引导程序时,第一个执行的程序就是head.S,它完成了加载内核的大部分工作;misc.c则提供加载内核所    需要的子程序,其中解压内核的子程序是head.S调用的重要程序,另外内核的加载还须知道系统的硬件信息,该硬件信息在hardware.h中定义并被    head.S所引用。本系统中内核的启动流程如图1所示。        本

2012-06-11 10:31:39 548

空空如也

空空如也

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

TA关注的人

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