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

Как работать с RTL8710/RTL00 just do it

findeler

New member
Важно !

Здесь я буду потихоньку выкладывать инструкцию как начать работать с RTL. Все инструкции пошаговые и максимально подробные.

НЕ НАДО ТУТ НИЧЕГО ПИСАТЬ , если есть замечания, указания на ошибки, или другие вопросы ( сразу скажу я пока ничего не знаю) пишите в других темах или личку. Здесь только инструкции. Всё не по теме буду просить модератора удалить.



Оглавление. (выделенным цветом последние добавления)

0. Необходимые программы.
1. Программатор для работы с RTL.
2. Установка ST-link адаптера (программатора)
3. Переделка ST-link в J-link.
4. Установка J-flash.
5.Снятие ограничений.
6. Настройка J-Flash под контроллер.
7. Подключение адаптера к контролеру.
8. Проверка связи.
9. RTL00 flasher.
9.1 Базовая работа с программой RTL00 flasher.
10. Память в контроллере RTL8710.
11. Немного о том, что такое IDEEclipse. (пока нет)
12. Установка IDE Eclipse и всего необходимого (под windows).
12.1. установка IDE Eclipse.
12.2 Установка minGW.
12.3 Установка GNU ARM Embedded Toolchain & OpenOCD: Open On-Chip Debugger
12.4 Установка GNU ARM Eclipse Plug-ins.
12.5подключение OpenOCD: Open On-Chip Debugger





0. Необходимые программы.
Папка/архив со всеми необходимыми дистрибутивами и программами упоминаемые в описании. RTL00 Папка по мере написания инструкций дополняется. В корне папки лежит документ как шить RTL just do it.docx со всем написанным здесь. Прямая ссылка вот : КАК шить RTL just do it.docx
Скачайте архив ( это папка на яндекс диске) с дистрибутивами.

1. Программатор для работы с RTL.
Программирование любого чипа на базе архитектуры ARM осуществляется по J-tag или SWD протоколу/интерфейсу. Он не работает через UART (COM) порт. Поэтому шить как ардуину через usb-кабель не получится. Нужен программатор. Это может быть оригинальный SEGGER, оригинальный ST-link, или китайский клон ST-link.

А. Если есть фирменный адаптера от SEGGER то пропустить пункт 2,3,5
Б. Если есть китайский или оригинальный ST-Link адаптер то выполниять по порядку.
В. Если нет адаптера то купить его.



2. Установка ST-LINK адаптера (программатора)
После подключения Stlink адаптера необходимо установить под него драйвера. Есть в архиве в папке “Stlink drivers”или списать здесь: STSW-LINK009 - ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver signed for Windows7, Windows8, Windows10 - STMicroelectronics - STMicroelectronics

После установки драйвера в диспетчере устройств он выглядит так:

2017-02-01_16-31-08.png

Для проверки, что установлен корркетно запустите ST-linkUpgrade.exe из папки «ST link upgrade software” или возьмите здесь:

http://www.st.com/en/embedded-software/stsw-link007.html

После запуска утилита выглядит так, нажмите Device Connect


Будет показана установленная версия прошивки адаптера и возможность апгрейда. (Не знаю связывается ли утилита с сервером когда предлагает апгрейд прошивки или он есть в ней)
2017-02-01_16-53-05.png
Если версию не покажет значит что то не то.

Можете нажать кнопку YES>>>> и тогда произойдёт обновление. По окончанию оно выглядеть будет так. (занимает 10-15 секунд)

2017-02-01_16-53-42.png

Если выдаст такую ошибку, то просто переподключите адаптер.

2017-02-01_16-54-04.png


3. Перепрошить ST-link адаптер в J-link

Переподключите адаптер! Не забудьте !

Запустить программу STlinkreflash.exe

Здесь у меня была проблема не все версии работают. В папке «Stlink upgrade at Jlink» есть две папки с разными версиями программы апдейта та которая работает у меня (более старая) помечена как “working for me”. У вас может заработать какая то другая. Или вообще не заработать. Проблема связана китайский клоном ST-Link. Тут как повезёт. С родным ST-link должна работать всегда. (У меня клон)

