[国嵌攻略][159][SPI子系统]】的更多相关文章

SPI 子系统架构 1.SPI core核心:用于连接SPI客户驱动和SPI主控制器驱动,并且提供了对应的注册和注销的接口. 2.SPI controller driver主控制器驱动:用来驱动SPI控制器. 3.SPI protocol drvier客户驱动:用来驱动SPI设备 SPI控制器驱动分析 1.SPI控制器驱动对应的内核文件在/drivers/spi/spi_s3c24xx.c中.找到模块初始化函数s3c24xx_spi_init,从中可以看出控制器驱动是平台驱动. 2.找到初始化函…
SPI Flash驱动 1.打开/drivers/mtd/devices/m25p80.c驱动文件.找到初始化m25p80_init函数,其中通过spi_register_driver来注册spi设备驱动.需要的参数是struct spi_driver指针结构. 2.匹配函数是在m25p_probe中. 3.写操作是在m25p80_write中.要写的事务通过spi_message提交给spi_master控制器,一个spi_message事务又分为很多spi_transfer操作. 4.当写入…
SPI控制器工作流程 SPI控制器提供2个SPI接口.每个SPI接口有两个通道,分别为TX通道和RX通道.CPU要写数据到FIFO中,先写数据到SPI_TX_DATA寄存器中,这样此寄存器中的内容就会自动移动到发送FIFO中:同理,如果CPU要从接收FIFO中读取数据,就访问寄存器SPI_RX_DATA,紧接着接收FIFO的数据就会自动移动到SPI_RX_DATA寄存器中. OK6410 SPI裸机程序分析 //SPI初始化 u8 SPI_Init(){ //SPI复位 CH_CFG0 |= B…
SPI总线架构 SPI(serial peripheral interface)串行外设接口,是一种高速,全双工,同步的通信总线.采用主从模式(master slave)架构,支持多个slave,一般仅支持一个master. SPI信号线 SPI接口共有4根信号线,分别是:设备选择线(SS).时钟线(SCK).串行输出数据线(MOSI),串行输入数据线(MISO). 数据传输过程 主节点通过MOSI线输出数据,从节点在SIMO处从主节点读取数据.同时也在通过SOMI输出MSB(最高位),主节点会…
IIC子系统架构 device driver层: 1.device driver,由用户开发. 2.i2c-dev由内核实现,但是需要配合应用模式驱动才能使用. i2c core层: 1.总线驱动,也叫控制器驱动.实现对i2c控制器的操作方法. 2.i2c核心.关联设备驱动和总线驱动,提供设备的注册和注销方法. I2C控制器驱动 开发I2C设备驱动的方法有两种,一种是自己写驱动,另一种是通过通用驱动来编写用户模式驱动.i2c_adapter用来描述i2c设备.i2c_algorithm用来封装传…
内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址.虚拟地址简单的来说就是程序中使用的地址.所以存在虚拟地址到物理地址之间的映射关系. Linux系统支持的虚拟地址空间由硬件来决定.例如处理器是32位,那么访问到的虚拟地址空间就是4G.0-3G是用户空间,也就是应用程序空间.3-4G是内核空间,内核空间又被划分为4个部分,第一个部分是直接映射区(3-3.896G),第二个部分是vmall…
进程与程序 1.程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体. 2.进程:是一个执行中的程序,它是一个动态的实体. 进程四要素 1.有一段程序供其执行.这段程序不一定是某个进程所专有,可以与其他进程共用. 2.有进程专用的内核空间堆栈. 3.在内核中有一个task_struct数据结构,也就是通常所说的进程控制块(PCB).有了这个数据结构,进程才能成为内核调度的一个基本单位,接受内核的调度. 4.有独立的用户空间. 如果有独立的用户空间,那么是进程:如果没独立的用户空间,…
MTD设备概述 Flash在嵌入式系统中是必不可少的,它是bootloader.Linux内核和文件系统的最佳载体.在Linux内核中引入了MTD子系统为NOR Flash和Nand FLash设备提供了统一的接口,从而使得Flash驱动的设计大为简化. MTD使用体验 把系统烧写到Nand Flash后,通过命令cat /proc/mtd可以查看到Nand Flash的不同分区.每一个分区都是一个块设备,通过命令ls -l /dev/mtd* 可以查看到不同的分区块设备. 块设备驱动系统架构…
tty概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. 1.串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备.Linux把每个串口端口都看作是一个字符设备.这些串口设备所对应的设备名称是/dev/ttySAC0,/dev/ttySAC1... 2.控制台终端(/dev/console) 在Linux系统中,计算机的输出设备通常被称为控制台终端(console),这里特指printk信息输出到的设备./dev/co…
[一跃进入C大门] 跳转方式 1.相对跳转:b或bl指令,通过计算两个地址之间的差值来给pc赋值相对跳转 2.绝对跳转:ldr指令,通过给pc直接赋值,完成绝对跳转 代码编写 1.在汇编代码中直接使用绝对跳转,跳转到C代码中,然后在C代码中通过点亮LED来验证 2.210在跳转到C程序时,需要注意复制代码时,要跳过校验信息.要不然跳转到内存时,前16个字节为头信息,整个起始地址向后偏移了16个字节,就找不到正确地址了 [C与汇编混合编程] 为什么需要C与汇编混合编程 1.汇编语言:执行效率高,编…