TCC8900中关于SD卡的注意事项

转载 2012年03月24日 20:00:08

TCC8900具有8个SD卡接口(Port),其中它们与GPIO复用:

----------------------------------------------------------------------------------------------------------------

* GPIOB[0-7] =  SD_Port5[0-7],  GPIOB[12]=SD_CMD_Port5, GPIOB[13]=SD_CLK_Port5

----------------------------------------------------------------------------------------------------------------

* GPIOB[21-28] =  SD_Port6[0-7],  GPIOB[29]=SD_CMD_Port6, GPIOB[30]=SD_CLK_Port6

----------------------------------------------------------------------------------------------------------------

* GPIOC[14-21] =  SD_Port0[0-7],  GPIOC[23]=SD_CMD_Port0, GPIOC[22]=SD_CLK_Port0

----------------------------------------------------------------------------------------------------------------

* GPIOE[12-19] =  SD_Port2[0-7],  GPIOE[21]=SD_CMD_Port2, GPIOE[20]=SD_CLK_Port2

----------------------------------------------------------------------------------------------------------------

* GPIOE[28-31] =  SD_Port7[0-3],  GPIOE[26]=SD_CMD_Port7, GPIOE[27]=SD_CLK_Port7

----------------------------------------------------------------------------------------------------------------

* GPIOE[8-11] =  SD_Port4[0-3],  GPIOE[7]=SD_CMD_Port4, GPIOE[6]=SD_CLK_Port4

----------------------------------------------------------------------------------------------------------------

* GPIOF[0-7] =  SD_Port3[0-7],  GPIOF[8]=SD_CMD_Port3, GPIOF[9]=SD_CLK_Port3

----------------------------------------------------------------------------------------------------------------

* GPIOF[18-21] =  SD_Port1[0-3],  GPIOF[22]=SD_CMD_Port1, GPIOF[23]=SD_CLK_Port1

----------------------------------------------------------------------------------------------------------------

从上可以看出,Port1、Port4、Port7的数据宽度为4位,其他的port则都为8位,8个端口主要由三个控制寄存器支配,它们分别是:

0xF05A0000   SD/MMC Controller 0

0XF0FA0200   SD/MMC Controller 1

0XF0FA0800   SD Port Configure Registers

通过配置 0xF0FA0800 的寄存器,可以将SD/MMC_Controller0和SD/MMC_Controller1分配到8个Port中的任意一个,例如在

Telechips的EVB评估板上的Linux平台中,MMC_Controller0分配到了Port2,MMC_Controller1分配到了Port5。

在寄存器组织方面,SD以MMC_Controller为中心分为两个核心(分别为Core0和Core1),每个核心分别有两个slot,它们的地址分配情况是:

而对于0XF0FA0800对应的 SD Port Configure Registers则除了0XF0FA0800以外,也对应地分为四组:

另外,SD卡的数据传输还涉及到DMA的问题,这与TCC8900的DMA设置密切相关。

在TCC8900-Linux的内核中可以从文件:

arch/arm/mach-tcc8900/include/mach/TCC89x_Physical.h看到如下的内存定义:

#define HwSDCORESLOT0_BASE  *(volatile unsigned long *) 0xF05A0000

#define HwSDCORESLOT1_BASE  *(volatile unsigned long *) 0xF05A0100

#define HwSDCORESLOT2_BASE  *(volatile unsigned long *) 0xF05A0200

#define HwSDCORESLOT3_BASE  *(volatile unsigned long *) 0xF05A0300

//Channel Control Register

#define HwSDCHCTRL_BASE  *(volatile unsigned long *) 0xF05A0800

在Linux中,4个slot被做成了平台设备,供用户选配,可以在文件:

arch/arm/mach-tcc8900/devices.c

#if defined(CONFIG_MMC_TCC_SDHC_CORE0_SLOT0)|| defined(CONFIG_MMC_TCC_SDHC_CORE0_SLOT0_MODULE)

static u64 tcc8900_device_mmc_core0_slot0_slot0_dmamask=0xffffffffUL;

static struct resource tcc8900_mmc_core0_slot0_resource[]={

   [0]={

       .start = 0xF05A0000,

       .end   =  0xF05A00FF,

       .flags  =  IORESOURCE_MEM,

   },

   [1]={

        .start  = INT_SD0_SLOT0,

        .end    = INT_SD0_SLOT0,

        .flags   = IORESOURCE_IRQ,

   },

}

#endif

从上述源码看出系统为每个SD/MMC的slot分配了一段地址(就是对应寄存器地址域)以及一个中断,

同时,也可以看出TCC89XX支持两路SD同时传输数据。


SD卡 SPI模式读写要点

最近用FPGA实现了从SD卡读数据的基本功能,一些要点:1.sd卡上电后,先拉低CS,发送至少74个clock,然后拉高CS,发送至少74个clock。2.发送CMD0,SD卡回应0x013.重复发送...
  • hulifox007
  • hulifox007
  • 2010年10月19日 05:24
  • 5453

BeagleBone折腾记(二):烧录SD卡系统

BeagleBone折腾记(二):烧录SD卡系统BeagleBone折腾记二烧录SD卡系统 准备工作 开始 格式化SD卡 写入镜像 上板测试 开启远程桌面 开机自启vncserver 结语准备工作材料...
  • u010343083
  • u010343083
  • 2015年06月10日 16:39
  • 1362

Android sd卡状态监听,文件搜索,媒体文件刷新

整理一下关于sd卡相关知识点,主要包括sd卡状态监听,sd卡文件搜索,sd卡媒体数据库(系统支持媒体类型)刷新模块: 一:sd卡状态进行监听 有时程序进行外部数据读取和写入...
  • shanghaibao123
  • shanghaibao123
  • 2015年03月13日 17:06
  • 751

linux下SD卡创建分区

一、对SD卡分区 1.将SD卡连接到PC机上,查看其设备名称 输入# dmesg|tail -20 ...... [16392.819300] sd 16:0:0:0: [sdb] 31291...
  • helonglong88
  • helonglong88
  • 2016年04月22日 22:52
  • 1225

bootloader---27.uboot中SD初始化及读写分析

bootloader---27.uboot中SD初始化及读写分析
  • wangcong02345
  • wangcong02345
  • 2016年08月30日 11:16
  • 769

SD卡总线知识介绍

转自  http://www.dz3w.com/info/interface/0075700.htmlSD卡总线知识介绍SD总线允许强大的1线到4线数据信号设置。当默认的上电后,SD卡使用DAT0。 ...
  • coder_jack
  • coder_jack
  • 2011年07月28日 19:55
  • 1339

多媒体卡和SD卡的卡识别过程

多媒体卡和SD卡的卡识别过程是有区别的;   对于多媒体卡,卡识别过程以时钟频率Fod开始,所 有SDIO_CMD输出为开路驱动,允许在这个过程中的卡的并行连接,识别过程如下: 1.  总线被激活 2...
  • cmw1020
  • cmw1020
  • 2015年02月14日 15:30
  • 683

SD卡的命令格式及解析

SD卡的命令格式: SD卡的指令由6字节(Byte)组成,如下:Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第...
  • andro_wei
  • andro_wei
  • 2011年04月26日 13:12
  • 8294

SD卡的读写和加解密

一、概述SD卡全称为 Secrue Digital Memory Card,具有轻巧、可加密、传输速度高、适用于手持设备使用等优点。 二、总线接口SD需要高速读写,同时也要使手持等嵌入式设备能方便使用...
  • zhongyh
  • zhongyh
  • 2006年12月12日 23:33
  • 14274

SD卡启动详解

主流的外存设备介绍    内存和外存的区别: 一般是把这种RAM(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存; 把ROM(read only ...
  • czg13548930186
  • czg13548930186
  • 2016年10月16日 20:33
  • 2413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCC8900中关于SD卡的注意事项
举报原因:
原因补充:

(最多只允许输入30个字)