ÔÆÌ⺣ - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

µ±Ç°Î»ÖãºÊ×Ò³ > LinuxÉ豸Çý¶¯×ÓϵͳµÚ¶þµ¯ - SD¿¨

LinuxÉ豸Çý¶¯×ÓϵͳµÚ¶þµ¯ - SD¿¨

  • 62 ´ÎÔĶÁ
  • 3 ´ÎÏÂÔØ
  • 2025/7/13 7:16:05

struct mmc_host_ops {

void (*request)(struct mmc_host *host, struct mmc_request *req); // ºËÐĺ¯Êý£¬Íê³ÉÖ÷¿ØÖÆÆ÷ÓëSD¿¨É豸֮¼äµÄÊý¾ÝͨÐÅ

void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios); // ÅäÖÃʱÖÓ¡¢×ÜÏß¡¢µçÔ´¡¢Æ¬Ñ¡¡¢Ê±ÐòµÈ

int (*get_ro)(struct mmc_host *host);

void (*enable_sdio_irq)(struct mmc_host *host, int enable); };

struct mmc_bus_ops {

void (*remove)(struct mmc_host *); // °Î³öSD¿¨µÄ»Øµ÷º¯Êý

void (*detect)(struct mmc_host *); // ̽²âSD¿¨ÊÇ·ñ»¹ÔÚSD×ÜÏßÉϵĻص÷º¯Êý void (*suspend)(struct mmc_host *); void (*resume)(struct mmc_host *); };

struct mmc_card {

struct mmc_host *host; /* the host this device belongs to */ struct device dev; /* the device */

unsigned int rca; /* relative card address of device */ unsigned int type; /* card type */ unsigned int state; /* (our) card state */ unsigned int quirks; /* card quirks */ u32 raw_cid[4]; /* raw card CID */ u32 raw_csd[4]; /* raw card CSD */ u32 raw_scr[2]; /* raw card SCR */ struct mmc_cid cid; /* card identification */ struct mmc_csd csd; /* card specific */

struct mmc_ext_csd ext_csd; /* mmc v4 extended card specific */ struct sd_scr scr; /* extra SD information */

struct sd_switch_caps sw_caps; /* switch (CMD6) caps */ unsigned int sdio_funcs; /* number of SDIO functions */ struct sdio_cccr cccr; /* common card info */

struct sdio_cis cis; /* common tuple info */ ... ... };

mmc_card½á¹¹ÌåÄÚµÄÊý¾Ý½á¹¹Ö÷Òª´æ·ÅSD¿¨µÄÐÅÏ¢£¬ÆäÖÐRCA, CID, CSD, SCRΪSD¿¨ÄÚ²¿µÄ32λ¼Ä´æÆ÷¡£

2.1.2 struct mmc_request ½á¹¹Ìåmmc_request¶¨ÒåÓÚ/include/linux/mmc/core.h£¬ËüÖ÷Òª´æ·ÅÁ½´óÊý¾Ý½á¹¹µÄÖ¸Õ룬·Ö±ðÊÇcmdºÍdata£¬¹ËÃû˼Ò⣬һ¸öΪָÁһ¸öΪÊý¾Ý£¬Ò²¾ÍÊÇ˵£¬mmc_request½á¹¹Ìå´æ·ÅÁ˽øÐÐÖ÷¿ØÖÆÆ÷Óësd¿¨¼äͨÐÅËùÐèÒªµÄÖ¸ÁîºÍÊý¾Ý£¬struct mmc_request, struct mmc_command *cmd, struct mmc_data *dataÈýÕßÖ®¼äµÄ¹ØÏµÈçÏÂËùʾ£¬

struct mmc_request { struct mmc_command *cmd; struct mmc_data *data; struct mmc_command *stop;

void *done_data; /* completion data */

void (*done)(struct mmc_request *);/* completion function */ };

˵µ½½á¹¹Ìåmmc_commandºÍmmc_data£¬¾Í±ØÐë˵˵SD¿¨µÄЭÒéÁË¡£ 1) ÎïÀí½á¹¹

