本节目标:        学习platform机制,如何实现驱动层分离      1.先来看看我们之前分析输入子系统的分层概念,如下图所示:   如上图所示,分层就是将一个复杂的工作分成了4层, 分而做之,降低难度,每一层专注于自己的事情, 系统只将其中的核心层和事件处理层写好了,所以我们只需
在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时的初始化,中断上下文的保存和恢复,对性能要求非常苛刻的函数等。 在S3C2440的数据手册中,对各种汇编指令的作用及使用方法都有详细说明,这里只对一些常用的汇编指令进行介绍。 一、ARM寄存器介绍 1.1 32位体系 ARM 处理器在3
首先,我们应该知道一点,Mini2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的外部晶振提供频率来工作运行的,也就是说CPU、内存、UART、ADC等所有需要用到时钟频率的硬件都工作在12MHz下,而S3C2440A可以正常工作在400MHz下,可想而知两者速度相差会有多大了。 如果
在linux驱动移植-usb驱动基础中我们介绍了USB主机控制器主要有OHCI、UHCI,EHCI,xHCI,其中HCI表示Host Controller Interface。usb主机控制器通过usb根集线器和其他的usb设备相连。 在linux驱动移植-usb总线设备驱动中我们介绍了usb子系
一、SPI概述 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制
在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下.         本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpi
1.I2c主控与从设备关系   对于写操作,主控作为transmitter,从设备作为receiver 对于读操作,主控作为receiver, 从设备作为transmitter 2.I2c控制器 2.1总框图   Pclk = 50Mhz, 经过prescaler分频,可以得到SCL。 IICST
 1.硬件电路 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。如下图: SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平。   2.i2c协议规则 传输过程如下:   主控发送start讯号(S) 主控
一、I2C概述 I2C(Intel Interface Circuit,简称IIC、I2C),是应用广泛的芯片间串行扩展总线。由飞利浦公司开发用于微控制器(MCU)和外围设备(从设备)进行通信的一种总线,属于一主多从(一个主设备(Master),多个从设备(Slave))的总线结构,总线上的每个设
上一节 我们学习了:   IIC接口下的24C02 驱动分析: http://www.cnblogs.com/lifexy/p/7793686.html 接下来本节, 学习Linux下如何利用linux下I2C驱动体系结构来操作24C02   1. I2C体系结构分析 1.1首先进入linux内核
一、Mini2440地址空间 1.1 存储器控制器介绍 在之前的文章中,我们已经介绍过S3C2440自带4KB SRAM和2MB的NOR FALSH。片内4KB的内存其实是很小,为了能够运行操作系统和更大的应用程序,需要在处理器存储接口上进行扩展,如SDRAM、SRAM、ROM、FLASH等。AR
1.顺寻访问(Page Read) 下图的表格,来说明NAND FLASH内部结构,前面2K(02047)表示页数据,后边64字节(20482111)表示oob。 CPU想读取,第2048个数据,它是哪以一个? 是Page1的第0个字节。CPU使用某个地址访问数据的时候,是在页数据空间来寻址的。
nandFlash命令表 对NAND FLASH的操作需要发出命令,下面有个NAND FLASH的命令表格,那么我们可以此表格上的命令来访问我们的nandflash. 1)时序分析 上面命令表中的读id还不太直观,下图是从nand芯片手册中截取出的读id时序图: ①第一条竖线位置,发送了nCE,C
一.Steppingstone 我们知道nand没有独立地址线,cpu无法直接访问nand上的指令,所以nand不能片上执行。那么为何程序还能支持nand启动的呢? 为了支持NAND启动,S3C2440A配备了一个称为“ Steppingstone”的内部SRAM缓冲区,容量为4K。 开机时,Na
1.nandflash的原理图如下: 引脚属性见下表: 引脚名称 引脚功能 IO0~IO7 数据输入输出(命令、地址、数据共用数据总线) CLE 命令使能 ALE 地址使能 /CE 芯片使能(片选) /RE 读使能 /WE 写使能 R/B 就绪/忙输出信号(低电平表示操作还在进行中,高电平表示
在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标:        实现键盘驱动,让开发板的4个按键代表键盘中的L、S、空格键、回车键     1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备
1.准备框架 为了让程序更加好扩展,体现出”高内聚、低耦合"的特点,能够兼容各种不同型号的lcd,假如有两款尺寸大小的lcd,如何快速的在两个lcd上切换? 首先我们抽象出lcd_3.5.c和lcd_4.3.c的共同点,比如都有初始化函数init(),我们可以新建一个lcd.c,然后定义一个结构体
1.LCD控制器框图 从上图看出,S3C2440 LCD控制器用于传输视频数据并且生成必要的控制信号,如VFRAME,VLINE,VCLK,VM等。除了控制信号,S3C2440还有视频数据端口,即VD [23:0]。通过设置REGBANK(寄存器组),LCDCDMA会自动(无需CPU参与)把内存

推荐文章