• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение MT7688AN HLK-7688A

sbhidden

New member
LOG - попытка загрузки прошивки через TFTP.
LOG2 - весь лог при загрузке по умолчанию
 

Вложения

  • 2.7 KB Просмотры: 5
  • 5.9 KB Просмотры: 7

sbhidden

New member
нет транса, а по резистору на выход и вход чипа и 2 кондера с каждого резистора на пару в разъеме... Плохо безусловно, но работает.
это чудо инженерной мысли я уже видел) да, работает...
 

Вложения

pvvx

Активный участник сообщества
это чудо инженерной мысли я уже видел) да, работает...
Но с условиями! Точно не помню, но требует или прямо комп или роутер.
Различие в том, что у вас и выходит, т.к. комп или ваш хаб разрывает соединение при настройке куда и чего подключено (перехлест или нет) и определения скорости...
А вот роутер держит стабильно линии и не дергается, не вызывая эксцессов у модуля.
Остальное делайте хоть по этому https://esp8266.ru/forum/threads/mt7688an-hlk-7688a.2934/#post-59964
 

pvvx

Активный участник сообщества
Возможно что надо и наоборот - чтобы линии сбрасывались. Точно не помню, но факт такой есть - в каком-то из случаев не работает и не грузит именно как у вас.
 

pvvx

Активный участник сообщества
Ещё это попробуйте (на модуле с прошивкой по умолчанию так):
SDK 5.0.S.0
[ 0.000000] Linux version 3.10.14 (root@ubuntu) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 unknown) ) #42 Mon Feb 18 16:05:35 CST 2019
[ 0.000000] console [ttyS1] enabled
...
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
...

Может надписи не выводит, а работает...
 

sbhidden

New member
Так... свою проблему решил...
нашел на схемах других плат, что трансформатор для MT7688 средней точкой не подключается ни к чему.
делал по опыту RT5350(HLK-RM04), там средняя точка подключается к VDD1.8v. (без этого не работает)
У других средний провод подтянут к земле.
Здесь же, видимо, по схеме PUSH-PULL выводы сделаны (для знакомых со звуковыми усилителями схема МОСТ).
решил сделать напрямую без деталей совсем.
В RJ45 обжал 2 пары по "B"-варианту, с другой стороны припаял к "гребенке" [MDI_TP_P1/MDI_TN_P1 +MDI_RP_p1/MDI_RN_P1]
Длина 10 см. воткнул в свич - заиграло, прошилось.
@pvvx, спасибо за идеи.
Главное - помогло. Хоть и пришлось самому в схемотехнике покопаться поглубже.
 

pvvx

Активный участник сообщества
Главное - помогло. Хоть и пришлось самому в схемотехнике покопаться поглубже.
та тама не схемотехника, а кривой boot. Не правильные задержки и кишмиш с опросом контроллера...
Именно та китайщина, что и всегда ранее имели в веду...
После загрузки оно и на соплях работает, с нормальными дровами. Да глючит и корючит, но пересогласовывается и вытягивает...
 

pvvx

Активный участник сообщества
А в boot говнокод впадает в ступор и навсегда. И так у 90% boot-ов - Linux и красноглазики...
 

pvvx

Активный участник сообщества
Скоро матом ругаться начну, т.к. предстоит опять переписывать всё после энтих краноглазков и любителей правил написания в языках для своего нового контроллера...
 

pvvx

Активный участник сообщества
Ну не смогли написать нормально на LAN, но зачем тогда убрали "0" ?
RESET MT7628 PHY!!!!!!
Please choose the operation:
0: Load system code then write to Flash via SERIAL.
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
5: Load system code then write to Flash via USB Storage.
7: Load Boot Loader code then write to Flash via Serial.
8: Start Web Server to load system code.
9: Load Boot Loader code then write to Flash via TFTP.

И вообще - в каком состоянии надо быть, чтобы в единственный UART одним кодиком на любой Baud остановить загрузку навсегда?
 

sbhidden

New member
Ну не смогли написать нормально на LAN, но зачем тогда убрали "0" ?
RESET MT7628 PHY!!!!!!
Please choose the operation:
0: Load system code then write to Flash via SERIAL.
Это то самое, чего не хватало в моем случае))) да, долго, но работало бы без бубнов))
пару картинок для пояснений:
RT5350(HLK-RM04) vs MT7688AN(HLK-7688A)
 

Вложения

lublupospat

New member
Приветствую всех
HLK-7688A
собрана прошивка 19.07.1

Стоит

kmod-i2c-code
kmod-i2c-mt7628
i2c-tools
kmod-hwmon-core
kmod-hwmon-ads1015

Может кто сталкивался
Вопрос по hwmon. Точнее kmod-hwmon-ads1015 модулю
в /sys/class/hwmon пусто
 