Последнюю версию всегда можно взять здесь: SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

Запустите STlinkreflash.exe и дважды согласитесь с предложением (латинская буква A)

2017-02-01_17-16-38.png

У вас отобразится меню с возможными вариантами.

[0]. Quit

[1] Upgrade to J-link ( Превращает ST-Link в J-link)

[2] Upgrade J-link firmware (Обновляет прошивку в J-link)

[3] Restore ST-link (Восстанавливает ST-link из J-link)

Выбираете пункт [1]Upgrade to J-link.


 
Последнее редактирование:

findeler

New member
Если после выполнения пункта вы видите что то вроде такого:
2017-02-01_17-23-31.png


То у вас неподходящая версия STlinkreflash.exe или ваш адаптер не может быть переделан. (Не забудьте переподключить адаптер после работы с ST-link update.Из за этого тоже может не определяться)

Если зависло здесь ( у меня занимает около секунды):

2017-02-01_17-25-37.png

То просто перезапустите утилиту.

Нормальное выполнение программы апдейта выглядит так.

2017-02-01_17-30-07.png

Можно сразу обновить программное обеспечение, после первого пункта выбрав пункт 2.

Выйдите из утилиты.

Stlink пропадёт в дереве устройств.Но драйверов под J-link пока не стоит просто появится неизвестное устройство. (У меня цвет светодиода на адаптере изменился с красного на зелёный но это опционально в зависимости что у вас за адаптер)

4. Установка J-flash.

Взять версию 6.12g можно в папке «Jlink SDK win 612g +keygen» или взять любую версию здесь:

SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace (J-Link Software and Documentation Pack)Для скачивания нажмите click for download

2017-02-01_17-44-21.png

и скачайте последнюю версию нажав кнопку downlod или более старую выбрав older versions

2017-02-01_17-46-05.png

Установите флешер в папку без кирилических символов в пути. (на всякий случай).
 
Последнее редактирование:

findeler

New member
После установки драйвера должны встать автоматически и в диспетчере устройств адаптер должен выглядеть так: (не забудьте переподключить его)

2017-02-01_18-14-39.png

5.Снятие ограничений.

Запустите Jflash.

Закройте окошко открытия проекта.
2017-02-01_17-58-54.png
Идите в меню Help-Licenses

2017-02-01_18-01-37.png

И посмотрите свой серийный номер.

2017-02-01_18-02-43.png

И для снятия ограничений ищите в яндексе по слову rdikeygen. Там всё просто. Лицензию добавите через кнопку Add license.
 
Последнее редактирование:

findeler

New member
6. Настройка под контроллер.

Перезапустите J-Flash и в окошке выбора проекта. Выберите other.

2017-02-01_18-16-56.png

Откроется проводник и выбирите файл RTL8710.jflash есть в папке «RTL00 setting for Jflash»

Это настройки под чип RTL8710.

И нажмите кнопку Start J-Flash.

Окно флешера станет выглядеть так.

2017-02-01_18-22-13.png


7. Подключение адаптера к контролеру.

Для проверки связи необходимо подключить адаптер к контролеру. Скорее всего это будет какая то из этих двух плат.

Изображение модуля.jpg

Подключаются они к стандартгому разъёму Jtag 20 pin вот так:

подключение ST-LINK к RTL8710.jpg

Для работы достаточно двух линий JTAG_CLK (SWCLK) и JTAG_TMS(SWDIO) В данном случае J-link работает по SWD протоколу.

Дополнительное питание в случае платы с USB разъёмом никакое не нужно. Просто подключите его к USB. Для маленькой платы подайте на неё 3-3,6V. Можно ли запитать от 5 вольт не проверял, это на свой страх и риск.

Про USB.

USB разъём НЕ СЛУЖИТ для прошивки, общение через AT команды –да. Использование как обычного UART порта –да. Прошивка НИКОГДА. Особенность ARM. (Вроде так)

