![]() |
|
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#51 | |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
По моему опыту - нормальные герои идут в обход ![]() AR7240_GPIO_OE - General Purpose I/O Output Enable (GPIO_OE) В роутере CONFIG_PID_WR70301 значение 0xc03e001, а в роутере CONFIG_PID_MR302001 значение 0xc020001 (пример кода вверху) По идее, можно только пропатчить uboot(найти это значение в HEX виде и пропатчить в соответствии с нужным значением), чтобы не заморачиваться с компилятором. Но прежде чем это делать, нужно всё проверить - на роутере установить утилиту io(через opkg) и прочитать с помощью нее область памяти: Код:
io -4 0x18040000 Это прочитанное значение берем и рассчитываем по формуле (0xValue | 0xc03e001) = 0xResult Результат (в HEX варианте) прописываем той же io утилитой: Код:
io -4 0x18040000 0xResult Не спугунл? ![]() С компилятором uboot столько же хлопот(если не больше)... P.S. Если все же оно влияет на другие GPIO негативным образом, тогда я постараюсь рассчитать значение которое изменяет конкретно GPIO7, если нужно... Последний раз редактировалось Dioptimizer; 25.12.2013 в 21:09. |
|
![]() |
![]() |
![]() |
#52 | |||||
Junior Member
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0 ![]() |
![]() Цитата:
![]() Цитата:
Цитата:
Правда, есть вопрос. Если у меня RootFS на флэшке, патчить в имидже прошивки и потом прошивать? А только после этого, если все нормально делать копию RootFS на флэшку? Цитата:
![]() А как вычислялась область памяти для примера с io? Или это пример и цифры будут другие? А где есть описание структуры памяти прошивки? Цитата:
P.S. Если задаю глупые вопросы, извини. Пока что четкой картины в голове нет. ![]() Или где искать описание для прояснения картины в моей голове? ![]() |
|||||
![]() |
![]() |
![]() |
#53 |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Если Вы про структуру флеш-памяти устройства, то тут есть информация (структура практически идентична на всех TP-Link'ах у которых в основе процессоры Atheros).
А здесь информация как это всё дело сохранить вместе или по отдельности. Вы должны понимать всю серьезность изменения загрузчика. U-boot это загрузчик устройства - микропрограмма по запуску и инициализации процессора, он вообще не должен изменяться. firmware(прошивка) - это программа выполняемая загрузчиком. Я должен Вас предупредить, что uboot в любом случае (даже если вы компилируете его стандартным методом) опасно заменять - если что-то случится, у вас будет "кирпич" - который восстановить без спец. оборудования невозможно. Я могу Вам предложить поискать другой GPIO сконфигурированный по умолчанию в IN направлении. Например, "поковыряв" загрузчик TL-MR3020, я обнаружил, что в загрузчике начальная конфигурация GPIO_OE имеет такой вид: Код:
... 2cr 00002e60: 3c03b804 lui $v1,0xb804 30r 00002e64: 24020cff move $v0,3327=0x0cff 34r 00002e68: ac620000 sw $v0,0($v1) # b8040000 ... Код:
0x0cff = 0b00000000000000000000110011111111 (1 = включено; 0 = выключено) ....9876543210 <= BIT и номер GPIO, и так до 29(кол-во GPIO на процессоре) Позже правда, тот же u-boot настраивает GPIO13...GPIO17 на Ethernet индикацию, но то уже раздел функций на линии GPIO. (Кстати, я говорил, что TL-MR3020 похож на TL-MR11U, и у меня есть предположение, что Вам не доступны некоторые потенциально свободные GPIO. Мне помнится, что человек на форуме OpenWRT просил освободить два GPIO 14-15(хотя я не уверен, что там будет ноль, пока грузится устройство), которые не было возможности контролировать на устройстве, вот ссылка изменений, которых я смог добиться от разработчиков. Можете пропатчить прошивку (профиль mach-tl-mr3020.c) по этому примеру. Как собрать собственную прошивку, смотрите соответствующий раздел.) Тут делаем еще один вывод, можно обойтись без правки u-boot, если воспользуемся GPIO8(usb power) или GPIO9(uart_in) - но тогда нужно править уже firmware(прошивку) - это более безопасно, чем править загрузчик. В этом случае нужно будет пожертвовать контролем питания usb-порта (это значит, что его нужно будет просто "отучить" от GPIO8, а на ногу МК, которая управляет питанием usb-порта подать такое же питание как у out=>high) или отключением UART порта в прошивке. Но если всё же надумаете править значение в загрузчике uboot, то как вы понимаете это рассчитывается так: Код:
0x0c7f = 0b00000000000000000000110001111111 (1 = включено; 0 = выключено) ....9876543210 <= BIT и номер GPIO, и так до 29(кол-во GPIO на процессоре) Т.ч. то, что я ранее показывал как панацею (значение 0xc03e001(WR703) и 0xc020001(MR3020)) не имеет смысла, т.к. 0xc03e001(WR703) включает OE на GPIO 13-17, 26, 27. А 0xc020001(MR3020) включает OE на GPIO 17, 26, 27. Документация, откуда я взял всю эту белиберду. Проверил на своем стареньком роутере. P.S. P.S. После такого откровения, я думаю, что я Вас точно отпугнул ![]() Последний раз редактировалось Dioptimizer; 28.12.2013 в 05:55. Причина: дополнение по поводу возможности включения gpio14-15 |
![]() |
![]() |
![]() |
#54 |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
ald
Альтернатива, специально для Вас. Используйте UART_IN(GPIO9) - там вечный ноль, пока не сконфигурируете GPIO в out... |
![]() |
![]() |
![]() |
#55 | ||
Junior Member
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0 ![]() |
![]() Цитата:
Но, наверное, есть мысл попробовать вначале: Цитата:
|
||
![]() |
![]() |
![]() |
#56 | ||
Junior Member
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0 ![]() |
![]()
Не стал пока ничего править.
Похоже, я чего-то не понимаю либо делаю не то/не так. Еще раз просматривал Wiki OpenWRT по GPIO на MR3020. Там в таблице в строчках GPIO7 и GPIO29 написано "unused Pulled to ground". А мультиметром меряю между GND и левым контактом резистора R15 либо R17 с картинок отсюда либо отсюда и получаю 2,6V и при загрузке и когда уже загружена оригинальная BB. GND тоже контакт брал и с первой и со второй картинки. Меряю на припаянном к резистору проводке. Цитата:
По идее там уже должно быть пропатчено, поскольку по Вашей ссылке r35960. Правда, пробовал цепляться к R11 и R12 справа резистора на картинке - мультиметром не увидел ни 0V ни 2,6V, получил "висящий в воздухе контакт". Цитата:
# io -4 0x18040000 WR703N 18040000: 0800c5ff (=1000000000001100010111111111) MR3020 18040000: 0c0205ff (=1100000000100000010111111111) Запутался. ![]() Возьму еще MR703N с припаянными проводами к GPIO 7 и 29. Посмотрю там. Но подозреваю, что там будет 0V как и в другом MR703 на GPIO 14 и 15. |
||
![]() |
![]() |
![]() |
#57 |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#58 | |
Junior Member
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0 ![]() |
![]() Цитата:
Т.е. для GPIO7 функция включена, а для GPIO29 нет? Возникает вопрос - что начит "функция включена"? А где указывается исходное значение (значение/напряжение при загрузке)? Включена - значит можно устанавливать значение напряжения? С GPIO29 не понятно. измерения на WR703N после загрузки еще больше запутали. GPIO7-2.2В GPIO29-1.6В GPIO14-0В GPIO15-0В GPIO17-0В |
|
![]() |
![]() |
![]() |
#59 |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Вообще-то GPIO29 не существует на процессорах AR933x
![]() Может Вы имели ввиду GPIO28? Страница 15. Почему идет отчет до 29 мне трудно сказать, может быть последний бит используется как count-бит, но в любом случае судя по документации нам доступны только GPIO0-GPIO28. Функция GPIO_OE (значение 1 какому-то bit'у <=> gpioN) ==равносильна== "echo out >..../gpioN/direction" Функция GPIO_OE (значение 0 какому-то bit'у <=> gpioN) ==равносильна== "echo in >..../gpioN/direction" (я лишь говорил о конфигурировании gpio в uboot'e по умолчанию, вам вообще не нужно заниматься этим лесом ![]() На MR3020: Вы можете контролировать/конфигурировать GPIO14-GPIO15 (не важно что пишет sysfs, главное тестером проверять)? Последний раз редактировалось Dioptimizer; 29.12.2013 в 02:31. |
![]() |
![]() |
![]() |
#60 | |
Junior Member
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0 ![]() |
![]() Цитата:
Правда там три или два варианта. ![]() Features CPU - Atheros AR7240@400MHz (SoC: Atheros AR9330 rev 1) Model Specific Notes - AR9331 chipset На сайте TP-Link о процессоре не упоминается. А здесь на схеме роутера WR703N на ножке A53 подписано GPIO29. У меня в роутере плата и процессор как и на этой картинке Atheros AR9331. Последний раз редактировалось ald; 29.12.2013 в 16:38. Причина: добавление ссылки на схему |
|
![]() |
![]() |
![]() |
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
|
|