Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.12.2013, 20:36   #51
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от ald Посмотреть сообщение
Т.е. исправив uboot и пересобрав прошивку я получу 0V на GPIO7 при загрузке?

А есть описание синтаксиса uboot (чтобы понять что и как изменять)?
Ну если так приспичило.
По моему опыту - нормальные герои идут в обход

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
(будет определенное значение этого GPIO_OE)

Это прочитанное значение берем и рассчитываем по формуле (0xValue | 0xc03e001) = 0xResult
Результат (в HEX варианте) прописываем той же io утилитой:
Код:
io -4 0x18040000 0xResult
(после чего, не выключая устройство, проверяем Ваш GPIO на нужное значение, также проверяем не повлияли ли эти изменения на другие GPIO, индикацию светодиодов и прочее)

Не спугунл?
С компилятором uboot столько же хлопот(если не больше)...

P.S.
Если все же оно влияет на другие GPIO негативным образом, тогда я постараюсь рассчитать значение которое изменяет конкретно GPIO7, если нужно...

Последний раз редактировалось Dioptimizer; 25.12.2013 в 21:09.
Dioptimizer вне форума   Ответить с цитированием
Старый 27.12.2013, 17:35   #52
ald
Junior Member
 
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0
ald is an unknown quantity at this point
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение
Ну если так приспичило.
По моему опыту - нормальные герои идут в обход
Ну, вначале надо понять, что проще обойти или ...

Цитата:
AR7240_GPIO_OE - General Purpose I/O Output Enable (GPIO_OE)
В роутере CONFIG_PID_WR70301 значение 0xc03e001, а в роутере CONFIG_PID_MR302001 значение 0xc020001
(пример кода вверху)
Спасибо за подсказки и ключевые слова.

Цитата:
По идее, можно только пропатчить uboot(найти это значение в HEX виде и пропатчить в соответствии с нужным значением), чтобы не заморачиваться с компилятором.
Буду разбираться, попытаюсь понять и буду пробовать патчить.

Правда, есть вопрос. Если у меня RootFS на флэшке, патчить в имидже прошивки и потом прошивать?
А только после этого, если все нормально делать копию RootFS на флэшку?

Цитата:
Но прежде чем это делать, нужно всё проверить - на роутере установить утилиту io(через opkg) и прочитать с помощью нее область памяти:
Код:
io -4 0x18040000
(будет определенное значение этого GPIO_OE)

Это прочитанное значение берем и рассчитываем по формуле (0xValue | 0xc03e001) = 0xResult
Результат (в HEX варианте) прописываем той же io утилитой:
Код:
io -4 0x18040000 0xResult
(после чего, не выключая устройство, проверяем Ваш GPIO на нужное значение, также проверяем не повлияли ли эти изменения на другие GPIO, индикацию светодиодов и прочее)

Не спугунл?

А что может произойти если выключу?
Нет, не спугнул.

А как вычислялась область памяти для примера с io? Или это пример и цифры будут другие?

А где есть описание структуры памяти прошивки?

Цитата:
С компилятором uboot столько же хлопот(если не больше)...

P.S.
Если все же оно влияет на другие GPIO негативным образом, тогда я постараюсь рассчитать значение которое изменяет конкретно GPIO7, если нужно...
А как считать? Может, и сам смогу?

P.S. Если задаю глупые вопросы, извини. Пока что четкой картины в голове нет.
Или где искать описание для прояснения картины в моей голове?
ald вне форума   Ответить с цитированием
Старый 28.12.2013, 01:23   #53
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от ald Посмотреть сообщение
А где есть описание структуры памяти прошивки?
Если Вы про структуру флеш-памяти устройства, то тут есть информация (структура практически идентична на всех 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
...
(оно же, в исходниках 126 сторка)

Код:
0x0cff = 0b00000000000000000000110011111111 (1 = включено; 0 = выключено)
                             ....9876543210 <= BIT и номер GPIO, и так до 29(кол-во GPIO на процессоре)
Таким образом можно сделать вывод, что по началу, до конфигурации каких либо светодиодов и прочего - GPIO8(usb power), GPIO9(uart_in) и начиная с GPIO12 заканчивая GPIO28 - функция Output Enable отключена.
Позже правда, тот же 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 на процессоре)
P.S.
Т.ч. то, что я ранее показывал как панацею (значение 0xc03e001(WR703) и 0xc020001(MR3020)) не имеет смысла, т.к. 0xc03e001(WR703) включает OE на GPIO 13-17, 26, 27.
А 0xc020001(MR3020) включает OE на GPIO 17, 26, 27.

Документация, откуда я взял всю эту белиберду.
Проверил на своем стареньком роутере.

P.S. P.S.
После такого откровения, я думаю, что я Вас точно отпугнул
Миниатюры
Нажмите на изображение для увеличения
Название: 123.jpg
Просмотров: 409
Размер:	53.1 Кб
ID:	1413  

Последний раз редактировалось Dioptimizer; 28.12.2013 в 05:55. Причина: дополнение по поводу возможности включения gpio14-15
Dioptimizer вне форума   Ответить с цитированием
Старый 28.12.2013, 09:05   #54
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

ald
Альтернатива, специально для Вас.

Используйте UART_IN(GPIO9) - там вечный ноль, пока не сконфигурируете GPIO в out...
Dioptimizer вне форума   Ответить с цитированием
Старый 28.12.2013, 14:31   #55
ald
Junior Member
 
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0
ald is an unknown quantity at this point
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение

P.S. P.S.
После такого откровения, я думаю, что я Вас точно отпугнул
Нет, не отпугнули. Спасибо за подробное объяснение.

Но, наверное, есть мысл попробовать вначале:
Цитата:
Альтернатива, специально для Вас.

Используйте UART_IN(GPIO9) - там вечный ноль, пока не сконфигурируете GPIO в out...
Спасибо. Буду разбираться и пробовать.
ald вне форума   Ответить с цитированием
Старый 28.12.2013, 19:58   #56
ald
Junior Member
 
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0
ald is an unknown quantity at this point
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Не стал пока ничего править.

Похоже, я чего-то не понимаю либо делаю не то/не так. Еще раз просматривал Wiki OpenWRT по GPIO на MR3020.
Там в таблице в строчках GPIO7 и GPIO29 написано "unused Pulled to ground".
А мультиметром меряю между GND и левым контактом резистора R15 либо R17 с картинок отсюда либо отсюда и получаю 2,6V и при загрузке и когда уже загружена оригинальная BB. GND тоже контакт брал и с первой и со второй картинки. Меряю на припаянном к резистору проводке.

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение
Мне помнится, что человек на форуме OpenWRT просил освободить два GPIO 14-15(хотя я не уверен, что там будет ноль, пока грузится устройство), которые не было возможности контролировать на устройстве, вот ссылка изменений, которых я смог добиться от разработчиков. Можете пропатчить прошивку (профиль mach-tl-mr3020.c) по этому примеру.
Я поставил BARRIER BREAKER (Bleeding Edge, r39139).
По идее там уже должно быть пропатчено, поскольку по Вашей ссылке r35960.

Правда, пробовал цепляться к R11 и R12 справа резистора на картинке - мультиметром не увидел ни 0V ни 2,6V, получил "висящий в воздухе контакт".

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение
Но прежде чем это делать, нужно всё проверить - на роутере установить утилиту io(через opkg) и прочитать с помощью нее область памяти:
Код:
io -4 0x18040000
(будет определенное значение этого GPIO_OE)
Прочитал:
# io -4 0x18040000

WR703N
18040000: 0800c5ff (=1000000000001100010111111111)

MR3020
18040000: 0c0205ff (=1100000000100000010111111111)

Запутался. А что значит 1 а что 0 по этому адресу?

Возьму еще MR703N с припаянными проводами к GPIO 7 и 29. Посмотрю там. Но подозреваю, что там будет 0V как и в другом MR703 на GPIO 14 и 15.
ald вне форума   Ответить с цитированием
Старый 28.12.2013, 20:17   #57
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от ald Посмотреть сообщение
Запутался. А что значит 1 а что 0 по этому адресу?
Каждый бит (всего их 32) соответствует номеру GPIO, отсчет битов производится от нуля до 32 справа налево.
Для функции GPIO_OE(0x18040000) 1 и 0 соответственно вкл./выкл. этой функции для каждого GPIO.
Dioptimizer вне форума   Ответить с цитированием
Старый 28.12.2013, 22:51   #58
ald
Junior Member
 
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0
ald is an unknown quantity at this point
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение
Каждый бит (всего их 32) соответствует номеру GPIO, отсчет битов производится от нуля до 32 справа налево.
Для функции GPIO_OE(0x18040000) 1 и 0 соответственно вкл./выкл. этой функции для каждого GPIO.
С соответствием битов было понятно, а со значением - нет.
Т.е. для GPIO7 функция включена, а для GPIO29 нет?

Возникает вопрос - что начит "функция включена"?
А где указывается исходное значение (значение/напряжение при загрузке)?
Включена - значит можно устанавливать значение напряжения?
С GPIO29 не понятно.

измерения на WR703N после загрузки еще больше запутали.
GPIO7-2.2В
GPIO29-1.6В
GPIO14-0В
GPIO15-0В
GPIO17-0В
ald вне форума   Ответить с цитированием
Старый 29.12.2013, 01:30   #59
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Вообще-то 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.
Dioptimizer вне форума   Ответить с цитированием
Старый 29.12.2013, 16:24   #60
ald
Junior Member
 
Регистрация: 13.10.2013
Сообщений: 14
Вес репутации: 0
ald is an unknown quantity at this point
По умолчанию Re: Управление светодиодами в роутерах TL-MR3020 и TL-WR703N

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение
Вообще-то GPIO29 не существует на процессорах AR933x
Может Вы имели ввиду GPIO28?
Я руководствовался инфой с сайта openwrt об MR3020. А здесь подписаны PINOUTs. В обеих ссылках есть упоминание об GPIO29.

Правда там три или два варианта.
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. Причина: добавление ссылки на схему
ald вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:46. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика