各位达人好。
用mini2440开发板,在学习SD卡驱动程序时,用默认的PIO模式一切正常,但当把PIO关掉,用DMA模式传输时,就发生问题。 具体如下。
把#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not set
# CONFIG_MMC_AT91 is not set
# CONFIG_MMC_ATMELMCI is not set
CONFIG_MMC_S3C=y
# CONFIG_MMC_S3C_HW_SDIO_IRQ is not set
CONFIG_MMC_S3C_PIO=y
# CONFIG_MMC_S3C_DMA is not set# CONFIG_MMC_S3C_PIODMA is not set
改为
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not set
# CONFIG_MMC_AT91 is not set
# CONFIG_MMC_ATMELMCI is not set
CONFIG_MMC_S3C=y
# CONFIG_MMC_S3C_HW_SDIO_IRQ is not set
# CONFIG_MMC_S3C_PIO=y
CONFIG_MMC_S3C_DMA=y# CONFIG_MMC_S3C_PIODMA is not set
编译,模块加载,插入SD卡后,出现如下错误消息。
mmc0: new SDHC card at address f1dc
mmcblk0: mmc0:f1dc SU16G 14.8 GiB
mmcblk0:
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
p1
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000c dsta=0x00000000 fsta=0x00000000 dcnt:0x00080000 result:0x00000002 toGo:17
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000c dsta=0x00000000 fsta=0x00000000 dcnt:0x00080000 result:0x00000002 toGo:17
mmcblk0: retrying using single block read
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000c dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0xb00, card status 0x400900
mmcblk0: error -16 transferring data, sector 8791, nr 128, card status 0x400900
end_request: I/O error, dev mmcblk0, sector 8791
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000d dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0x400900, card status 0x900
mmcblk0: error -16 transferring data, sector 8792, nr 127, card status 0x900
end_request: I/O error, dev mmcblk0, sector 8792
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000d dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0x900, card status 0x900
mmcblk0: error -16 transferring data, sector 8793, nr 126, card status 0x900
end_request: I/O error, dev mmcblk0, sector 8793
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000d dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0x900, card status 0x900
mmcblk0: error -16 transferring data, sector 8794, nr 125, card status 0x900
end_request: I/O error, dev mmcblk0, sector 8794
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000d dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0x900, card status 0x900
mmcblk0: error -16 transferring data, sector 8795, nr 124, card status 0x900
end_request: I/O error, dev mmcblk0, sector 8795
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000d dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0x900, card status 0x900
mmcblk0: error -16 transferring data, sector 8796, nr 123, card status 0x900
end_request: I/O error, dev mmcblk0, sector 8796
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
dma3: loadbuffer:timeout loading buffer
s3c-sdi s3c2440-sdi: DMA FAILED: csta=0x0000000d dsta=0x00000000 fsta=0x00000000 dcnt:0x00001000 result:0x00000002 toGo:1
core_info: calling mmc_wait_for_cmd in get_card_status!!
mmcblk0: error -16 sending read/write command, response 0x900, card status 0x900
mmcblk0: error -16 transferring data, sector 8797, nr 122, card status 0x900
end_request: I/O error, dev mmcblk0, sector 8797
card_info: calling mmc_wait_for_req in mmc_blk_issue_rq!!
请大家帮忙看看怎么回事?mini2440开发板不支持DMA模式?