- 博客(48)
- 资源 (7)
- 收藏
- 关注
原创 [sd card] mmc硬件总线扫描流程(以sd card为例)
一、扫描mmc硬件总线扫描mmc硬件总线,也就是检测mmc硬件总线上是否有挂载card。更加通俗的,就是卡槽上是否有插入card。1、扫描mmc硬件总线的时机mmc core在如下情况下会去扫描mmc硬件总线:启动一个host的时候而调用mmc_detect_change 当启动一个host的时候,并不知道当前是否有card插入,此时需要调用mmc_detect_change来假设card插入状
2017-03-18 14:16:37
9782
原创 [emmc] emmc总线设置
一、说明1、设置总线时需要设置的内容时钟频率 host需要提供给emmc对应的时钟。如上述所说,不同的总线速度模式对应不同的最大时钟频率。 只需要设置host侧即可。总线速度模式的设置 这是host和emmc card通讯的一种时序规范,因此,host和emmc的总线速度模式必须匹配起来才能正常通讯。 需要设置host侧和emmc侧。总线宽度模式的设置 host和emmc通讯的DAT
2017-03-13 21:56:57
18375
3
原创 [sd card] mmc_blk层为sd card创建块设备流程
一、块设备框架以下内容摘自http://blog.csdn.net/jianchi88/article/details/7212370.1、块设备框架图块设备框架图2、说明各个层次说明由通用块层(Generic Block Layer)负责维持一个I/O请求在上层文件系统与底层物理磁盘之间的关系。在通用块层中,通常用一个bio结构体来对应一个I/O请求。在Linux中,驱动对块设备的输入或输出(
2017-03-10 19:53:59
4992
原创 [sd card] sd card块设备(mmc_blk)读写流程学习笔记
零、说明前面介绍完sd card的协议中的初始化之后,接下来就是如何将sd card实现为一个块设备以及其读写流程的实现。 对应代码在drivers/mmc/card目录下block.c 、queue.c中。先研究sd card作为一个块设备的读写流程。 在学习sdcard块读写的过程中主要围绕以下几个问题进行学习:关于sd card 读写地址的问题?向mmc core发起mmc读写请求的接
2017-03-08 21:49:37
5952
原创 [sd card] sd card初始化流程
以SD 3.0为例。 建议先参考《SD card初始化时的总线设置》。一、sd card初始化流程思路说明通过《SD_Ver3.00_Final_090416》协议中“4.2 Card Identification Mode ”和“4.3 Data Transfer Mode ”来进行说明。1、sd card操作模式和卡状态通过sd card有如上card状态以及对应的操作模式。inactive
2017-03-06 23:21:51
7407
原创 [sd card] SD card初始化时的总线设置
==============================================================零、在sd card初始化过程中,对于bus主要设置以下东西1、时钟,输出频率2、工作电压(注意和信号电压区分开来) 如下范围: (1)MMC_VDD_165_195 0x00000080 /* VDD
2017-03-05 15:42:09
7737
1
原创 [mmc subsystem] host(第四章)——host实例(sdhci-msm说明)
一、说明sdhci-msm是指高通的mmc host,其使用了标准SDHC标准。故可以使用前面说的《host(第二章)——sdhci》和《host(第三章)——sdhci-pltfm说明》的接口。 后续代码以msm8916平台的host实现以及linux 4.6.0版本中的sdhci-msm的实现为例,这部分代码都是开源的。 由于有一些寄存器内容需要文档的支撑但我们并没有,所以这里只是简单地介绍
2017-02-16 21:52:44
3283
原创 [mmc subsystem] host(第三章)——sdhci-pltfm说明
一、sdhci-pltfm说明sdhci-pltfm并不是实际某个host的driver。 sdhci-pltfm是指在sdhci core的基础上,提供了统一对sdhci_host的必要属性进行解析和设置的方法。 但是,对于sdhci类的host driver来说,使用sdhci-pltfm并不是必须的,host driver也可以自己来实现对应的操作。 通过《host(第二章)——sdhc
2017-02-16 21:51:33
2850
1
原创 [mmc subsystem] host(第二章)——sdhci
一、sdhci core说明1、sdhci说明具体参考《host(第一章)——概述》 SDHC:Secure Digital(SD) Host Controller,是指一套sd host控制器的设计标准,其寄存器偏移以及意义都有一定的规范,并且提供了对应的驱动程序,方便vendor进行host controller的开发。 vendor按照这套标准设计host controller之后,可以直
2017-02-16 21:50:22
12798
3
原创 [mmc subsystem] host(第一章)——概述
一、host简单说明host,也可以理解为host controller,是指mmc总线上的主机端,mmc总线的控制器,每个host controller对应一条mmc总线。host controller会控制命令线、数据线和时钟线,从而实现mmc总线上的通讯。 上层发送mmc请求时,就是通过host controller产生对应的mmc通讯时序,下发至mmc设备,与mmc设备通讯。注意,h
2017-02-16 21:49:09
3462
3
原创 [mmc subsystem] mmc core(第六章)——mmc core主模块
一、说明1、mmc core概述mmc core主模块是mmc core的实现核心。也是本章的重点内容。 对应代码位置drivers/mmc/core/core.c。 其主要负责如下功能:mmc core初始化,包括注册mmc bus、mm host class等等mmc host的管理和维护,包括为其他模块提供mmc_host的操作接口,如下 host的启动和停止host的占用和释放
2017-02-14 19:55:07
5734
1
原创 [mmc subsystem] mmc core(第二章)——数据结构和宏定义说明
一、host相关1、struct mmc_hoststruct mmc_host是mmc core由host controller抽象出来的结构体,用于代表一个mmc host控制器。 * 数据结构如下:struct mmc_host { struct device *parent; // 对应的host controller的device struct devic
2017-02-14 19:52:13
4651
1
原创 [mmc subsystem] mmc core(第五章)——card相关模块(mmc type card)
mmc core中,card模块的概述和功能说明
2017-02-12 14:32:08
6188
1
原创 [mmc subsystem] mmc core(第一章)——概述
一、mmc core简单说明对应代码路径为drivers/mmc/core/.0、几个概念首先要理解以下几个概念mmc host:对应物理上的mmc控制器(host controller)。对应软件中的mmc_host结构体。mmc card:对应物理上的mmc设备。对应软件中的mmc_card结构体。mmc driver:用于驱动mmc card,实现对应的实际功能。对应软件中的mmc_dr
2017-02-12 14:22:08
6590
1
原创 [project X]tiny210 操作说明(合入到主基线的版本)
本篇文章是tiny210合入project X项目主基线之后的操作说明,是[project X] tiny210 操作说明 的更新。 另外,该操作针对于initramfs格式的rootfs以及fit-uImage的uImage格式(对initramdisk和legacy uImage不支持)。零、项目说明project X项目是由wowo发起的,希望能够在一个项目中可以支持多个板子的项目。 在w
2017-02-05 11:33:44
1990
1
原创 [uboot] uboot启动kernel篇(三)——uboot解析uImage的kernel信息
bootm启动kernel的过程中解析Legacy-uImage的原理和流程。bootm启动kernel的过程中解析FIT-uImage的原理和流程。
2016-12-09 21:47:25
8638
1
原创 [uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage
一、uImage编译kernel之后,会生成Image或者压缩过的zImage。但是这两种镜像的格式并没有办法提供给uboot的足够的信息来进行load、jump或者验证操作等等。因此,uboot提供了mkimage工具,来将kernel制作为uboot可以识别的格式,将生成的文件称之为uImage。 uboot支持两种类型的uImage。Legacy-uImage FIT-uImage
2016-12-06 22:51:19
22719
6
原创 [uboot] (番外篇)uboot dm-gpio使用方法以及工作流程
uboot的dm框架下gpio的使用方法uboot的dm框架下gpio的工作流程uboot的dm框架下gpio driver的实现
2016-11-25 21:17:56
15161
7
原创 [uboot] (番外篇)uboot串口&console&stdio设备工作流程
uboot串口输出流程console工作流程stdio设备工作流程
2016-11-23 22:23:23
8811
2
原创 [uboot] (番外篇)uboot 驱动模型
uboot引入了驱动模型(driver model),这种驱动模型为驱动的定义和访问接口提供了统一的方法。提高了驱动之间的兼容性以及访问的标准型。uboot驱动模型和kernel中的设备驱动模型类似,但是又有所区别。在后续我们将驱动模型(driver model)简称为DM,其实在uboot里面也是这样简称的。这篇文章里介绍的DM的流程以及如何使用。
2016-11-19 20:19:51
42126
17
原创 [uboot] (第六章)uboot流程——命令行模式以及命令处理介绍
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2) [project X] tiny210(s5pv210)从存储设备加载代码到DDR [uboot] (第一章)uboot流程——概述 [uboot] (第二章)uboot流程——
2016-11-14 20:39:26
12726
1
原创 [uboot] (番外篇)global_data介绍
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2) [uboot] (第一章)uboot流程——概述 [uboot] (第二章)uboot流程——uboot-spl编译流程==============================
2016-11-02 22:05:49
10484
原创 [project X] tiny210(s5pv210)从存储设备加载代码到DDR
[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2) [uboot] (第一章)uboot流程——概述 [uboot] (第二章)uboot流程——uboot-spl编译流程参考文档: S5PV210-iROM-ApplicationNote-Preliminary-20091126 S5PV210_UM_REV1.1
2016-10-29 16:51:01
6844
原创 [uboot] (第三章)uboot流程——uboot-spl代码流程
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例。[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2)[uboot] (第一章)uboot流程——概述[uboot] (第二章)uboot流程——uboot-spl编译流程建议参考文章 [kernel 启动流程] (第二章)第一阶段之—
2016-10-28 16:24:14
14510
原创 [uboot] (第二章)uboot流程——uboot-spl编译流程
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2)建议先看《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,根据例子了解一下上电之后的BL0\BL1\BL2阶段,以及各个阶段的运行位置,功能。=
2016-10-27 20:40:47
19862
1
原创 [uboot] (第一章)uboot流程——概述
[uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2)建议先看《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,根据例子了解一下上电之后的BL0\BL1\BL2阶段,以及各个阶段的运行位置,功能。==============================================
2016-10-26 22:30:45
16306
4
原创 [project X] tiny210(s5pv210)上电启动流程(BL0-BL2)
建议参考文档:S5PV210-iROM-ApplicationNote-Preliminary-20091126 S5PV210_UM_REV1.1项目介绍参考 [project X] tiny210 操作说明===================================================================零、说明本文主要以友善之臂的tiny210板子作说明,
2016-10-24 22:06:04
16685
4
原创 [project X] tiny210 uboot移植进度说明
这份移植进度是当时在project X项目移植对应版本上的uboot到tiny210上的时候写的。 现在回过头来,想要整理一些uboot的移植心得和学习笔记,所以先把当时的移植进度发出来,方便后续文档整理的思路。零、项目说明project X项目是由wowo发起的,希望能够在一个项目中可以支持多个板子的项目。 在wowo的project X项目上对友善之臂tiny210的板子进行支持。 目前已
2016-10-19 22:30:55
2019
原创 [kernel 启动流程] (第七章)第一阶段之——跳转到start_kernel
零、说明本文是《[kernel 启动流程] (第一章)概述》的延伸, 阅读本文前建议先阅读《[kernel 启动流程] (第一章)概述》1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc
2016-10-19 17:42:19
6382
1
原创 [kernel 启动流程] (第六章)第一阶段之——打开MMU
零、说明本文是《[kernel 启动流程] (第一章)概述》的延伸, 阅读本文前建议先阅读《[kernel 启动流程] (第一章)概述》1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是stext的实现内容设置为SVC模式,关闭所有中断获取CPU ID,提取相应的proc
2016-10-19 15:52:39
7257
2
原创 [kernel 启动流程] (第五章)第一阶段之——临时内核页表的创建
本文是基于arm平台。例子都是以tiny210(s5pv210 armv7)为基础的。零、说明本文是《[kernel 启动流程] (第一章)概述》的延伸, 阅读本文前建议先阅读《[kernel 启动流程] (第一章)概述》1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是st
2016-10-18 16:58:03
5958
2
原创 [kernel 启动流程] (第四章)第一阶段之——dtb的验证
本文是基于arm平台。例子都是以tiny210(s5pv210 armv7)为基础的。零、说明本文是《[kernel 启动流程] (第一章)概述》的延伸, 阅读本文前建议先阅读《[kernel 启动流程] (第一章)概述》1、kernel启动流程第一阶段简单说明arch/arm/kernel/head.Skernel入口地址对应stextENTRY(stext)第一阶段要做的事情,也就是st
2016-10-12 14:48:27
7371
1
S5PV210-iROM-ApplicationNote-Preliminary-20091126
2016-10-20
arm cp15协处理器寄存器
2016-10-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人