Differences
This shows you the differences between two versions of the page.
|
ru:toh:tp-link:tl-mr3420:deep.mmc.hack [2013/01/19 06:00] dioptimizer added speed test result |
ru:toh:tp-link:tl-mr3420:deep.mmc.hack [2013/03/01 23:08] (current) dioptimizer Added information about bug if using external modules, if using modules integrated in kernel - extroot works fine. Updated logs with kernel-mmc |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Расширенный моддинг MMC ===== | + | ====== Расширенный моддинг MMC ====== |
| - | ^ Internal CS ^ AR724X ^ AR933X ^ | + | ===== Способ подключения ===== |
| - | | CS1 | QSS LED (GPIO0) | UART In (GPIO9) | | + | |
| - | | CS2 | SYS LED (GPIO1) | UART Out (GPIO10) | | + | |
| - | На устройствах AR724X: Для того, чтобы использовать внутренний CS1 - необходимо [[#переключение.gpio0.qss.led.в.cs1.на.ar724x|отключить QSS LED]] или как алтьернатива, использовать [[#вариант.gpio.как.cs1|свободный GPIO пин]]. | + | |
| - | + | ||
| - | На устройствах AR933X: Для того, чтобы использовать внутренний CS1 - необходимо [[#отключение.uart.и.переключение.gpio.9.rx.в.cs1.на.ar933x|отключить UART]] или как алтьернатива, использовать [[#вариант.gpio.как.cs1|свободный GPIO пин]]. | + | |
| - | + | ||
| - | ==== Способ подключения ==== | + | |
| {{http://dioptimizer.narod.ru/files/images/mmc_spi0.1.GIF?nolink|Способ подключения}} | {{http://dioptimizer.narod.ru/files/images/mmc_spi0.1.GIF?nolink|Способ подключения}} | ||
| //Схема подключения успешно опробована на шине питания GPIO = 2.6V// | //Схема подключения успешно опробована на шине питания GPIO = 2.6V// | ||
| - | ==== Патчинг прошивки ==== | + | Существует два способа модификации:\\ |
| + | 1. Подключение MMC/SD карты памяти к шине spi0.1, где карта памяти будет использовать дополнительный CS1 согласно спецификации SPI.\\ | ||
| + | 2. Подключение MMC/SD карты памяти к шине spi0.0, т.е. на определенном этапе, замена существующей флеш-памяти программным способом без необходимости искать свободный GPIO пин и без необходимости отпаивать чип флеш-памяти. | ||
| - | === Вариант Int. CS1 === | + | ===== Подключение MMC/SD карты памяти к шине spi0.1 ===== |
| + | |||
| + | ==== Основные изменения в прошивке ==== | ||
| + | |||
| + | === Вариант GPIO как CS1 === | ||
| + | В качестве CS для MMC/SD карты памяти, предпочтительнее использовать любой свободный GPIO пин. | ||
| + | |||
| + | == Использование GPIO 7 - как CS1 для общей шины: == | ||
| <code diff> | <code diff> | ||
| Index: target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c | Index: target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c | ||
| Line 34: | Line 36: | ||
| --- target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (revision 34914) | --- target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (revision 34914) | ||
| +++ target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (working copy) | +++ target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (working copy) | ||
| - | @@ -9,13 +9,19 @@ | + | @@ -9,6 +9,9 @@ |
| */ | */ | ||
| Line 43: | Line 45: | ||
| #include <asm/mach-ath79/ath79.h> | #include <asm/mach-ath79/ath79.h> | ||
| - | +#include <asm/mach-ath79/ar71xx_regs.h> | ||
| - | +#include "common.h" | + | @@ -16,12 +19,14 @@ |
| - | #include "dev-eth.h" | + | |
| #include "dev-ap9x-pci.h" | #include "dev-ap9x-pci.h" | ||
| #include "dev-gpio-buttons.h" | #include "dev-gpio-buttons.h" | ||
| Line 54: | Line 54: | ||
| #include "dev-usb.h" | #include "dev-usb.h" | ||
| #include "machtypes.h" | #include "machtypes.h" | ||
| - | @@ -32,6 +38,26 @@ | + | |
| + | #define TL_MR3X20_GPIO_LED_QSS 0 | ||
| + | #define TL_MR3X20_GPIO_LED_SYSTEM 1 | ||
| + | +#define TL_MR3X20_GPIO_CS1_MMC 7 | ||
| + | #define TL_MR3X20_GPIO_LED_3G 8 | ||
| + | |||
| + | #define TL_MR3X20_GPIO_BTN_RESET 11 | ||
| + | @@ -32,6 +37,26 @@ | ||
| #define TL_MR3X20_KEYS_POLL_INTERVAL 20 /* msecs */ | #define TL_MR3X20_KEYS_POLL_INTERVAL 20 /* msecs */ | ||
| #define TL_MR3X20_KEYS_DEBOUNCE_INTERVAL (3 * TL_MR3X20_KEYS_POLL_INTERVAL) | #define TL_MR3X20_KEYS_DEBOUNCE_INTERVAL (3 * TL_MR3X20_KEYS_POLL_INTERVAL) | ||
| Line 63: | Line 70: | ||
| + | + | ||
| +static struct ath79_spi_controller_data ath79_spi1_cdata = { | +static struct ath79_spi_controller_data ath79_spi1_cdata = { | ||
| - | + .cs_type = ATH79_SPI_CS_TYPE_INTERNAL, | + | + .cs_type = ATH79_SPI_CS_TYPE_GPIO, |
| - | + .cs_line = 1, | + | + .cs_line = TL_MR3X20_GPIO_CS1_MMC, |
| - | +}; | + | +}; |
| + | + | ||
| +static struct spi_board_info ath79_spi_info[] = { | +static struct spi_board_info ath79_spi_info[] = { | ||
| Line 81: | Line 88: | ||
| "tp-link", | "tp-link", | ||
| NULL, | NULL, | ||
| - | @@ -80,6 +106,9 @@ | + | @@ -97,6 +122,9 @@ |
| - | u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); | + | |
| - | u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); | + | |
| - | + | ||
| - | + /* Enabling internal CS1, disable GPIO 0 */ | + | |
| - | + ath79_gpio_function_enable(AR724X_GPIO_FUNC_SPI_CS_EN1); | + | |
| - | + | + | |
| - | ath79_register_m25p80(&tl_mr3x20_flash_data); | + | |
| - | + | ||
| - | ath79_register_gpio_keys_polled(-1, TL_MR3X20_KEYS_POLL_INTERVAL, | + | |
| - | @@ -97,6 +126,9 @@ | + | |
| ath79_register_eth(0); | ath79_register_eth(0); | ||
| Line 100: | Line 97: | ||
| } | } | ||
| - | static void __init tl_mr3x20_usb_setup(void) | + | static void __init tl_mr3x20_usb_setup(void) |
| </code> | </code> | ||
| - | == Переключение GPIO0 (QSS LED) в CS1 на AR724X: == | + | === Вариант Int. CS1 === |
| - | <code c> | + | ^ Internal CS ^ AR724X ^ AR933X ^ |
| - | /* Enabling internal CS1, disable GPIO 0 */ | + | | CS1 | QSS LED (GPIO0) | UART In (GPIO9) | |
| - | ath79_gpio_function_enable(AR724X_GPIO_FUNC_SPI_CS_EN1); | + | | CS2 | SYS LED (GPIO1) | UART Out (GPIO10) | |
| - | </code> | + | На устройствах AR724X: Для того, чтобы использовать внутренний CS1 - необходимо [[#переключение.gpio0.qss.led.в.cs1.на.ar724x|отключить QSS LED]]. |
| - | //(Уже используется в верхнем примере.)// | + | |
| - | == Отключение UART и переключение GPIO 9(Rx) в CS1 на AR933X: == | + | На устройствах AR933X: Для того, чтобы использовать внутренний CS1 - необходимо [[#отключение.uart.и.переключение.gpio.9.rx.в.cs1.на.ar933x|отключить UART]]. |
| - | <code c> | + | |
| - | /* Disable UART, enabling GPIO 9 and GPIO 10 */ | + | |
| - | ath79_gpio_function_disable(AR933X_GPIO_FUNC_UART_EN); | + | |
| - | /* Enabling CS1, disable GPIO 9 */ | + | |
| - | ath79_gpio_function_enable(AR933X_GPIO_FUNC_SPI_CS_EN1); | + | |
| - | </code> | + | |
| - | === Вариант GPIO как CS1 === | ||
| - | == Использование GPIO 7 - как CS1 для общей шины: == | ||
| <code diff> | <code diff> | ||
| Index: target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c | Index: target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c | ||
| Line 139: | Line 127: | ||
| --- target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (revision 34914) | --- target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (revision 34914) | ||
| +++ target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (working copy) | +++ target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c (working copy) | ||
| - | @@ -9,6 +9,9 @@ | + | @@ -9,13 +9,19 @@ |
| */ | */ | ||
| Line 148: | Line 136: | ||
| #include <asm/mach-ath79/ath79.h> | #include <asm/mach-ath79/ath79.h> | ||
| + | +#include <asm/mach-ath79/ar71xx_regs.h> | ||
| - | @@ -16,12 +19,14 @@ | + | +#include "common.h" |
| + | #include "dev-eth.h" | ||
| #include "dev-ap9x-pci.h" | #include "dev-ap9x-pci.h" | ||
| #include "dev-gpio-buttons.h" | #include "dev-gpio-buttons.h" | ||
| Line 157: | Line 147: | ||
| #include "dev-usb.h" | #include "dev-usb.h" | ||
| #include "machtypes.h" | #include "machtypes.h" | ||
| - | + | @@ -32,6 +38,26 @@ | |
| - | #define TL_MR3X20_GPIO_LED_QSS 0 | + | |
| - | #define TL_MR3X20_GPIO_LED_SYSTEM 1 | + | |
| - | +#define TL_MR3X20_GPIO_CS1_MMC 7 | + | |
| - | #define TL_MR3X20_GPIO_LED_3G 8 | + | |
| - | + | ||
| - | #define TL_MR3X20_GPIO_BTN_RESET 11 | + | |
| - | @@ -32,6 +37,26 @@ | + | |
| #define TL_MR3X20_KEYS_POLL_INTERVAL 20 /* msecs */ | #define TL_MR3X20_KEYS_POLL_INTERVAL 20 /* msecs */ | ||
| #define TL_MR3X20_KEYS_DEBOUNCE_INTERVAL (3 * TL_MR3X20_KEYS_POLL_INTERVAL) | #define TL_MR3X20_KEYS_DEBOUNCE_INTERVAL (3 * TL_MR3X20_KEYS_POLL_INTERVAL) | ||
| Line 173: | Line 156: | ||
| + | + | ||
| +static struct ath79_spi_controller_data ath79_spi1_cdata = { | +static struct ath79_spi_controller_data ath79_spi1_cdata = { | ||
| - | + .cs_type = ATH79_SPI_CS_TYPE_GPIO, | + | + .cs_type = ATH79_SPI_CS_TYPE_INTERNAL, |
| - | + .cs_line = TL_MR3X20_GPIO_CS1_MMC, | + | + .cs_line = 1, |
| - | +}; | + | +}; |
| + | + | ||
| +static struct spi_board_info ath79_spi_info[] = { | +static struct spi_board_info ath79_spi_info[] = { | ||
| Line 191: | Line 174: | ||
| "tp-link", | "tp-link", | ||
| NULL, | NULL, | ||
| - | @@ -97,6 +122,9 @@ | + | @@ -80,6 +106,9 @@ |
| + | u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); | ||
| + | u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); | ||
| + | |||
| + | + /* Enabling internal CS1, disable GPIO 0 */ | ||
| + | + ath79_gpio_function_enable(AR724X_GPIO_FUNC_SPI_CS_EN1); | ||
| + | + | ||
| + | ath79_register_m25p80(&tl_mr3x20_flash_data); | ||
| + | |||
| + | ath79_register_gpio_keys_polled(-1, TL_MR3X20_KEYS_POLL_INTERVAL, | ||
| + | @@ -97,6 +126,9 @@ | ||
| ath79_register_eth(0); | ath79_register_eth(0); | ||
| Line 200: | Line 193: | ||
| } | } | ||
| - | static void __init tl_mr3x20_usb_setup(void) | + | static void __init tl_mr3x20_usb_setup(void) |
| + | </code> | ||
| + | |||
| + | == Переключение GPIO0 (QSS LED) в CS1 на AR724X: == | ||
| + | |||
| + | <code c> | ||
| + | /* Enabling internal CS1, disable GPIO 0 */ | ||
| + | ath79_gpio_function_enable(AR724X_GPIO_FUNC_SPI_CS_EN1); | ||
| + | </code> | ||
| + | //(Уже используется в верхнем примере.)// | ||
| + | |||
| + | == Отключение UART и переключение GPIO 9(Rx) в CS1 на AR933X: == | ||
| + | <code c> | ||
| + | /* Disable UART, enabling GPIO 9 and GPIO 10 */ | ||
| + | ath79_gpio_function_disable(AR933X_GPIO_FUNC_UART_EN); | ||
| + | /* Enabling internal CS1, disable GPIO 9 */ | ||
| + | ath79_gpio_function_enable(AR933X_GPIO_FUNC_SPI_CS_EN1); | ||
| + | </code> | ||
| + | |||
| + | === Модули === | ||
| + | |||
| + | {{:meta:icons:tango:48px-emblem-important.svg.png?nolink |Важно!}}Использование внешних модулей ''kmod-mmc'' и ''kmod-mmc-spi'' - пока не позволяет корректно смонтировать ''<color magenta>/overlay</color>'' или ''<color blue>/</color>'' разделы через [[doc:howto:extroot]], данная ошибка описана в [[https://dev.openwrt.org/ticket/7768]]. | ||
| + | |||
| + | == На уровне ядра (kernel): == | ||
| + | <code diff> | ||
| + | Index: target/linux/ar71xx/config-3.7 | ||
| + | =================================================================== | ||
| + | --- target/linux/ar71xx/config-3.7 (revision 35363) | ||
| + | +++ target/linux/ar71xx/config-3.7 (working copy) | ||
| + | @@ -240,6 +240,10 @@ | ||
| + | # CONFIG_SPI_RB4XX is not set | ||
| + | # CONFIG_SPI_RB4XX_CPLD is not set | ||
| + | # CONFIG_SPI_VSC7385 is not set | ||
| + | +CONFIG_EXT4_FS=y | ||
| + | +CONFIG_MMC=y | ||
| + | +CONFIG_MMC_SPI=y | ||
| + | +CONFIG_MMC_BLOCK=y | ||
| + | CONFIG_SWCONFIG=y | ||
| + | CONFIG_SWCONFIG_LEDS=y | ||
| + | CONFIG_SYS_HAS_CPU_MIPS32_R2=y | ||
| </code> | </code> | ||
| + | //Помимо MMC модулей, здесь дополнительно включена возможность использовать EXT4 файловую систему на уровне ядра.// | ||
| - | === Зависимость === | + | Интеграция необходимых модулей в ядро, позволяет использовать обнаруженную карточку памяти на ровне с флеш-памятью.\\ |
| - | Данный мод зависит от пакетов ''kmod-mmc'' и ''kmod-mmc-spi'', их можно включить при компиляции через ''make menuconfig'' или установить позже. | + | При этом, можно использовать карточку памяти в качестве расширенной файловой системы - [[doc:howto:extroot]]. |
| ==== Измерения ==== | ==== Измерения ==== | ||
| Line 233: | Line 266: | ||
| == Нагрузка на CPU во время чтения/записи: == | == Нагрузка на CPU во время чтения/записи: == | ||
| - | <code> | + | <HTML> |
| + | <pre class="code"> | ||
| root@OpenWrt:~# top | root@OpenWrt:~# top | ||
| Mem: 28224K used, 1120K free, 0K shrd, 5784K buff, 5592K cached | Mem: 28224K used, 1120K free, 0K shrd, 5784K buff, 5592K cached | ||
| - | CPU: 0% usr 99% sys 0% nic 0% idle 0% io 0% irq 0% sirq | + | CPU: 0% usr <font color="red">99% sys</font> 0% nic 0% idle 0% io 0% irq 0% sirq |
| Load average: 1.21 0.88 0.60 2/60 28540 | Load average: 1.21 0.88 0.60 2/60 28540 | ||
| PID PPID USER STAT VSZ %VSZ %CPU COMMAND | PID PPID USER STAT VSZ %VSZ %CPU COMMAND | ||
| Line 243: | Line 277: | ||
| 559 2 root RW 0 0% 6% [mmcqd/0] | 559 2 root RW 0 0% 6% [mmcqd/0] | ||
| ... | ... | ||
| - | </code> | + | </pre> |
| + | </HTML> | ||
| == Тест одновременного использования spi0.0 и spi0.1: == | == Тест одновременного использования spi0.0 и spi0.1: == | ||
| Здесь стоит уточнить способ выполнения теста. \\ | Здесь стоит уточнить способ выполнения теста. \\ | ||
| - | Используется две параллельные консоли на одном устройстве и практически одновременное выполнение команд в ручном режиме при этом на флеш-памяти ограниченное место. \\ | + | Посылается две параллельные команды чтение\запись с разделительным command оператором "''&''" (запуск команды в фоне). \\ |
| - | По скорости записи, флеш-память конечно же уступает карте памяти, при этом, по скорости чтения - карта памяти проигрывает: | + | |
| - | <code> | + | |
| - | root@OpenWrt:~# /usr/bin/dd count=3904 bs=1K if=/dev/mtd5ro of=/dev/null | + | |
| - | 3904+0 records in | + | |
| - | 3904+0 records out | + | |
| - | 3997696 bytes (4.0 MB) copied, 1.71708 s, 2.3 MB/s | + | |
| - | root@OpenWrt:~# /usr/bin/dd count=600 bs=1K if=/dev/zero of=/usr/123.bin | + | |
| - | 600+0 records in | + | |
| - | 600+0 records out | + | |
| - | 614400 bytes (614 kB) copied, 14.599 s, 42.1 kB/s | + | |
| - | root@OpenWrt:~# | + | |
| - | </code> | + | |
| Результат следующий: при одновременном чтении или записи spi0.0 и spi0.1 (процесс не имеет значения), предпочтение дается шине spi0.1, т.е. пока не закончится операция чтении/записи блока на шине spi0.1 - на шине spi0.0 не начнется запрашиваемая операция, выполнение происходит в приоритетном порядке и не является ошибкой. | Результат следующий: при одновременном чтении или записи spi0.0 и spi0.1 (процесс не имеет значения), предпочтение дается шине spi0.1, т.е. пока не закончится операция чтении/записи блока на шине spi0.1 - на шине spi0.0 не начнется запрашиваемая операция, выполнение происходит в приоритетном порядке и не является ошибкой. | ||
| Line 276: | Line 299: | ||
| <pre class="code"> | <pre class="code"> | ||
| ... | ... | ||
| - | <b>[ 0.730000] ath79-spi ath79-spi: master is unqueued, this is deprecated</b> | + | <b><font size=4>[ 0.730000] ath79-spi ath79-spi: master is unqueued, this is deprecated</font></b> |
| [ 0.740000] m25p80 spi0.0: found en25f32, expected m25p80 | [ 0.740000] m25p80 spi0.0: found en25f32, expected m25p80 | ||
| - | [ 0.740000] m25p80 spi0.0: en25f32 (4096 Kbytes) | + | [ 0.750000] m25p80 spi0.0: en25f32 (4096 Kbytes) |
| [ 0.750000] 5 tp-link partitions found on MTD device spi0.0 | [ 0.750000] 5 tp-link partitions found on MTD device spi0.0 | ||
| - | [ 0.750000] Creating 5 MTD partitions on "spi0.0": | + | [ 0.760000] Creating 5 MTD partitions on "spi0.0": |
| [ 0.760000] 0x000000000000-0x000000020000 : "u-boot" | [ 0.760000] 0x000000000000-0x000000020000 : "u-boot" | ||
| - | [ 0.770000] 0x000000020000-0x0000000fdc00 : "kernel" | + | [ 0.770000] 0x000000020000-0x000000136000 : "kernel" |
| - | [ 0.770000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only | + | [ 0.780000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only |
| - | [ 0.790000] 0x0000000fdc00-0x0000003f0000 : "rootfs" | + | [ 0.790000] 0x000000136000-0x0000003f0000 : "rootfs" |
| - | [ 0.790000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only | + | [ 0.800000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only |
| [ 0.810000] mtd: partition "rootfs" set to be root filesystem | [ 0.810000] mtd: partition "rootfs" set to be root filesystem | ||
| - | [ 0.810000] mtd: partition "rootfs_data" created automatically, ofs=2E0000, len=110000 | + | [ 0.820000] mtd: partition "rootfs_data" created automatically, ofs=2B0000, len=140000 |
| - | [ 0.820000] 0x0000002e0000-0x0000003f0000 : "rootfs_data" | + | [ 0.820000] 0x0000002b0000-0x0000003f0000 : "rootfs_data" |
| [ 0.830000] 0x0000003f0000-0x000000400000 : "art" | [ 0.830000] 0x0000003f0000-0x000000400000 : "art" | ||
| - | [ 0.830000] 0x000000020000-0x0000003f0000 : "firmware" | + | [ 0.840000] 0x000000020000-0x0000003f0000 : "firmware" |
| [ 0.860000] libphy: ag71xx_mdio: probed | [ 0.860000] libphy: ag71xx_mdio: probed | ||
| + | [ 0.860000] eth0: Atheros AG71xx at 0xba000000, irq 5, mode:GMII | ||
| + | [ 1.420000] eth0: Found an AR7240/AR9330 built-in switch | ||
| + | [ 2.460000] eth1: Atheros AG71xx at 0xb9000000, irq 4, mode:MII | ||
| + | [ 3.010000] ag71xx ag71xx.0 eth1: connected to PHY at ag71xx-mdio.1:04 [uid=004dd041, driver=Generic PHY] | ||
| + | <b><font size=4>[ 3.060000] mmc_spi spi0.1: SD/MMC host mmc0, no DMA, no WP, no poweroff</font></b> | ||
| + | [ 3.070000] TCP: cubic registered | ||
| + | [ 3.070000] NET: Registered protocol family 17 | ||
| + | [ 3.070000] 8021q: 802.1Q VLAN Support v1.8 | ||
| + | [ 3.090000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2. | ||
| + | [ 3.100000] Freeing unused kernel memory: 236k freed | ||
| + | <b><font size=4>[ 3.270000] mmc0: SD Status: Invalid Allocation Unit size. | ||
| + | [ 3.280000] mmc0: host does not support reading read-only switch. assuming write-enable. | ||
| + | [ 3.280000] mmc0: new SD card on SPI | ||
| + | [ 3.500000] mmcblk0: mmc0:0000 S016B 14.2 MiB | ||
| + | [ 3.530000] mmcblk0: p1</font></b> | ||
| ... | ... | ||
| - | ... | ||
| - | [ 13.280000] hub 1-0:1.0: USB hub found | ||
| - | [ 13.290000] hub 1-0:1.0: 1 port detected | ||
| - | [ 13.310000] nf_conntrack version 0.5.0 (458 buckets, 1832 max) | ||
| - | [ 13.660000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver | ||
| - | [ 13.810000] usbcore: registered new interface driver usbserial | ||
| - | [ 13.810000] usbcore: registered new interface driver usbserial_generic | ||
| - | [ 13.820000] USB Serial support registered for generic | ||
| - | [ 13.820000] usbserial: USB Serial Driver core | ||
| - | [ 13.950000] usbcore: registered new interface driver cp210x | ||
| - | [ 13.950000] USB Serial support registered for cp210x | ||
| - | <b>[ 14.240000] mmc_spi spi0.1: SD/MMC host mmc0, no DMA, no WP, no poweroff | ||
| - | [ 14.420000] mmc0: SD Status: Invalid Allocation Unit size. | ||
| - | [ 14.430000] mmc0: host does not support reading read-only switch. assuming write-enable. | ||
| - | [ 14.440000] mmc0: new SD card on SPI | ||
| - | [ 14.440000] mmcblk0: mmc0:0000 S016B 14.2 MiB | ||
| - | [ 14.450000] mmcblk0: p1</b> | ||
| - | [ 19.990000] device eth0 entered promiscuous mode | ||
| - | [ 21.090000] eth0: link up (1000Mbps/Full duplex) | ||
| - | [ 21.090000] br-lan: port 1(eth0) entered forwarding state | ||
| - | [ 21.100000] br-lan: port 1(eth0) entered forwarding state | ||
| - | [ 23.100000] br-lan: port 1(eth0) entered forwarding state | ||
| - | [ 33.680000] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0 | ||
| - | [ 33.700000] jffs2_build_filesystem(): unlocking the mtd device... done. | ||
| - | [ 33.700000] jffs2_build_filesystem(): erasing all blocks after the end marker... done. | ||
| - | [ 41.170000] jffs2: notice: (1139) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. | ||
| - | root@OpenWrt:/# | ||
| </pre> | </pre> | ||
| </HTML> | </HTML> | ||
| - | == Вид ошибки в случае НЕ обнаружения карточки памяти: == | + | == Вид ошибки в случае НЕ обнаружения карточки памяти на уровне ядра: == |
| <code> | <code> | ||
| ... | ... | ||
| - | [ 17.390000] mmc_spi spi0.1: SD/MMC host mmc0, no DMA, no WP, no poweroff | + | [ 6.070000] mmc_spi spi0.1: SD/MMC host mmc0, no DMA, no WP, no poweroff |
| - | [ 17.400000] mmc0: host doesn't support card's voltages | + | ... |
| - | [ 17.400000] mmc0: error -22 whilst initialising SDIO card | + | [ 8.710000] mmc0: error -145 whilst initialising SD card |
| - | [ 17.410000] mmc0: host doesn't support card's voltages | + | ... |
| - | [ 17.420000] mmc0: error -22 whilst initialising SD card | + | [ 10.710000] mmc0: error -145 whilst initialising MMC card |
| - | [ 17.430000] mmc0: host doesn't support card's voltages | + | |
| - | [ 17.430000] mmc0: error -22 whilst initialising MMC card | + | |
| ... | ... | ||
| </code> | </code> | ||
| - | == Обнаруженные разделы выделены жирным: == | + | == Обнаруженные разделы: == |
| <HTML> | <HTML> | ||
| <pre class="code"> | <pre class="code"> | ||
| - | root@OpenWrt:~# ls /dev/ | + | root@OpenWrt:~# ls /dev/mmc* |
| - | bus mtd1 mtdblock1 pts | + | <font color="magenta">/dev/mmcblk0 /dev/mmcblk0p1</font> |
| - | console mtd1ro mtdblock2 random | + | |
| - | cpu_dma_latency mtd2 mtdblock3 shm | + | |
| - | full mtd2ro mtdblock4 tty | + | |
| - | kmsg mtd3 mtdblock5 ttyS0 | + | |
| - | log mtd3ro network_latency urandom | + | |
| - | mem mtd4 network_throughput watchdog | + | |
| - | <b>mmcblk0</b> mtd4ro null zero | + | |
| - | <b>mmcblk0p1</b> mtd5 port | + | |
| - | mtd0 mtd5ro ppp | + | |
| - | mtd0ro mtdblock0 ptmx | + | |
| root@OpenWrt:~# | root@OpenWrt:~# | ||
| </pre> | </pre> | ||
| Line 368: | Line 367: | ||
| root@OpenWrt:~# | root@OpenWrt:~# | ||
| </code> | </code> | ||
| + | |||
| + | ===== Подключение MMC/SD карты памяти к шине spi0.0 ===== | ||
| + | |||
| + | ==== Основные изменения в прошивке ==== | ||
| + | UC | ||
ru/toh/tp-link/tl-mr3420/deep.mmc.hack.1358571605.txt.bz2 · Last modified: 2013/01/19 06:00 by dioptimizer