Stari40K

New member
Прошу прощения, может это уже и "некро-ответ", но всё-же.
Знак "=", а не "|=".
В итоге, в коде от Linkit, получаем RALINK_REG(RALINK_PIO_BASE+PIO_SET1) = 0xFFFFFFFF;
Выражение a != b подразумевает a = a | b, т.е. побитовое ИЛИ над a и b

Насколько мне известно побитовое ИЛИ устанавливает в 1 результат бита, где хотя-бы один из двух (а или b) имеет этот бит равным 1 ?

Далее, выражение ( 1<<12 ) подразумевает сдвиг 1 на 12 бит влево, т.е. все остальные биты это нули, результат-же такой 0x00001000 или в двоичном виде b 000 0000 0000 0000 0000 1000 0000 00000.
Побитовое ИЛИ для 0xFFFFFFFF | 0x00001000 = > 0xFFFFFFFF (что вполне естественно). Если поставить просто знак равенства, то регистр будет заполнен полностью значением справа, т.е. 0x00001000.

"|=" Используется что-бы затронуть (установить в 1 ) только нужные биты, а остальное оставить как есть. Как собственно и "^=" для их установки необходимых битов в 0.

Полагаю результат 0xFFFFFFFF был т.к. этот регистр был заполнен этим значением по-умолчанию или ранее. (Не разбирался взял ваше значение за основу)

Относительно адруинщиков или как там их. Да, практика визуально определять биты пришла оттуда, а может и ещё раньше от АTMEL-щиков. Отсюда и происходят строки кода типа.
RALINK_REG(RALINK_PIO_BASE+PIO_SET1) |= (1<< SOME_DATA_BIT);

Как показывает практика, в процессе конфигурации лучше стразу устанавливать весь регистр целиком RALINK_REG(RALINK_PIO_BASE+PIO_SET1) = 0x12345678; //0x12345678 необходимое значение
Это сокращает кол-во кода, но правда усложняет его восприятие (помогают комментарии:)). Используется это тогда, когда память МК ограничена или её очень мало, например целых 8кб :).

З.Ы. Расписал подробно с целью более-менее раскрыть вопрос. Цели задеть Вас не преследовал, думаю Вы всё это и так знаете.
 

Stari40K

New member
Упс! Мы столкнулись с некоторыми проблемами.
На сервере произошла ошибка. Пожалуйста, попробуйте позже.
 

Stari40K

New member
Только омега немножко собрана как "Device Mode" и свитч там не задействован вовсе.
Пины, которые шарятся с лановскими портами задействованы на другие, цифровые функции.
Заняв только один лановский порт как цифровой, который шарится с SPIS, другие пытался настраивать как аналоговые AGPIO_CFG, но как в дашике сказано
(note: When any bit of bit[20:17] is set to 1, P1 ~ P4 will be swtiched to digital PADs together.)
0: Analog PAD
1: Digital PAD
Как только один настроил как цифровой, остальные отваливаются.
Но это не последний прикол от медиатека.
Настраиваю все линии SPIS как gpio output, начинаю дрыгать линией SPIS_MISO.
Вижу дрыгается не только SPIS_MISO, но и SPIS_MOSI.
Дрыгаю линией SPIS_MOSI, дрыгается только она, опять начинаю дрыгать линией SPIS_MISO и болезнь прошла, дрыгается только SPIS_MISO, а SPIS_MOSI уже не дрыгается как в первом случае.
Пару дней назад начал разбираться с омегой. Точнее так, омега валялась давно, даже развел и заказал платку под определенную задачу. За эти пару дней - спаял, запустил и написал немножко кода.
Появилась задача - для реализации которой необходимо 2а езернета. Цитаруемые Вами строки в даташите нашёл, но ситуацию это не особо прояснило. Этому даташиту, по-наполнению до STM-овских очень далеко.
Первым был порыв конфигурировать регистры на прямую прям из линукса, на этом этапе написал (на golang) софтинку читающую данные из регистров и выводящую в удобном виде ( HEX Маленьких и Больших индейцев, а также бин и стринг), что-то расширенного devmem.
Писать в не пробовал, решил сначала ознакомиться с полной принципиальной схемой омеги и омеги+ (пока не нашел).
Я так понимаю. тот Ethernet, который выведен на омеге это WAN, а при активации любого из P1-P4 мы активируем SWITCH.

В общем, у меня несколько вопросов к Вам и другим участникам форума:
0. Где можно глянуть полную принципиальную схему по омеге ?
1. Как из Device Mode перевести в Switch/gateway Mode путём редактирования конфига(ов) в source (Я так понял Вы делали это именно так) ?
2. Если просто активировать switch mode изменением регистра не станет-ли плохо омеге/омеге+ учитывая текущую распаянную элементную базу?

