- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 linux下MMC/SD/SDIO驱动系列之四 ---- SDIO的识别与操作
从上篇文章的最后,我们知道host在扫描卡的过程中,其识别的顺序为SDIO SD MMC,并且从它的注释可以看出,这个顺序是很重要的。那这篇文章,我们就看看SDIO的识别过程,它对应的函数就是mmc_attach_sdio(host) (函数位于文件drivers/mmc/core/sdio.c) 这个函数大概来说做了如下的工作
2013-11-21 15:32:54 29630 7
原创 linux下MMC/SD/SDIO驱动系列之三 ---- host注册过程(二)
上篇文章说到了探测函数sdhci_s3c_probe,现在就来仔细分析这个函数的作用 在分析代码之前,先简要的概括一下这个函数的功能: 1、既然是讲host的注册,那么首先必须构造出一个host,这个host就是通过sdhci_alloc_host函数来构造出来的,它是一个struct sdhci_host类型的结构体。同时,也通过mmc_alloc_host函数构造了一个str
2013-10-24 00:14:47 13802 4
原创 linux下MMC/SD/SDIO驱动系列之二 ---- host注册过程(一)
上篇文章说到了MMC/SD/SDIO(以下简称MMC)的驱动从大的方面来说分为主设备驱动和从设备驱动,那本文就来详细的讲述主设备驱动注册的过程。 MMC主设备(也就是host)指的是集成于CPU内部的MMC controller,笔者用的是4412芯片,从datasheet可以看出,里面集成了四个MMC controller,分别是mmc0,mmc1,mmc2,mmc3。
2013-10-18 01:22:18 12623 1
原创 linux下MMC/SD/SDIO驱动系列之一 ---- 概述
最近在研究WIFI驱动,驱动模块为broamd4330,基于SDIO接口,所以趁机研究了一下内核中对于SDIO设备的注册。 (我使用的linux内核版本为3.2.0 硬件为samsung 4412) 在介绍内核之前,有必要先了解一下MMC SD SDIO三种卡,从发展历程来看,是先有MMC卡,后来有SD卡,这两种都是纯粹的存储
2013-10-16 20:43:22 12734 1
原创 uboot系列之-----新增命令
看了《UBOOT命令的实现》,就知道要想往Uboot里面增加一条自己的命令,就需要通过U_BOOT_CMD宏定义,将命令写进.u_boot_cmd段。下面详细讲解如何新增加一个命令justtest1、 在include/configs/$(BOARD).h文件里增加如下宏定义 #defineCONFIG_CMD_JUSTTEST 表示该文件支持justtest命令2
2013-01-15 22:45:34 1793
原创 uboot系列之-----命令的处理过程(源码)
在uboot运行到第二个阶段后,会进入到main_loop函数中,该函数有一个作用就是处理用户所输入的命令,下面详细分析命令处理的流程:一、命令的结构及定义在uboot里面,命令的创建是通过宏定义U_BOOT_CMD来实现的,该宏定义在文件include/command.h文件中, #define U_BOOT_CMD(name,maxargs,rep,cmd,us
2013-01-12 23:09:31 1824
原创 uboot系列之-----代码重定位(源码)
从上一篇我们知道,board_init_f函数的最后返回到relocate_code,调用该函数的原型是Relocate_code(addr_sp,id,addr),再讲一下三个参数的意义:addr_sp是地址空间里面堆栈的首地址id是存储gd_t类型全局参数的首地址addr是uboot的重定位地址,也就是加载地址这三个参数的值都是在board_init_f函数里面定义好了的(
2013-01-06 20:56:28 3438 2
原创 uboot系列之-----板级初始化(源码)
接上篇,分析uboot对开发板的初始化,入口在arch/arm/lib/board.c文件里面的 board_init_f函数voidboard_init_f (ulong bootflag){ …… gd = (gd_t *)((CONFIG_SYS_INIT_SP_ADDR) & ~0x07); //gd是Uboot里面用于存储全局
2013-01-05 22:09:46 4078 3
原创 uboot系列之------CPU初始化概述(源码)
这一篇主要讲述uboot对于CPU的初始化 Uboot源码开始的地方可以参考链接文件u-boot.lds里面的.text段的第一句话,对于2010.12版本的uboot(基于4412平台),其内容是这样的:.text : { arch/arm/cpu/armv7/start.o
2012-12-29 00:07:01 5826 1
原创 uboot系列之-----顶层Makefile分析(三)
接上篇分析,本篇主要分析目标文件以及相关的依赖文件ALL += $(obj)u-boot.srec $(obj)u-boot.bin$(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)all: $(ALL)当用make命令编译时,执行的就是这个all变量$(obj)u-boot.hex: $
2012-12-17 23:16:11 4175 2
原创 uboot系列之-----顶层Makefile分析(二)
继续上篇,这篇主要分析跟编译和连接库文件相关的变量ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))……else # !config.mkall $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \$(obj)u-boot.img $(o
2012-12-13 11:09:18 4422 3
原创 uboot系列之-----顶层Makefile分析(一)
这篇主要分析Makefile文件开头部分对与一些编译环境以及编译路径等变量的初始化 VERSION = 2010PATCHLEVEL = 12SUBLEVEL =EXTRAVERSION =ifneq "$(SUBLEVEL)"""U_BOOT_VERSION =$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)e
2012-12-08 14:51:18 5089
原创 uboot系列之----Uboot配置过程详细分析
继上篇博客,详细的分析顶层目录下的mkconfig文件APPEND=no # Default: Create new config fileBOARD_NAME="" # Name to print in make outputTARGETS="" arch=""cpu=""board=""vendor=""soc=""opti
2012-12-04 22:22:05 5580 4
原创 uboot 系列之-----uboot配置流程分析
该uboot系列的版本是uboot-2010.12,基于samsung的4412芯片Uboot里面的字母u代表了“通用”的意思,因此,为了编译出符合特定CPU,特定电路板的启动代码,就必须首先进行配置,告诉编译器需要编译成什么样的体系架构,什么样的cpu等等。下面以4412为例,讲述配置过程配置命令为make smdk4412_config,我们来看这条命令是如何执行的。首先进
2012-12-03 16:53:24 4152 6
原创 博文概述
之前一直做单片机,偶然有机会接触嵌入式方面,就选择了跟硬件比较接近的uboot和内核方面,准备做个学习笔记系列,包括Uboot系列和内核系列,主要分析uboot源码和内核源码。不过与其他分析不同的是,此博文将从由单片机转向嵌入式的初学者角度,侧重于理论与实际的结合,记录本人学习uboot以及内核的过程与理解,也希望初学者或大牛门共同探讨,批评指正。
2012-11-28 09:12:34 1121
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人