自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 arm linux 临时页表的建立

本小节主要针对Android启动过程中kernel的启动进行说明,kernel的启动涉及知识太多,不可能在一节中进行足够的讲解,本节先对汇编部分进行解析。linux kernel的主要特点之一就是运行在虚拟地址空间上,但是怎么才能实现物理地址到虚拟地址空间的切换是本节关注的重点。本文使用的kernel版本为4.4。bootloader跳转到kernel之前需要保证 MMU = off, D-cac

2017-06-26 21:11:15 2306 2

转载 usb之枚举

转载自http://blog.csdn.net/myarrow/article/details/82700291. 枚举是什么?       枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。       USB架构中, hub负责检测设备的连

2017-06-22 21:24:13 578

原创 linux clock

linux kernel在3.4之后加入了CCF(common clock framework)来统一管理clock,对外提供了统一的接口供其它模块调用,对内封装了clock驱动。linux的clock是基于provider/consumer模型的。本文叙述的顺序是先对clock的基本原理进行说明,然后对CCF和clock驱动进行解析,最后是外部模块的调用实例。1 原理clock是设备

2017-06-20 20:37:40 1978

原创 HDMI协议解析

本文从软件工程师角度对HDMI spec进行解析,基于的spec版本为1.4,也是设备支持最多最成熟的版本,目前最新版本为2.0。1 概述HDMI(High-Definition Multiface Interface)是Hitachi, Panasonic, Philips, SiliconImage, Sony, Thomson, Toshiba几家公司共同发布的一款音视频传输协议,主要用于DV

2017-06-18 14:19:27 60125 7

原创 Android启动流程(一)

本章节内容是基于手机平台的android启动流程进行解析,不同厂商的手机平台启动流程也都大体相似,涉及的代码大多开源,可以在相关社区进行下载。 启动顺序为: 1. ROM启动 2. spl 3. uboot 4. kernel 5. Andriod 我也将按照上述顺序对启动流程进行解析,本小节首先介绍ROM启动,spl和uboot。1 ROM启动手机SOC芯片内部一般都固

2017-06-17 15:46:39 1379

转载 I2C设备驱动(四)-- 调试问题

1 i2c死锁异常现象:master设备复位后,不能对slave进行读写操作,总线表现为SCL为高,SDA一直为低 原因:master与slave进行通信时,正好发生打算发第9个时钟,此时SCL为高,而从开始拉低SDA为低做准备(作为ACK信号),等待SCL变低后,从再释放SDA为高。如果此时正好master复位,master SCL还没来得及变低,直接变成高电平,此时slave还在等待SCL变低

2017-06-10 16:10:13 790

原创 I2C设备驱动(三)--linux i2c驱动框架

1 体系结构linux的i2c体系由以下三部分组成:(1)i2c核心由linux内核提供,定义基本数据结构,实现i2c驱动和设备的注册、注销,通信方法等。与设备无关。(2)i2c控制器驱动一般由soc设备厂商提供,主要实现i2c_adapter数据结构和通信方法数据结构i2c_algorithm。实现i2c master功能,也是本小节进行介绍的重点。(3)i2c设备驱动一般由外设厂商提供,主要实现

2017-06-10 15:55:13 6568 2

原创 I2C设备驱动(二)

I2C设备驱动(二)本小节内容基于单片机平台的firmware开发,也可用于非保护模式运行的操作系统内的开发。 1. GPIO模拟//function: set_scl_high//description: static void set_scl_high ( void ){ uint16_t volatile timeout = SCL_TIMEOUT; SET_SCL;

2017-06-10 13:46:42 849

空空如也

空空如也

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

TA关注的人

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