SD¿¨ÓÐ9¸öpin½Å£¨micro-SDΪ8¸ö£¬ÉÙÒ»¸ö½ÓµØpin½Å£©£¬ÈçͼËùʾ£¬

SDµÄÊý¾Ý´«Ê䷽ʽÓÐÁ½ÖÖ£¬ÆÕͨSDģʽºÍSPIģʽ£¬ÒÔSDģʽΪÀý£¬9¸öpin½Å·Ö±ðÊÇVDD,VSS,CLK£¬ÒÔ¼°ÎÒÃÇÐèÒª¹Ø×¢µÄÒ»¸ùÖ¸ÁîÏßCMD£¬4¸ùÊý¾ÝÏßDAT0~DAT3¡£ 2) ´«Êäģʽ

Ê×ÏÈÓÉÖ÷»úÏòSD¿¨·¢ËÍÃüÁîcommand£¬µÈ´ýSD¿¨µÄ»Ø¸´response£¬Èç¹û³É¹¦ÊÕµ½»Ø¸´£¬Ôò½øÐÐÊý¾Ý´«Êä¡£ÆäÖУ¬Ö¸ÁîÏߺÍÊý¾ÝÏßÉÏ´«ÊäµÄÖ¸ÁîºÍÊý¾Ý¶¼Òª×ñÑ­ÏàÓ¦µÄЭÒé¸ñʽ¡£

3) Ö¸Áî¸ñʽ

ËÑË÷¸ü¶à¹ØÓÚ£º LinuxÉ豸Çý¶¯×ÓϵͳµÚ¶þµ¯ - SD¿¨ µÄÎĵµ
  • ÊÕ²Ø
  • Î¥¹æ¾Ù±¨
  • °æÈ¨ÈÏÁì
ÏÂÔØÎĵµ10.00 Ôª ¼ÓÈëVIPÃâ·ÑÏÂÔØ
ÍÆ¼öÏÂÔØ
±¾ÎÄ×÷Õߣº...

¹²·ÖÏí92ƪÏà¹ØÎĵµ

Îĵµ¼ò½é£º

struct mmc_host_ops { void (*request)(struct mmc_host *host, struct mmc_request *req); // ºËÐĺ¯Êý£¬Íê³ÉÖ÷¿ØÖÆÆ÷ÓëSD¿¨É豸֮¼äµÄÊý¾ÝͨÐÅ void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios); // ÅäÖÃʱÖÓ¡¢×ÜÏß¡¢µçÔ´¡¢Æ¬Ñ¡¡¢Ê±ÐòµÈ int (*get_ro)(struct mmc_host *host); void (*enable_sdio_irq)(struct mmc_host *host, int enable); }; struct mmc_bus_ops { void (*remove)(struc

¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩
µ¥Æª¸¶·ÑÏÂÔØ
ÏÞÊ±ÌØ¼Û£º10 Ôª/·Ý Ô­¼Û:20Ôª
VIP°üÔÂÏÂÔØ
ÌØ¼Û£º29 Ôª/Ô ԭ¼Û:99Ôª
µÍÖÁ 0.3 Ôª/·Ý ÿÔÂÏÂÔØ150·Ý
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
VIP°üÔÂÏÂÔØ
ÌØ¼Û£º29 Ôª/Ô ԭ¼Û:99Ôª
µÍÖÁ 0.3 Ôª/·Ý ÿÔÂÏÂÔØ150·Ý
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£ºfanwen365 QQ£º370150219
Copyright © ÔÆÌ⺣ All Rights Reserved. ËÕICP±¸16052595ºÅ-3 ÍøÕ¾µØÍ¼ ¿Í·þQQ£º370150219 ÓÊÏ䣺370150219@qq.com