Всем за ранее благодарен.
 

Алексей.

Active member
0. Где можно глянуть полную принципиальную схему по омеге ?
В открытом доступе не на омегу2 схем не встречал.
Появилась задача - для реализации которой необходимо 2а езернета.
Может я чего-то не разглядел в распиновке, только из 5-ти портов с чипа на улицу выведен (полностью) только один P0.
Код:
P1_TP SPIS_CS/GPIO#14/PWM_CH0 НЕ ВЫВЕДЕН!
P1_TN SPIS_CLK/GPIO#15/PWM_CH1
RP_P1 SPIS_MISO/GPIO#16/UART_TXD2
RN_P1 SPIS_MOSI/GPIO#17/UART_RXD2

TP_P2 UART_TXD2/GPIO#20/PWM_CH2/SD_D5 НЕ ВЫВЕДЕН!
TN_P2 UART_RXD2/GPIO#21/PWM_CH3/SD_D4 НЕ ВЫВЕДЕН!
RP_P2 PWM_CH0/GPIO#18/SD_D7
RN_P2 PWM_CH1/GPIO#19/SD_D6

TP_P2 SD_WP/GPIO#22 НЕ ВЫВЕДЕН!
TN_P3 SD_CD/GPIO#23 НЕ ВЫВЕДЕН!
RP_P3 SD_D1/GPIO#24 НЕ ВЫВЕДЕН!
RN_P3 SD_D0/GPIO#25 НЕ ВЫВЕДЕН!

RP_P4 SD_CLK/GPIO#26 НЕ ВЫВЕДЕН!
TN_P4 SD_D2/GPIO#27 НЕ ВЫВЕДЕН!
RN_P4 SD_CMD/GPIO#28 НЕ ВЫВЕДЕН!
TP_P4 SD_D3/GPIO#29 НЕ ВЫВЕДЕН!
1. Как из Device Mode перевести в Switch/gateway Mode путём редактирования конфига(ов) в source (Я так понял Вы делали это именно так) ?
2. Если просто активировать switch mode изменением регистра не станет-ли плохо омеге/омеге+ учитывая текущую распаянную элементную базу?
Там внутри, кроме чипа, стекляшки, флешки, рама и небольшой smd мелочевки, ничего нет, учитывать нечего.
В openwrt все уже отредактировано, выбираем подходящий профиль, собираем загружаем и настраиваем.
 

pvvx

Активный участник сообщества
Прошу прощения, может это уже и "некро-ответ", но всё-же.

Выражение a != b подразумевает a = a | b, т.е. побитовое ИЛИ над a и b

Насколько мне известно побитовое ИЛИ устанавливает в 1 результат бита, где хотя-бы один из двух (а или b) имеет этот бит равным 1 ?

Далее, выражение ( 1<<12 ) подразумевает сдвиг 1 на 12 бит влево, т.е. все остальные биты это нули, результат-же такой 0x00001000 или в двоичном виде b 000 0000 0000 0000 0000 1000 0000 00000.
Побитовое ИЛИ для 0xFFFFFFFF | 0x00001000 = > 0xFFFFFFFF (что вполне естественно). Если поставить просто знак равенства, то регистр будет заполнен полностью значением справа, т.е. 0x00001000.

"|=" Используется что-бы затронуть (установить в 1 ) только нужные биты, а остальное оставить как есть. Как собственно и "^=" для их установки необходимых битов в 0.

Полагаю результат 0xFFFFFFFF был т.к. этот регистр был заполнен этим значением по-умолчанию или ранее. (Не разбирался взял ваше значение за основу)

Относительно адруинщиков или как там их. Да, практика визуально определять биты пришла оттуда, а может и ещё раньше от АTMEL-щиков. Отсюда и происходят строки кода типа.
RALINK_REG(RALINK_PIO_BASE+PIO_SET1) |= (1<< SOME_DATA_BIT);

Как показывает практика, в процессе конфигурации лучше стразу устанавливать весь регистр целиком RALINK_REG(RALINK_PIO_BASE+PIO_SET1) = 0x12345678; //0x12345678 необходимое значение
Это сокращает кол-во кода, но правда усложняет его восприятие (помогают комментарии:)). Используется это тогда, когда память МК ограничена или её очень мало, например целых 8кб :).

З.Ы. Расписал подробно с целью более-менее раскрыть вопрос. Цели задеть Вас не преследовал, думаю Вы всё это и так знаете.
А цель этого? Ранее указана явная ошибка и она в том, что производится чтение регистра и операция с этим значением, а при чтении данного регистра его значение всегда равно -1 и выставление нужных бит не происходит. Это вам не си и не методы, про что вы там калякаете, а аппаратная зависимость - данные регистры не предназначены для операции чтения.
 
Сверху Снизу