- 博客(8)
- 收藏
- 关注
原创 C程序运行过程
在C程序运行时,内存被划分为了三个区:1、代码区;2、静态数据区;3、动态数据区。C程序经过编译链接之后,在执行运行程序时,程序的一系列指令就被读取到所链接的内存地址上,然后通过eip寄存器来指向要运行的下一条指令;而静态数据区则是用于存放全局变量和静态变量的地方,在程序开始执行前就已经存在初始化的数据了;最后的动态数据区则是在程序执行后才会产生数据,而每个函数的压栈和清栈就是在这一区域进行的,eb
2017-11-15 23:18:50 1876
原创 linux系统调用
系统调用在用户空间进程(应用程序)和硬件设备之间添加了一个中间层,这样做的好处在于将用户空间进程和硬件设备进行隔离。linux系统有一套标准的系统调用接口,然后硬件驱动会去实现这一系列标准的系统调用接口,而用户空间进程只需去调用这些标准系统调用接口来操作硬件,这样写出的应用程序就是易于移植的。需要注意的是,系统调用是用户空间访问内核的唯一手段。这里需要提出的是,一般应用程序不是直接通过系统调用来编程
2017-11-09 20:38:31 268
原创 NAND驱动分析--(三)
系统调用add_mtd_partitions(&priv->mtd, p1020_partition_info, 3)函数创建新分区的调用关系如下所示:->add_mtd_partitions(&priv->mtd, p1020_partition_info, 3)->add_mtd_device(&slave->mtd)->mtd_table[i] = mtd;由此可知,每个分区的mtd_in
2017-10-25 15:32:58 507
原创 NAND驱动分析--(二)
在上一篇nand驱动分析中,大概描述了nand flash驱动加载时的初始化流程,接下来对其调用的一些函数进行进一步的阐述。首先,上一篇说到调用了fsl_elbc_chip_init()函数,此函数还是在drivers\mtd\nand\fsl_elbc_nand.c文件中被定义,其代码如下所示:static int fsl_elbc_chip_init(struct fsl_elbc
2017-10-23 15:04:38 1087
原创 NAND驱动分析--(一)
因为nand flash驱动是采用了MTD技术,所以首先对nand硬件驱动层进行分析(以ppc架构为例进行分析,nand flash采用了Micron公司的512MB、2K页大小、的flash芯片)。ppc架构的cpu芯片并没有集成专用的nand flash控制器,而是使用elbc(增强型本地总线控制器)的nand控制模式来对nand flash芯片进行控制的。所以首先分析nand硬件驱动,f
2017-10-23 00:16:07 888
转载 Linux MTD系统剖析
MTD,Memory Technology Device即内存技术设备,在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。 如上图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。 Flash硬件驱动层:Flash硬件驱动层负责对Flash硬件的读、
2017-10-22 23:33:14 244
原创 Linux系统spi驱动程序分析---(二)
上一章叙述了关于spi驱动的主控制器层的内容,接下来这一章将叙述spi驱动的从设备层。我们首先从下图中梳理一下spi驱动的初始化流程:由上图可知,在
2017-10-19 11:49:15 393
原创 Linux系统spi驱动程序分析---(一)
说明:本文将分析Linux-2.6.17源代码中的spi驱动程序,其内容为本人阅读源代码后的一些理解。由于本人水平有限,所以内容可能比较杂乱零散,权当个人笔记记录之用。而以下内容均以powerpc架构为例说明。
2017-09-03 22:01:01 669
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人