Differences

This shows you the differences between two versions of the page.

ru:toh:tp-link:tl-mr3420:deep.mmc.hack [2013/02/02 16:46]
dioptimizer
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 7: Line 7:
Существует два способа модификации:\\ Существует два способа модификации:\\
-1. Подключение MMC/SD карты памяти к шине spi0.1, где карта памяти будет исползовать дополнительный CS1 согласно спецификации SPI.\\+1. Подключение MMC/SD карты памяти к шине spi0.1, где карта памяти будет использовать дополнительный CS1 согласно спецификации SPI.\\
2. Подключение MMC/SD карты памяти к шине spi0.0, т.е. на определенном этапе, замена существующей флеш-памяти программным способом без необходимости искать свободный GPIO пин и без необходимости отпаивать чип флеш-памяти. 2. Подключение MMC/SD карты памяти к шине spi0.0, т.е. на определенном этапе, замена существующей флеш-памяти программным способом без необходимости искать свободный GPIO пин и без необходимости отпаивать чип флеш-памяти.
===== Подключение MMC/SD карты памяти к шине spi0.1 ===== ===== Подключение MMC/SD карты памяти к шине spi0.1 =====
-==== Патчинг прошивки ====+==== Основные изменения в прошивке ====
=== Вариант GPIO как CS1 === === Вариант GPIO как CS1 ===
Line 208: Line 208:
/* Disable UART, enabling GPIO 9 and GPIO 10 */ /* Disable UART, enabling GPIO 9 and GPIO 10 */
ath79_gpio_function_disable(AR933X_GPIO_FUNC_UART_EN); ath79_gpio_function_disable(AR933X_GPIO_FUNC_UART_EN);
- /* Enabling CS1, disable GPIO 9 */+ /* Enabling internal CS1, disable GPIO 9 */
ath79_gpio_function_enable(AR933X_GPIO_FUNC_SPI_CS_EN1); ath79_gpio_function_enable(AR933X_GPIO_FUNC_SPI_CS_EN1);
</code> </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]]. 
-Стандартная и простая устанока ''kmod-mmc'' и ''kmod-mmc-spi'', модули можно включить при компиляции через ''make menuconfig'' или установить позже. При этом, использовать карточку памяти в качестве расширенной фаловой системы - [[doc:howto:extroot]].+
== На уровне ядра (kernel): == == На уровне ядра (kernel): ==
<code diff> <code diff>
Line 234: Line 234:
CONFIG_SYS_HAS_CPU_MIPS32_R2=y CONFIG_SYS_HAS_CPU_MIPS32_R2=y
</code> </code>
-//Помимо MMC модуелей, здесь дополнительно включена возможность использовать EXT4 файловую систему на уровне ядра.//+//Помимо MMC модулей, здесь дополнительно включена возможность использовать EXT4 файловую систему на уровне ядра.//
Интеграция необходимых модулей в ядро, позволяет использовать обнаруженную карточку памяти на ровне с флеш-памятью.\\ Интеграция необходимых модулей в ядро, позволяет использовать обнаруженную карточку памяти на ровне с флеш-памятью.\\
-Например, на этапе компилирования можно изменить параметры коммандной строки ядра для загрузки ''root'' раздела с карточки памяти.+При этом, можно использовать карточку памяти в качестве расширенной файловой системы - [[doc:howto:extroot]].
-Выбрав такой вариант, использование модулей ''kmod-mmc'' и ''kmod-mmc-spi'' (как внешних модулей) - отпадает. 
==== Измерения ==== ==== Измерения ====
Line 267: 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 277: 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 оператором "''&''" (запуск команды в фоне). \\
Результат следующий:  при одновременном чтении или записи spi0.0 и spi0.1 (процесс не имеет значения), предпочтение дается шине spi0.1, т.е. пока не закончится операция чтении/записи блока на шине spi0.1 - на шине spi0.0 не начнется запрашиваемая операция, выполнение происходит в приоритетном порядке и не является ошибкой. Результат следующий:  при одновременном чтении или записи spi0.0 и spi0.1 (процесс не имеет значения), предпочтение дается шине spi0.1, т.е. пока не закончится операция чтении/записи блока на шине spi0.1 - на шине spi0.0 не начнется запрашиваемая операция, выполнение происходит в приоритетном порядке и не является ошибкой.
Line 298: 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>
Line 383: Line 370:
===== Подключение MMC/SD карты памяти к шине spi0.0 ===== ===== Подключение MMC/SD карты памяти к шине spi0.0 =====
-==== Патчинг прошивки ==== +==== Основные изменения в прошивке ==== 
- +UC

Back to top

ru/toh/tp-link/tl-mr3420/deep.mmc.hack.1359820004.txt.bz2 · Last modified: 2013/02/02 16:46 by dioptimizer