xor.kruger 0 3 января, 2013 Опубликовано 3 января, 2013 · Жалоба Доброго времени суток! Решил подключить к Microblaze SD/MMC карточку по SPI интерфейсу. Часть MHS файла с описание SPI: BEGIN xps_spi PARAMETER INSTANCE = xps_spi_0 PARAMETER HW_VER = 2.02.a PARAMETER C_SCK_RATIO = 16 PARAMETER C_NUM_TRANSFER_BITS = 8 PARAMETER C_BASEADDR = 0x83400000 PARAMETER C_HIGHADDR = 0x8340ffff BUS_INTERFACE SPLB = mb_plb PORT IP2INTC_Irpt = xps_spi_0_IP2INTC_Irpt PORT SCK = xps_spi_0_SCK PORT MISO = xps_spi_0_MISO PORT MOSI = xps_spi_0_MOSI PORT SS = xps_spi_0_SS END Часть DTS файла с описание SPI в котором описан MMC: xps_spi_0: spi@83400000 { #address-cells = <1>; #size-cells = <0>; compatible = "xlnx,xps-spi-2.02.a", "xlnx,xps-spi-2.00.a"; interrupt-parent = <&xps_intc_0>; interrupts = < 4 2 >; reg = < 0x83400000 0x10000 >; xlnx,family = "spartan3adsp"; xlnx,fifo-exist = <0x1>; xlnx,num-ss-bits = <0x1>; xlnx,num-transfer-bits = <0x8>; xlnx,sck-ratio = <16>; mmc-slot@0 { compatible = "mmc-spi-slot"; reg = <0>; voltage-ranges = <3300 3300>; spi-max-frequency = <3906250>; }; }; В RootFS в каталоге /dev создал mknod'ом файлы устройства spi и mmc sudo mknod mmcblk0p1 b 179 1 sudo mknod mmcblk0 b 179 0 sudo mknod spidev32766.0 c 153 7 Часть конфиг файла ядра GNU/Linux .......... # # SPI Master Controller Drivers # # CONFIG_SPI_ALTERA is not set CONFIG_SPI_BITBANG=y # CONFIG_SPI_PXA2XX_PCI is not set CONFIG_SPI_XILINX=y # CONFIG_SPI_XILINX_PS_QSPI is not set # CONFIG_SPI_XILINX_PS_SPI is not set # CONFIG_SPI_DESIGNWARE is not set # # SPI Protocol Masters # CONFIG_SPI_SPIDEV=y # CONFIG_SPI_TLE62X0 is not set # CONFIG_HSI is not set # # MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=8 CONFIG_MMC_BLOCK_BOUNCE=y # CONFIG_SDIO_UART is not set # CONFIG_MMC_TEST is not set ........... # # MMC/SD/SDIO Host Controller Drivers # # CONFIG_MMC_SDHCI is not set CONFIG_MMC_SPI=y # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_RTC_CLASS is not set # CONFIG_DMADEVICES is not set # CONFIG_AUXDISPLAY is not set CONFIG_XILINX_EDK=y # CONFIG_UIO is not set ................. При отключенной отладке SPI и ММС ядро плюется следующим: [ 3.702550] xilinx_spi 83400000.spi: master is unqueued, this is deprecated [ 3.713407] xilinx_spi 83400000.spi: at 0x83400000 mapped to 0xf0200000, irq=10 [ 3.741440] mmc_spi spi32766.0: setup: unsupported mode bits 4 [ 3.746187] mmc_spi spi32766.0: can't change chip-select polarity [ 3.770654] mmc_spi spi32766.0: SD/MMC host mmc0, no WP, no poweroff, cd polling [ 3.804369] Freeing unused kernel memory: 895k freed [ 3.834421] mmc0: error -110 whilst initialising SD card [ 3.890604] mmc0: error -110 whilst initialising MMC card Starting rcS... ++ Creating device points ++ Mounting filesystem ++ Loading system loggers ++ Starting telnet daemon rcS Complete /bin/sh: can't access tty; job control turned off / # [ 4.911704] mmc_spi spi32766.0: setup: unsupported mode bits 4 [ 4.916457] mmc_spi spi32766.0: can't change chip-select polarity [ 4.990578] mmc0: error -110 whilst initialising SD card [ 5.030569] mmc0: error -110 whilst initialising MMC card [ 6.051540] mmc_spi spi32766.0: setup: unsupported mode bits 4 [ 6.056302] mmc_spi spi32766.0: can't change chip-select polarity [ 6.130675] mmc0: error -110 whilst initialising SD card [ 6.170628] mmc0: error -110 whilst initialising MMC card [ 7.191447] mmc_spi spi32766.0: setup: unsupported mode bits 4 [ 7.196200] mmc_spi spi32766.0: can't change chip-select polarity [ 7.270577] mmc0: error -110 whilst initialising SD card С включенной отладкой: [ 3.703501] xilinx_spi 83400000.spi: registered master spi32766 (dynamic) [ 3.709220] xilinx_spi 83400000.spi: master is unqueued, this is deprecated [ 3.719393] spi spi32766.0: setup mode 0, 8 bits/w, 3906250 Hz max --> 0 [ 3.726538] xilinx_spi 83400000.spi: registered child spi32766.0 [ 3.731733] xilinx_spi 83400000.spi: at 0x83400000 mapped to 0xf0200000, irq=10 [ 3.738686] KRUGER: spi init finish [ 3.744912] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 3906250 Hz max --> 0 [ 3.752928] mmc0: clock 0Hz busmode 2 powermode 1 cs 1 Vdd 21 width 0 timing 0 [ 3.759100] mmc_spi spi32766.0: mmc_spi: power up (21) [ 3.780588] mmc0: clock 30000000Hz busmode 2 powermode 2 cs 1 Vdd 21 width 0 timing 0 [ 3.787356] mmc_spi spi32766.0: mmc_spi: power on (21) [ 3.793483] mmc_spi spi32766.0: setup: unsupported mode bits 4 [ 3.798303] mmc_spi spi32766.0: can't change chip-select polarity [ 3.804581] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 3.811645] mmc_spi spi32766.0: mmc_spi: clock to 30000000 Hz, 0 [ 3.830659] mmc_spi spi32766.0: SD/MMC host mmc0, no WP, no poweroff, cd polling [ 3.837008] mmc0: mmc_rescan_try_freq: trying to init card at 30000000 Hz [ 3.843883] mmc0: starting CMD52 arg 00000c00 flags 00000195 [ 3.865901] Freeing unused kernel memory: 895k freed [ 3.871569] mmc_spi spi32766.0: mmc_spi: CMD52, resp R2/R5 [ 3.881013] mmc_spi spi32766.0: ... CMD52 response SPI_R2/R5: resp ff04 00000000 [ 3.887585] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 3.894780] mmc0: req done (CMD52): -38: 0000ff04 00000000 00000000 00000000 [ 3.919701] mmc0: starting CMD52 arg 80000c08 flags 00000195 [ 3.931162] mmc_spi spi32766.0: mmc_spi: CMD52, resp R2/R5 [ 3.940795] mmc_spi spi32766.0: ... CMD52 response SPI_R2/R5: resp ff04 00000000 [ 3.947364] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 3.954553] mmc0: req done (CMD52): -38: 0000ff04 00000000 00000000 00000000 [ 3.990702] mmc0: starting CMD0 arg 00000000 flags 000000c0 [ 3.995240] mmc_spi spi32766.0: mmc_spi: CMD0, resp R1 Starting rcS... [ 4.011375] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 4.017440] mmc0: req done (CMD0): 0: 00000001 00000000 00000000 00000000 [ 4.042263] mmc0: starting CMD8 arg 000001aa flags 000002f5 [ 4.046805] mmc_spi spi32766.0: mmc_spi: CMD8, resp R3/R4/R7 ++ Creating device points [ 4.070936] mmc_spi spi32766.0: ... CMD8 response SPI_R3/R4/R: resp 0005 ffffffff [ 4.077601] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 4.084809] mmc0: req done (CMD8): -38: 00000005 ffffffff 00000000 00000000 [ 4.120794] mmc0: starting CMD5 arg 00000000 flags 000002e1 [ 4.125343] mmc_spi spi32766.0: mmc_spi: CMD5, resp R3/R4/R7 [ 4.145435] mmc_spi spi32766.0: ... CMD5 response SPI_R3/R4/R: resp 0005 ffffffff [ 4.152264] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 4.159174] mmc0: req done (CMD5): -38: 00000005 ffffffff 00000000 00000000 ++ Mounting filesystem [ 4.200728] mmc0: starting CMD55 arg 00000000 flags 000000f5 [ 4.205361] mmc_spi spi32766.0: mmc_spi: CMD55, resp R1 [ 4.211465] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 4.217839] mmc0: req done (CMD55): 0: 00000001 00000000 00000000 00000000 [ 4.250771] mmc0: starting CMD41 arg 00000000 flags 000000e1 [ 4.255393] mmc_spi spi32766.0: mmc_spi: CMD41, resp R1 [ 4.270968] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 4.277038] mmc0: req done (CMD41): 0: 00000001 00000000 00000000 00000000 [ 4.301018] mmc0: starting CMD0 arg 00000000 flags 000000c0 [ 4.305561] mmc_spi spi32766.0: mmc_spi: CMD0, resp R1 [ 4.320857] mmc_spi spi32766.0: setup mode 0, 8 bits/w, 30000000 Hz max --> 0 [ 4.326927] mmc0: req done (CMD0): 0: 00000001 00000000 00000000 00000000 [ 4.352027] mmc0: starting CMD58 arg 00000000 flags 00000280 [ 4.356660] mmc_spi spi32766.0: mmc_spi: CMD58, resp R3/R4/R7 И так постоянно :( Смотрел осциллографом - все как положено - битики бегают :) Есть ли у кого нибудь предложения ? Заранее благодарен за любой совет! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 3 января, 2013 Опубликовано 3 января, 2013 · Жалоба [ 3.719393] spi spi32766.0: setup mode 0, 8 bits/w, 3906250 Hz max --> 0 ... [ 3.780588] mmc0: clock 30000000Hz busmode 2 powermode 2 cs 1 Vdd 21 width 0 timing 0 Можно попробовать частоту понизить и попробовать 1-битный режим вместо 4-х битного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xor.kruger 0 8 января, 2013 Опубликовано 8 января, 2013 · Жалоба Только добрался до платы. Можно попробовать частоту понизить Частоту изначально была достаточно низкая, это я в ходе экспериментов пробовал ее повысить для того что бы узнать как изменится поведение системы - не изменилось :) попробовать 1-битный режим вместо 4-х битного. Спасибо за наводку - сейчас буду пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться