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

RTL8710BX

pvvx

Активный участник сообщества
Для "A" нет такой. Это у "В" в ROM:
Если нажать кнопку FLASH и стартануть RESET, то:
Посмотреть вложение 4724
sdk40b: "doc\UM0112 Realtek Ameba-Z SDK quick start.pdf"
Получаем, как в ESP8266 - загрузку по UART...
Скорость по умолчанию фиксирована - 1500000 Baud, но есть команда переключения.
В принципе, менять не стоит, т.к. CH430 как раз тянет эти 1.5Mbit/s, а другие, большие скорости с ней не стыкуются.
---
Кратко:
1) Формат аналогичен xmodem:
SOH 0x01 Start of Header, начало заголовка (блок 4+128 байт - это отличие от стандарта)
SOH 0x02 Start of Header, начало заголовка (блок 4+1024 байт - это отличие от стандарта)
EOT 0x04 End of Transmission, конец передачи.
ACK 0x06 Acknowledge, положительное подтверждение.
NAK 0x15 Not Acknowledge, отрицательное подтверждение.

2) Модуль передает 0x15 и ждет команды...

2.1) Сначала отрабатывает xModemHandshake(), в ней команды:
0x05, x - UART Set Baud Nx (номера по таблице)
0x07 - End (выход в режим загрузки/записи Flash/RAM)
0x17, a0,a1,a2, s0,s1 - Erase Flash Sectors
0x19, a0,a1,a2, s0,s1, ... 0x06 - Read block Flash
0x21 - FLASH Get Status
0x26, xx - FLASH Set Status

3) После подачи 0x07 - End, переходит в режим записи.
Принимаемые коды в xModemGetFirst():
0x1B - Aborted (ret 7)
0x01 - 128 (фрейм 132 байта) (ret 1)
0x02 - 1024 (фрейм 1028 байта) (ret 1)
0x04 - End of Transmit -> 0x06 (ret 5)
0x18 - Get Cancel (ret 2)
Wait Next Frame Start Timeout (ret 8)


Передача данных для записи в RAM/FLASH производиться как в xmodem, но длина блока данных 4+128 байт или 4+1024 байт. Первые 4-ре байта равны адресу 0x08xxxxxx или 0x10xxxxxx (проверяются только старшие 8 бит - по ним определяется что писать - flash или RAM). Один байт CRC считается просто суммой байт блока данных (с переданным адресом).

0x01, np, ^np, Данные, CRC - передача 132-х байтных боков
0x02, np, ^np, Данные, CRC - передача 1028-ми байтных боков
np - Номер пакета, ^np Номер пакета(дополнение).
При записи flash автоматически производиться стирание (стоит проверка на переход пакета на новый адрес сектора и сектор стирается).


По выходу, передаче EOT (код 0x04), если писалась RAM, то исполняется старт по стандартным адресам в RAM, как загруженного boot из flash. Если писали только flash - "выхода нет" :) - всё по кругу - на начало - пользователь должен жать кнопу reset без кнопки flash (или прописать табличку адресов старта в RAM по формату загрузки boot)

Буфер приема находиться в 0x1003B000 - в него писать не стоит, как и в стек CPU, но всё можно... :)
 

Alexander

Member
Я это читал, после чего и начал пробовать, но модуль не отвечает. Похоже, что вообще никак.
 

pvvx

Активный участник сообщества
После нажатия кнопки c подписью 'RST' и удержанием кнопки 'FLASH' модуль на скорости 115200 выводит:
Код:
<RTL8195A>
ROM:[V0.1]


FLASHRATE:4

UARTIMG_Download 2


Open xModem Transfer on Log UART...

я
я
я
И далее постоянно вывод код NAK = 0x15 на скорости 1500000 бод.
 

pvvx

Активный участник сообщества
На скорости 1500000 бод работают не все чипы USB-UART. Смотрите документацию на чипы и драйверы к ним.
 

Alexander

Member
Да, вот ещё.
Код:
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> reset halt
in procedure 'reset'
in procedure 'ocd_bouncer'


