pvvx
Активный участник сообщества
Для "A" нет такой. Это у "В" в ROM:Я может чего-то пропустил, есть такая опция для А серии?
Если нажать кнопку FLASH и стартануть RESET, то:
sdk40b: "doc\UM0112 Realtek Ameba-Z SDK quick start.pdf"
Получаем, как в ESP8266 - загрузку по UART...
Скорость по умолчанию фиксирована - 1500000 Baud, но есть команда переключения.
В принципе, менять не стоит, т.к. CH430 как раз тянет эти 1.5Mbit/s, а другие, большие скорости с ней не стыкуются.
Я там, в демке, уже дополнил командой записи всей FullFlash...
Работает, в основном как полная замена ESP8266, но с большим остатком RAM, полным SSL, рабочим ADC (VBAT), да с PMU. В общем для малого потребления наверно более сгодится...Так B серия - годнота?
Но все ломанулиcь на *unix модули...
Если бы написал полный исходник, хоть кое как, то не стал бы просить
Не все команды понатыкал в Borland паскаль, когда разбирал - мне в нем удобнее ковырять, когда разбираю (дизасм) в своей среде... А потом напал лень переводить на что иное. Но т.к. уже докинул туда основные команды: чтение/запись flash, запись RAM, доп. стирание flash секторов, ... то на первое время хватит для пользователей.
Кратко:
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, но всё можно...
Исходники паскаля кину в личку... в них всякие retry xmodem-а не вписаны, только часть.
Последнее редактирование: