详细介绍一下MMC卡、SD 卡、SDIO卡以及 CE-ATA 设备 
时间: 2023-06-03 18:01:27 浏览: 29
MMC卡(Multimedia Card)是一种闪存卡存储设备,由联合电子、三星电子和东芝公司联手开发,主要应用于数字相机、手机、MP3和PDA等设备。它采用NAND闪存存储技术,读写速度较快,数据可靠性高,存储容量较大,同时具有低功耗、小尺寸等优点。
SD卡(Secure Digital Card)是一种安全数字存储卡,由Toshiba、SanDisk和Panasonic公司联合开发,主要应用于手机、相机、嵌入式系统等设备。类似于MMC卡,SD卡也采用闪存存储技术,读写速度快,数据可靠性高,存储容量较大,同时还具备版权保护、写保护等安全功能。
SDIO卡(Secure Digital Input/Output Card)是SD卡的扩展,主要用于扩展设备的I/O接口,例如蓝牙、Wi-Fi、GPS等模块。SDIO卡同时支持I/O和存储功能,具有高扩展性和灵活性。
CE-ATA(Consumer Electronics – Advanced Technology Attachment)是一种专门为嵌入式消费电子设备设计的接口标准,主要用于连接各种数字设备。相比于传统的ATA接口,CE-ATA具有更小的体积和低功耗的特点,适用于小型数字设备。
相关问题
MMC卡、SD 卡、SDIO卡以及 CE-ATA 设备的区别
这些设备的区别在于它们的接口标准和应用场景。MMC(Multi Media Card)是一种内存卡标准,SD(Secure Digital)卡是一种基于MMC标准的格式,SDIO(Secure Digital Input Output)卡是一种带有I/O扩展功能的SD卡,CE-ATA(Consumer Electronics-Advanced Technology Attachment)则是一种专门针对消费电子设备的串行ATA(SATA)标准。它们的主要区别在于速度、容量、功耗、可靠性和价格等方面,具体使用时需要根据实际需求进行选择。
rk3308 sdio 配置驱动sd 卡 设备树配置和驱动配置
RK3308 SoC 支持SDIO接口,可以通过SDIO接口连接SD卡。下面是SDIO SD卡设备树配置和驱动配置的步骤:
1. 设备树配置
在设备树中添加SDIO节点,配置SDIO相关的属性。例如:
```
sdmmc: sdmmc@ff140000 {
compatible = "rockchip,rk3308-sdmmc";
reg = <0x0 0xff140000 0x0 0x10000>;
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru SCLK_SDMMC>;
clock-names = "clk_sdmmc";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4 &sdmmc_bus8>;
pinctrl-1 = <&sdmmc_clk_sleep &sdmmc_cmd_sleep &sdmmc_bus4_sleep &sdmmc_bus8_sleep>;
bus-width = <4>;
status = "okay";
};
```
其中,`compatible`属性是设备树中的兼容性属性,`reg`属性是SDIO控制器的寄存器地址和大小,`interrupts`属性是中断号,`clocks`属性是时钟节点,`pinctrl-names`和`pinctrl-0`属性是管脚配置,`bus-width`属性是总线宽度,`status`属性是设备状态,这里设置为"okay"表示设备可用。
2. 驱动配置
在内核中添加SDIO驱动,并配置SDIO控制器和SD卡之间的通信。例如:
```
static struct sdhci_pltfm_data rk3308_sdhci_pdata = {
.ops = &rk3308_sdhci_ops,
.clk = RK3308_SDMMC_CLK,
.cd_gpio = -1,
.cd_inverted = true,
};
static const struct sdhci_ops rk3308_sdhci_ops = {
.set_clock = rk3308_sdhci_set_clock,
.set_bus_width = rk3308_sdhci_set_bus_width,
.set_uhs_signaling = rk3308_sdhci_set_uhs_signaling,
.send_command = rk3308_sdhci_send_command,
.reset = rk3308_sdhci_reset,
.get_ro = rk3308_sdhci_get_ro,
};
static const struct of_device_id rk3308_sdhci_of_match[] = {
{ .compatible = "rockchip,rk3308-sdmmc" },
{}
};
MODULE_DEVICE_TABLE(of, rk3308_sdhci_of_match);
static struct platform_driver rk3308_sdhci_driver = {
.driver = {
.name = "rk3308-sdhci",
.of_match_table = rk3308_sdhci_of_match,
},
.probe = rk3308_sdhci_probe,
.remove = rk3308_sdhci_remove,
};
static int __init rk3308_sdhci_init(void)
{
return platform_driver_register(&rk3308_sdhci_driver);
}
static void __exit rk3308_sdhci_exit(void)
{
platform_driver_unregister(&rk3308_sdhci_driver);
}
module_init(rk3308_sdhci_init);
module_exit(rk3308_sdhci_exit);
```
其中,`sdhci_pltfm_data`结构体是SDHCI平台数据,`sdhci_ops`结构体是SDHCI操作函数,`of_device_id`结构体是设备树匹配信息,`platform_driver`结构体是平台驱动,`rk3308_sdhci_init`和`rk3308_sdhci_exit`是驱动初始化和卸载函数。具体实现可以参考内核源码中的SDHCI驱动实现。
以上是SDIO SD卡设备树配置和驱动配置的基本步骤,需要根据具体的系统和硬件进行适当调整和修改。
相关推荐
