jtag status contains invalid mode value - communication failure
Polling target rtl8195a.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
Previous state query failed, trying to reconnect
jtag status contains invalid mode value - communication failure
Polling target rtl8195a.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 300ms
Previous state query failed, trying to reconnect
Polling target rtl8195a.cpu failed, trying to reexamine
rtl8195a.cpu: hardware has 6 breakpoints, 4 watchpoints
> halt
target halted due to debug-request, current mode: Handler HardFault
xPSR: 0x61000003 pc: 0x0000d350 msp: 0x1003ef00
>
 

pvvx

Активный участник сообщества
На правильном порту-ноге TX чип всегда при старте выдает типа:
Код:
<RTL8195A>
ROM:[V0.1]
FLASHRATE:4
BOOT TYPE:0 XTAL:40000000
IMG1 DATA[1112:10002000]
IMG1 ENTRY[800043b:100021dd]
IMG1 ENTER
CHIPID[000000ff]
Т.е. первые 2 строки обязательно. (если всё не отключено в eFuse)
 

Alexander

Member
Да, примерно так.
Код:
<RTL8195A>
ROM:[V0.1]
FLASHRATE:4
BOOT TYPE:0 XTAL:40000000
IMG1 DATA[1168:10002000]
IMG1 ENTRY[8000541:100021ef]
IMG1 ENTER
CHIPID[000000ff]
Это на UART1
На UART0
Код:
AT COMMAND READY
#
Получается, что дело и впрямь в руках, точнее в голове.
Но я реально не понимаю, как можно что-то грузить по UART1, если GPIOA30 - TX1, занят кнопкой.
 

pvvx

Активный участник сообщества
Но я реально не понимаю, как можно что-то грузить по UART1, если GPIOA30 - TX1, занят кнопкой.
По сбросу проверяется уровень на ноге TX...
2 в 1 - и выход TX и переключатель режима = меньше проводков.
В ESP тоже фича есть - если к TX не прикрутить резистор на питание :)
 

Alexander

Member
Код:
Connecting...
Write Flash data 0x08000000 to 0x08001018 from file: ./build/bin/boot_all.bin ...
Done!
Только кнопку отпускать не нужно, иначе
Код:
Connecting...
Write Flash data 0x08000000 to 0x08001018 from file: ./build/bin/boot_all.bin ...
Error: Write Flash!
Т.е. нажать RESET, нажать FLASH, отпустить RESET и держать FLASH до конца загрузки.
 

Alexander

Member
Ух ты, только заметил.
А как так?
python ./mkb/rtltool.py -p /dev/ttyUSB0 wf 0x00000 ./build/bin/boot_all.bin
Write Flash data 0x08000000 to 0x08001018 from file: ./build/bin/boot_all.bin
 

pvvx

Активный участник сообщества
Т.е. нажать RESET, нажать FLASH, отпустить RESET и держать FLASH до конца загрузки.
Кнопка "FLASH" всего соединяет TX с резистором на GND. При старте это вход, как и все GPIO.
Потом вход TX переключается в push-pull и резистор и кнопка = пофиг.
 

pvvx

Активный участник сообщества
Alexander - т.е. по ходу выяснили, что виновник не руки и не ноги, а предрассудки. А источник предрассудков -> ESP :) :p
 

pvvx

Активный участник сообщества
Web в итоге запустил
Он уже устарел. Не поддерживает WPA3, т.к. на момент выпуска 3 года назад такого ещё не было.
В новом SDK есть...

По старенькому WPA2 соединяется, на новых роутерах передает со скоростью 1.5 Мегабайта/сек (если отключить лог. в конфиге):
1617663918903.png
 

Alexander

Member
Кто скажет, как у него АЦП? Я быстренько посмотрел из вэба "свалки" - шумноват. Прилично шумит даже при замыкании на GND.
Есть смысл с ним возиться или он примерно такой-же, как у ESP8266?
 

pvvx

Активный участник сообщества
Кто скажет, как у него АЦП? Я быстренько посмотрел из вэба "свалки" - шумноват. Прилично шумит даже при замыкании на GND.
Есть смысл с ним возиться или он примерно такой-же, как у ESP8266?
В питание кондер суньте и всё будет ok.
Wifi не ловит.
 
Сверху Снизу