О нем, о его драйвере, и как работать с ним будет ниже.

8. Проверка связи.

После подключения контролера к адаптеру и подания на него питания. Запускаем J-flash.

Выбираем в выпдающем меню проект RTL8710 (он уже будет здесь после действий описанных в пункте 5) и жмём кнопку Start Jflash.

2017-02-01_19-22-09.png
 
Последнее редактирование:

findeler

New member
Выбираем Target-Connect

2017-02-01_19-24-39.png

Должно произойти соединение:

2017-02-01_19-28-42.png


Заходим в Target – Manual programming – Read back – Entire chip

Должен начать считывать чип по окончанию выдаст вот такое:

2017-02-01_19-30-46.png


После нажатия кнопки ОК:

Откроется окно с содержимым чипа.

2017-02-01_19-33-19.png

Всё связь установлена !!!

У меня почему то версия 6.12f не могла считать чип конектилась но на попытку считать выдавала ошибку. Сейчас версия 6.12g она работает. Поэтому пробуйте.
 
Последнее редактирование:

findeler

New member
9. RTL00 flasher.

Это флешер (прошивальшик) сделанный коллективным усилием некотоых участников форума Сообщество esp8266 точно @pvvx и вроде кто то ещё. Работает исключительно cRTL8710 (RTL00 RTL01). Есть исходники на форуме, написаны на delphi.

В основном, на начальном этапе, будет нужна для восстановления убитых прошивкой конроллеров. Поскольку пишет всё. Защиты от дурака в ней нет вовсе, поэтому освоение начинайте с умения делать копию фулфлеша, и заливку её обратно.


Поскольку программа сделана на коленке, в ней не всё работает, она может сглючить, чем отличаются версии непонятно и возможно что то ещё , но она работает. В папке «RTL00 flasher» есть две версии программы 0.0.0.0b и 0.0.0.2 отличие версий в версии 0.0.0.2 появилась возможность писать image 3 (зачем и что это не скажу).

2017-02-02_09-44-07.png

