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]
ru:toh:tp-link:tl-mr3420:deep.mmc.hack [2013/12/06 09:37] (current)
Line 1: Line 1:
-===== Расширенный моддинг MMC =====+====== Расширенный моддинг MMC ======
-^ Internal CS ^ AR724X ^ AR933X ^ +===== Способ подключения ===== 
-| CS1 | QSS LED (GPIO0) | UART In (GPIO9) | +{{http://img560.imageshack.us/img560/2855/1g1.png?nolink|Способ подключения}}
-| 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 пин]].+//Схема подключения успешно опробована на шине питания GPIO = 2.6V//
-==== Способ подключения ==== +| //Используется QSS светодиод как внутренний CS1:// \\ {{http://img32.imageshack.us/img32/2260/nssg.jpg?400 | }} | //Резисторы 10кОм были подобраны опытным путем:// \\ {{http://img607.imageshack.us/img607/3233/u36o.jpg?400 | }}|
-{{http://dioptimizer.narod.ru/files/images/mmc_spi0.1.GIF?nolink|Способ подключения}}+
-//Схема подключения успешно опробована на шине питания GPIO = 2.6V// 
-==== Патчинг прошивки ==== 
-=== Вариант Int. CS1 ===+Существует два способа модификации с использованием разных GPIO для CS1, а также два варианта установки необходимого ПО для непосредственного использования карточки памяти подключенной к устройству.\\ 
 +**Примечание:** Эта модификация, как и модификация [[:doc:howto:mmc_over_gpio|mmc_over_gpio]] - не поддерживает [[wp>ru:Secure_Digital#SDHC|SDHC]] карточки памяти на уровне драйвера.\\ 
 + 
 +===== Подключение MMC/SD карты памяти к шине spi0.1 ===== 
 + 
 +==== Основные изменения в прошивке ==== 
 + 
 +<HTML><p style="border:2px dashed red;">Первый способ.</p></HTML> 
 +=== Вариант 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 40:
--- 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 49:
#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 58:
#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)
+static struct mmc_spi_platform_data ath79_mmc_data = { +static struct mmc_spi_platform_data ath79_mmc_data = {
 ++      .get_ro = NULL,
 ++      .get_cd = NULL,
 ++      .detect_delay = 100, /* msecs */
+ .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, + .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
+}; +};
+ +
+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 95:
"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 104:
} }
- static void __init tl_mr3x20_usb_setup(void) + static void __init tl_mr3x20_usb_setup(void)
</code> </code>
-== Переключение GPIO0 (QSS LED) в CS1 на AR724X: ==+<HTML><p style="border:2px dashed red;">Второй способ.</p></HTML> 
 +=== Вариант 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 135:
--- 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 144:
#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 155:
#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 164:
+ +
+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 182:
"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 201:
} }
- 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> 
 +\\ 
 +=== Модули === 
 +<HTML><p style="border:2px dashed red;">Первый вариант.</p></HTML> 
 +{{: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]]. Это даже с учетом того, что использование этих модулей, позволяет полноценно использовать карточку памяти и монтировать ее в другие точки монтирования (кроме [[doc:howto:extroot]]). 
 + 
 +**Обновление:** Проблема сохранилась по состоянию ревизии прошивки **r37142**.\\ 
 +Для [[doc:howto:extroot]], используйте Второй вариант.\\ 
 +\\ 
 +<HTML><p style="border:2px dashed red;">Второй вариант.</p></HTML> 
 +== На уровне ядра (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_MMC_TIFM_SD=n 
 + CONFIG_SWCONFIG=y 
 + CONFIG_SWCONFIG_LEDS=y 
 + CONFIG_SYS_HAS_CPU_MIPS32_R2=y
</code> </code>
 +//Помимо MMC модулей, здесь дополнительно включена возможность использовать EXT4 файловую систему на уровне ядра.\\
 +Также следует учесть, что Linux-ядро регулярно обновляется, а этот конфигурационный файл в названии носит версию ядра.\\
 +В конечном счете, если ядро Trank'а обновилось, необходимо найти этот же конфиг. файл (но уже новый, например: ''config-3.8'') и изменить его в соответствии с представленными здесь изменениями.//
-=== Зависимость === +Интеграция необходимых модулей в ядро, позволяет использовать обнаруженную карточку памяти на ровне с флеш-памятью.\\ 
-Данный мод зависит от пакетов ''kmod-mmc'' и ''kmod-mmc-spi'', их можно включить при компиляции через ''make menuconfig'' или установить позже.+При этом, можно использовать карточку памяти в качестве расширенной файловой системы - [[doc:howto:extroot]].\\  
 +\\
==== Измерения ==== ==== Измерения ====
Line 233: Line 282:
== Нагрузка на 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 293:
  559    2 root    RW      0  0%  6% [mmcqd/0]   559    2 root    RW      0  0%  6% [mmcqd/0]
... ...
-</code>+</pre> 
 +</HTML>
 +**Итог:** Скорость чтения/записи по шине SPI, прямо зависит от скорости CPU.
== Тест одновременного использования spi0.0 и spi0.1: == == Тест одновременного использования spi0.0 и spi0.1: ==
Здесь стоит уточнить способ выполнения теста. \\ Здесь стоит уточнить способ выполнения теста. \\
-Используется две параллельные консоли на одном устройстве и практически одновременное выполнение команд в ручном режиме при этом на флеш-памяти ограниченное место. \\ +Посылается две параллельные команды чтение\запись с разделительным command оператором &quot;''&amp;''"; (запуск команды в фоне). \\
-По скорости записи, флеш-память конечно же уступает карте памяти, при этом, по скорости чтения - карта памяти проигрывает: +
-&lt;code&gt; +
-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 316:
<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-0x00000013de00 : "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.770000] 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] 0x00000013de00-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.790000] 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.810000] mtd: partition "rootfs_data" created automatically, ofs=370000, len=80000 
-[    0.820000] 0x0000002e0000-0x0000003f0000 : "rootfs_data"+[    0.820000] 0x000000370000-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.450000] eth1: Atheros AG71xx at 0xb9000000, irq 4, mode:MII
 +[    3.000000] ag71xx ag71xx.0 eth1: connected to PHY at ag71xx-mdio.1:04 [uid=004dd041, driver=Generic PHY]
 +<b><font size=4>[    3.050000] mmc_spi spi0.1: SD/MMC host mmc0, no DMA, no WP, no poweroff</font></b>
 +[    3.060000] TCP: cubic registered
 +[    3.060000] NET: Registered protocol family 17
 +[    3.070000] 8021q: 802.1Q VLAN Support v1.8
 +[    3.080000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
 +[    3.090000] Freeing unused kernel memory: 268k freed
 +<b><font size=4>[    3.310000] mmc0: host does not support reading read-only switch. assuming write-enable.
 +[    3.320000] mmc0: new SD card on SPI
 +[    3.480000] mmcblk0: mmc0:0000 00000 1.90 GiB
 +[    3.490000]  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=&quot;magenta&quot;>/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&gt;mmcblk0&lt;/b>            mtd4ro              null                zero +
-<b>mmcblk0p1</b>           mtd5                port +
-mtd0                mtd5ro              ppp +
-mtd0ro              mtdblock0          ptmx+
root@OpenWrt:~# root@OpenWrt:~#
</pre> </pre>
Line 366: Line 381:
bus width:      0 (1 bits) bus width:      0 (1 bits)
timing spec:    0 (legacy) timing spec:    0 (legacy)
 +signal voltage: 1 (3.30 V)
root@OpenWrt:~# root@OpenWrt:~#
</code> </code>

Back to top

ru/toh/tp-link/tl-mr3420/deep.mmc.hack.1358571605.txt.bz2 · Last modified: 2013/01/19 06:00 (external edit)