- 博客(15)
- 资源 (5)
- 收藏
- 关注
转载 Linux设备模型之platform总线
<br />------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------<br />一:前言Platform总线是kernel中最近加入的一种虚拟总线.在近版的2.6kernel中,很多驱动都用platform改写了.只有在分析完platform总线之后,才能继续深入下去分析.在分析完sysfs和设备驱动模型
2010-12-30 14:37:00 501
转载 linux设备模型分析
<br />------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------<br />一:前言Linux设备模型是一个极其复杂的结构体系,在编写驱动程序的时候,通常不会用到这方面的东西,但是。理解这部份内容,对于我们理解linux设备驱动的结构是大有裨益的。我们不但可以在编写程序程序的时候知其然,亦知其所以然。
2010-12-30 14:35:00 463
转载 c struct 对齐
<br />有关字节对齐的介绍: <br /><br /><br /> 什么是对齐,以及为什么要对齐: <br /> 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 <br /> 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取
2010-12-29 17:41:00 486
转载 min宏定义探究
<br />min宏定义探究 在GCC的文档中建议使用如下的min宏定义:<br />引用:#define min(X,Y) /<br />(__extension__ /<br />({ /<br /> typeof(X) __x=(X), __y=(Y); /<br /> (__x<__y)?__x:__y; /<br />}) /<br />) <br /><br />本文讨论了这样作法的意义。<br /> 1、传统的min带来的副作用<br /> 2、GCC
2010-12-29 17:05:00 634
转载 GNU C扩展
<br />要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。<br /><br />一:柔性数组(flexible array) <br />柔性数组也称为零长度数组,或者零长度数组。这种数组通常在结构体当中出现,它本身并不占用空间,但是有了柔性数组意味着结构体的尺寸充满了变数。<br />例如以下例子:<br />struct usb_interface_cache {<br />
2010-12-27 21:58:00 978
转载 ARM软件访问硬件的核心理论(2)---时钟信号
<br />Andrew Huang bluedrum@163.com (转载请注明作者及联络方式) 驱动数字电路运转是的时钟信号,时序电路都需要一个外部时钟信号来驱动,完成计时,同步,计数,时序控制等各种功能。象CPU也是用时序信号驱动来完成各种运算的,而且象ARM带的模块绝大部分与时序都有关,因此理解时钟信号对于底层编程非常重要。 一.时钟信号的源头---------晶振---------------------------------------------------------------
2010-12-24 13:32:00 1945
转载 ARM软件访问硬件的核心理论(2.1)---S3C6410 时钟分析
<br />Andrew Huang bluedrum@163.com 转载请注明作者和联络方式 S3C6410的ARM内核是 ARM1176JZF-S ,在1.1v下最高可以跑 533MHz,1.2v可以跑 667MHz。 S3C6410用的是可以使用外部晶振(XXTIpll)和外部时钟(XEXTCLK),两种方式输入时钟信号.它由跳线OM[0]决定,这一位为0,选择XXTIpll .否则选择 XEXTCLK. APLL/MPLL/EPLL S3C6410提供三种PLL,它们是APLL,
2010-12-24 12:42:00 3103 2
转载 linux 内核驱动--Platform Device和Platform_driver注册过程
<br /><br />转自网络,自己学习用<br /> <br />从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。<br />Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。<br /><br /><br />Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册
2010-12-24 11:33:00 1245
转载 Linux内核调试
<br />调试是软件开发过程中一个必不可少的环节,在 Linux 内核开发的过程中也不可避免地会面对如何调试内核的问题。但是,Linux 系统的开发者出于保证内核代码正确性的考虑,不愿意在 Linux 内核源代码树中加入一个调试器。他们认为内核中的调试器会误导开发者,从而引入不良的修正[1]。所以对 Linux 内核进行调试一直是个令内核程序员感到棘手的问题,调试工作的艰苦性是内核级的开发区别于用户级开发的一个显著特点。 <br />尽管缺乏一种内置的调试内核的有效方法,但是 Linux
2010-12-23 22:33:00 626
转载 linux内核的一些预定义
<br /><br />转自网络 自己学习<br /> <br />所有的内核代码,基本都包含了linux/compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。<br />首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去 的,AFLAGS这个变量也定义了这个变量,gcc会把这个宏定义为1。用在这里,是因为汇编代码里,不会用到类似于__user这样的属性(关于 __user这样的属性是怎
2010-12-23 15:43:00 940
转载 linux 内核启动过程分析
<br />文件linux/arch/arm/boot/compressed/head.S是linux内核启动过程执行的第一个文件。<br /> .align<br />start:<br /> .type start,#function #function //type指定start这个符号是函数类型<br /> .rept 8 //重复8次 mov r0, r0,<br /> mov r0, r0 //空操作,让前面所取指令得以执行。<br /> .endr<br
2010-12-23 11:54:00 1705
转载 linux kernel 从入口到start_kernel 的代码分析
<br /> <br />linux kernel 从入口到start_kernel 的代码分析<br />本文的很多内容是参考了网上某位大侠的文章写的<<>>,有些东西是直接从他那copy过来的。<br />最近分析了一下u-boot的源码,并写了分文档, 为了能够衔接那篇文章,这次又把arm linux的启动代码大致分析了一下,特此写下了这篇文档。一来是大家可以看看u-boot到底是如何具体跳转到linux下跑的,二来也为自己更深入的学习linux kernel打下基础。<b
2010-12-22 11:50:00 1005
转载 基于arm的Linux的启动分析(至start_kernel)
<br /><br />转自网络<br /> <br />启动过程分析如下:<br />压缩的内核zImage 的入口程序为 Commpressed的head.S,它依次完成以下工作:开启 MMU 和 Cache,调用 decompress_kernel()解压内核,最后通过调用 call_kernel()进入非压缩内核 Image 的启动。<br />下面将具体分析在此之后 Linux 内核的启动过程。<br />Linux内核入口<br /> Linux 非压缩内核的入口位于文件/arch/arm/ke
2010-12-22 10:05:00 703
转载 ARM的不同的启动过程(通过Makefile的分析)
<br /><br />转自网络<br /> <br />分析过程:<br />查看arch/arm/Makefile下的第一个目标为all: zImage<br />找到以zImage作为目标的规则:<br />zImage Image xipImage bootpImage uImage: vmlinux<br /> $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@<br />这个规则中命令执行的目录为$(boot)= arch/
2010-12-22 09:59:00 1894 1
转载 zImage内核镜像解压过程详解
<br /><br />本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。<br /> 内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImage的解压过程。<br /> 先看看zImage的组成吧。在内核编译完成后会在arch/arm/boot/下生成zImag
2010-12-18 23:43:00 742
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人