Для работы программы необходима библиотека JlinkARM.dll в той же папке что и RT00flasher.exe (она есть в fh[bdt) библиотека берётся из каталога установки J-flasher и может иметь разные версии.

При запуске RTLflasher.exe увидите версию библиотеки:

2017-02-02_09-31-38.png



Жмёте Accept и попадаете в основное окно программы. Описываю версию 0.0.0.0b

Программа конектится автоматически ! В лог окне программы (область 6) должны появится такие строки. В области flash info должны появится значения. О проблемах со связью ниже.


2017-02-02_09-36-07.png


1. Read flash

Чтение флеш памяти микроконтролера. Возможны два варианта чтения:

Fullflash с закладки Region (см скриншот выше).

Если снять галочку с Full Flash то можно прочитать произвольный кусок из flash.

Здесь у меня был глюк, первый микроконтроллер с которого я считал и залил в него его же фуллфлеш благополучно «умер» была ошибка в чтении фулл флеша или ещё где сказать не могу. Что обидное это была единственная evolution board на которой мигал плавно мигал светодиод по умолчанию. Потом я её прошил другим фулом и она заработала, но стартовая прошивка пропала.


И некоторых частей прошивки с закладки Images



2017-02-02_09-51-28.png



В принципе этот чип (особенно купленный в китае) не имеет индивидуальных настроек и калибровок. Более того не зная модель памяти и что как куда компилируется и линкуется всё это бессмысленно, поэтому информация на текущий момент для справки.
 
Последнее редактирование:

findeler

New member
2. Write flash


Аналог чтения но это запись. Всё просто. Есть три закладки Region/Images/Auto. Закладка Images не работает – это нормально в данной версии.


Region запись флеша.

2017-02-02_10-00-09.png


Позволяет записать произвольный кусок флеша в контроллер.

File addr – Указываете с какого байта файла прошивки (его вы выберите когда нажмёте Write Flash)

Flash addr – Указываете с какого адреса будет происходить запись.


File size – Галочка указывает что будет пытаться шить весь файл. Если снять галочку то появится поле размера. В котором нужно указать сколько байт из файла шить.


Иллюстрация как это работает.

2017-02-02_10-18-37.png



Для записи фулфлеша.

File addr: 0x00000000

Flash addr: 0x00000000

File size: галочка.


Размер фуллфлеша 1 MB.


Закладка auto. При отмеченных всех флажках аналогична записи фулл флеша (ну почти, разница как я понимаю в том что в случае фулл флеша пишется абсолютно всё, а в этом случае только программа. Неиспользуемая память не перезаписывается).

2017-02-02_10-22-10.png


Если указать не восемь нулей в качестве адреса а например шесть то у меня почему то не шьётся в версии 0.0.0.2 в версии 0.0.0.0b всё работает.


3,4,5 Без понимания модели памяти и что куда шьётся не нужны. (Я пока её не знаю).


6. Лог.

Всё понятно.

Вот так например выглядит чтение и запись фулл флеша.

2017-02-02_10-34-25.png


7. Verify Write Flash Проверка записи, всегда ставьте галочку хуже не будет.

8. Erase Chip. Стереть чип полностью. (пока не представляю зачем)


9. MAC Мак адрес. (Как понял, каждый девайс должен иметь свой мак адрес, если у вас он один то всё нормально, если несколько с одинаковыми то будет проблема. Китайцы шьют одну прошивку и мак у плат одинаковый, поэтому нужно его менять. Разные поставщики могут иметь разный мак, но в партии скорее всего будет один)


9.1 Базовая работа с программой.

(Чтение фулл флеша и заливка его обратно)

1. После запуска программы она должна соединиться с контроллером. (если нет читайте ниже)


2. Область Read flash – region – галочка на фулл флеш – кнопка read flash.

При чтении может подвиснуть на несколько секунд (5-10 сек) это нормально, по окончанию предложит сохранить считанный фулл флеш на диск.


3. Область Write flash – region –

File addr: 0x00000000

Flash addr: 0x00000000

File size: галочка.

Кнопка Write flash.

При записи так же может подвиснуть на несколько секунд (5-15 сек).


Всё вы прочитали и записали свой флеш !!!


Если связи нет (если зашили на смерть такое возможно)то необходимо следущее.

Запустите J-Flash (выбирите настройки для RTL8710 как указано в 6 пункте) и в меню target наведитесь на пункт connect.

Одновременно с нажатием connect жмите кнопку ресет на evolution board или сажайте на землю вывод CHP-EN. C какой то попытки всё получится. После чего запускайте RTL00 flasher он автоматически присоединится.

2017-02-02_10-58-31.png
 
Последнее редактирование:

findeler

New member
10. Память в контроллере RTL8710


Важно ! Я сам плохо понимаю как она организована информации мало, многое построил на умозаключениях. По большому счёту, знать как она устроена, где и что хранится, человеку пишущему прикладные программы не нужно. Выполняется и бог с ней. Но для общего развития и понимания пытаюсь разобраться. Если видите ошибки или всё схема некорректна пишите в личку или в других моих темах. Поправлю.



Если посмотреть описание чипа RTL8710 то по памяти есть такая информация.


1 Мбайт ROM, 1 Мбайт Flash-память, 512 Кбайт ОЗУ;


Как это понимать.


Физически в любом контроллере существует 2 типа памяти FLASH в неё можно писать (очень медленно и ограниченное число раз) и читать (побыстрее и неограниченно число раз), и после пропадания питания в ней всё сохраняется. И RAM (DRAM,SDRAM,DDRRAM) можно читать и писать очень быстро и неограниченное число раз, но при пропадании питания все данные исчезают.


ROM это (Read only memory) память только для чтения. Физически она располагается в FLASH. Поэтому говоря о ROM, надо понимать что это какая то часть FLASH памяти контролера.


Разница между FLASH и ROM в том что флеш память программа изменять может а ROM нет. (ЭТО делается аппаратным способом, для разделения облати данных от программы в целях безопасности, что бы данные никогда не стали исполняемым кодом.)

2017-02-02_14-06-47.png



В данном чипе ROM=FLASH.

2017-02-02_14-11-36.png

То есть занимает всю Флеш память (если упрощённо) и формально области для чтения записи флеш программой нет. Писать во флеш нужно когда вам надо сохранять состояние программы во время пропадания питания. Хотя обычно токая область есть, но она как правило очень небольшая (от нескольких байт до 2-4 Кбайт и отдельно её не указывают, есть ли она в RTL я не знаю)

Для понимания текста далее.
Прошивка = программа пользователя = firmware.
System data = «Выбор какую прошивку копировать в память»



Упрощённо структура памяти обычного контролера выглядит так.

2017-02-02_14-44-44.png


1.Boot выполняется из флеш, выполняет инициализацию устройств контролера (процессор, порты, таймеры, и.т.д.) копирует пользовательскую программу (прошивку) в память и запускает программу из памяти.


2. Программа выполняясь в RAM подгружает необходимые данные пользователя в оперативную память.


3. Если нужно читает/записывает в доступную для чтения область FLASH.


Область ROM никогда не изменяется при работе программы.



Но в RTL сделали такую вещь как обновление прошивки по через вайфай, вещь удобная но из за этого структура памяти изменилась. Появилась необходимость в двух прошивках.


Структура памяти в RTL8710 Выглядит так.

2017-02-02_14-58-55.png


1. Boot выполняется из флеш, выполняет инициализацию устройств и попадает в область «System data» где указывается какую прошивку (firmware) надо загрузить в память. Копирует нужную прошивку в память и запускает программу из памяти.


1.1 Прошивка из из image2 в состоянии изменить данные в ota image, пользовательских данных, и в system data.


Возможно и саму себя и загрузчик. (нет информации, по идее не должна такого делать)


То есть изменения в ROM доступны не только через программатор но и через wifi.


Есть конечно и другие зоны, но по большому счёту знать что и как не нужно если не собираетесь писать флешер для контролера. Просто информация для общего понимания.


О прошивке через wifi позже.

Продолжение следует...
 

findeler

New member
12. Установка IDE Eclipse и всего необходимого (под windows).

12.1. установка IDE Eclipse

Версия Эклипса 4.6 есть в папке ”Eclipse Neon distrib “ или ей всегда можно списать здесь : Eclipse Downloads

Это обычный архив без установщика просто распакуйте в любую папку. ( киррилических символов в пути лучше избегать)

Запустите Eclipse, при первом запуске он попросит указать каталог где будут хранится все проекты. Задайте его. Если не хотите больше видеть это оконо поставьте галочку.

2017-02-03_12-51-08.png


Вы установили Eclipse !


12.2 Установка minGW

Инсталятор minGW можно найти в папке “minGW” файл mingw-get-setup.exe или взять здесь:

MinGW - Minimalist GNU for Windows

После запуска инсталятора жмите Install и он выдаст такое окошко: в нём укажите каталог установки (напоминаю про отсутствие киррилические символов в пути), галочки у пунктов достаточно понятные добавлять в стартовое меню и на десктоп решайте сами. Первую не снимайте.

2017-02-03_12-58-04.png

После чего он начнёт установку своих компонетов . По окончанию запустит менеджер инсталяций. В нём отметте две позиции «A basic minGW instalation» «The GNU C++ compiler»


2017-02-03_13-00-25.png

Instalation-Apply Changes


2017-02-03_13-02-45.png

Apply Начнётся скачивание и установка необходимых файлов.
2017-02-03_13-11-37.png
 

findeler

New member
После полной загрузки и установки закройте окно. Close.

2017-02-03_13-10-56.png


Добавление пути.

Откройте панель Системы и выберите дополнительные параметры системы.

2017-02-03_13-12-47.png

Выберите переменные среды.

2017-02-03_13-15-17.png


Выберите переменную PATH и нажмите изменить.

2017-02-03_13-16-03.png

Добавьте в конце через точку с запятой, путь куда был установлен minGW после нажмите ОК.
2017-02-03_13-16-44.png
 

findeler

New member
Перезагрузите компьютер !

Для проверки что переменная среды прописалась корректно в консоли (Кнопка:Пуск - поле: Найти программы и файлы - Набрать:cmd.exe)

Наберите gcc

Ответ должен выглядеть так:


2017-02-03_13-46-58.png

Запустите Eclipse. Выбирайте File – New – C++ Project откроется следующее окно.
Выберите Hello World c++ Project и снимите галочку. minGW должен появится в тулчейнах.

2017-02-03_13-25-41.png




Если всё так, то вы корректно установили minGW в среду Eclipse !!
 

findeler

New member
12.3 Установка GNU ARM Embedded Toolchain & OpenOCD: Open On-Chip Debugger
А так же GNU ARM Eclipse Windows Build Tools.

Это всё инсталяторы есть в папках с соответствующим именем в архиве. Или их всегда можно взять здесь:

GNU ARM Embedded Toolchain или здесь GNU ARM Embedded Toolchain | Downloads – ARM Developer

OpenOCD: Open On-Chip Debugger

GNU ARM Eclipse Windows Build Tools

Установка самая обычная, при установке GNU ARM Embedded Toolchain поставьте в конце 3 галки. И жмите Finish.

2017-02-05_09-43-11.png

Закройте появившиеся окно консоли (если оно не закрылось автоматически).

При установке OpenOCD: Open On-Chip Debugger

Поставьте все галочки.

2017-02-05_09-47-17.png


Установка GNU ARM Eclipse Windows Build Tools. Делаете по умолчанию.

Примечание зачем нужно ставить Build Tools нужно ли вообще, и зачем он я не знаю в инструкциях по установке настоятельно рекомендуют.


Все неодходимые Тулчейны установлены !


12.4 Установка GNU ARM Eclipse Plug-ins

В описаниии здесь http://gnuarmeclipse.github.io/downloads/ описан способ как установить через сервер обновлений. Но у меня почему то к этому серверу не коннектится поэтому способ установки плагина, описан через архив.

Архив установщика есть в папке «GNU ARM Eclipse Plug-ins» или взять его можно здесь GNU ARM Eclipse - Browse /Current Releases/3.x at SourceForge.net

Запустите Eclipse.

Выберите Help – Install new software

2017-02-05_10-00-40.png

В открывшимся оке выбираемAdd

2017-02-05_10-02-17.png

Выбираете Archiveи указываете путь к файлу. В данном случае это ilg.gnuarmeclipse.repository-3.2.1-201701141320.zip (но версия, сами понимаете, у вас может быть другая)


2017-02-05_10-02-45.png
 

findeler

New member
В новом окне раскрываете список или ставите общую галочку. Жмёте Next.


2017-02-05_10-18-02.png


Немного что то посчитав (2-15 сек у меня) откроется новое окно в нём просто жмёте Next.

2017-02-05_10-18-56.png
Соглашаетесь с лицензионным соглашением и жмёте Finish

2017-02-05_10-19-14.png

После чего происходит установка, по окончанию Эклипс перезапустится.

В процессе установки у меня ругается что что то неподписано. Соглашаюсь.

2017-02-05_10-19-44.png
GNU ARM Eclipse Plug-ins Установлен. !
 

findeler

New member
12.5подключение OpenOCD: Open On-Chip Debugger

Оно может пройти как автоматически так и нет поэтому надо проверить.

Открываете Эклипс.

Windows - Preferences

2017-02-05_10-30-33.png

В открывшимся окне настроек раскрывате пункт Run/Debugи выбираете OpenOCD.

Если путь к папке bin для Open OCD пустой укажите его. Потом Apply и ОК.



2017-02-05_10-32-08.png

Подключение OpenOCD: Open On-Chip Debugger произведено !
 
Сверху Снизу