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

RTL+OpenOCD+STLinkV2

nikolz

Well-known member
Добрый день,
------------------------------------
Буду выкладывать здесь результаты решения следующей задачи:
---------------------------
Сделать систему отладки и прошивки RTL на основе Openocd и ST-Link-v2.
В отличии от описанного pvvx, я не хочу менять прошивку на jLink и не хочу использовать софт от SEGER.
т е только openocd и ST-Link-v2.
использую RTL8710 OpenOCD support is created by Rebane
В результате хочу сделать так, чтобы не надо было ничего допиливать и доваливать кучу стороннего платного софта.(ну хочу!)
----------------------------------
команда read_mac:
---------------
Open On-Chip Debugger 0.10.0-dev-00189-g554313b-dirty (2016-01-12-08:19)
Licensed under GNU GPL v2
For bug reports, read
OpenOCD: Bug Reporting
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 4000 kHz
adapter_nsrst_delay: 100
rtl8710_reboot
Info : clock speed 4000 kHz
Info : STLINK v2 JTAG v30 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.182269
Info : rtl8710.cpu: hardware has 6 breakpoints, 4 watchpoints
rtl8710.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000100 msp: 0x1ffffffc
initializing RTL8710 flasher
faultmask (/1): 0x01
sp (/32): 0x20000000
pc (/32): 0x10001000
RTL8710 flasher initialized
MAC address: 00:F8:87:11:00:12




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

nikolz

Well-known member
команда read_id
-----------------------------
Open On-Chip Debugger 0.10.0-dev-00189-g554313b-dirty (2016-01-12-08:19)
Licensed under GNU GPL v2
For bug reports, read
OpenOCD: Bug Reporting
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 4000 kHz
adapter_nsrst_delay: 100
rtl8710_reboot
Info : clock speed 4000 kHz
Info : STLINK v2 JTAG v30 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.183833
Info : rtl8710.cpu: hardware has 6 breakpoints, 4 watchpoints
rtl8710.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000100 msp: 0x1ffffffc
initializing RTL8710 flasher
faultmask (/1): 0x01
sp (/32): 0x20000000
pc (/32): 0x10001000
RTL8710 flasher initialized
manufacturer ID: 0xC2, memory type: 0x20, memory capacity: 1048576 bytes
 

A_D

Active member
Как я помню в одной из тем про RTL разбирали\обсуждали скрипты от Rebane и там довольно много было не правильно, думаю проще адаптировать уже готовые скрипты из того же примера прошивки GitHub - pvvx/RTL00_WEB: Simple web server for RTL8710AF под StLink v2, там есть выбор dap-link \ j-link и можно по аналогии добавить st-link.
 

A_D

Active member
Я читал этот разбор. pvvx написал, что у других все плохо, поэтому он сделал по-своему.
-----------------------
Но у меня пока работает и ошибок нет.
Первый вариант поста видел - у вас таки не сразу заработало, а сейчас не пойму, если работает - в чем вопрос тогда..

Что же касается разработки pvvx.
Вы сами-то пробовали что нибудь сделать по аналогии?
у меня не получилось.
Я разбирался и по большей части как раз вырезал все не используемое, но я только j-link использую и адаптировал под VS. Пример тут - GitHub - ADElectronics/RTL00_WEB_WS2812

мне проще изучить документацию и другие англоязычные примеры.
В них хотя бы никто не оскорбляет других разработчиков , в отличии от постов pvvx.
В коде\доках у pvvx тоже вроде оскорблений нет. ;)

ЗЫ. Модераторам. Тему лучше перенести в SDK раздел - тут не по железу как бы вопрос..
 

nikolz

Well-known member
команда read dump.bin 0 1048576 байт
----------------------
Вот результат команды вывода дампа памяти:
RTL8710 flasher initialized
read offset 0
dumped 262144 bytes in 2.400244s (106.656 KiB/s)
read 262144 bytes
read offset 262144
dumped 262144 bytes in 2.883410s (88.784 KiB/s)
read 262144 bytes
read offset 524288
dumped 262144 bytes in 2.462588s (103.956 KiB/s)
read 262144 bytes
read offset 786432
dumped 262144 bytes in 2.805480s (91.250 KiB/s)
----------------------
Скорость вроде бы нормальная.
 
Последнее редактирование:

pvvx

Активный участник сообщества
В отличии от описанного pvvx, я не хочу менять прошивку на jLink и не хочу использовать софт от SEGER.
т е только openocd и ST-Link-v2.
использую RTL8710 OpenOCD support is created by Rebane
В результате хочу сделать так, чтобы не надо было ничего допиливать и доваливать кучу стороннего платного софта.(ну хочу!)
На STlink скрипты тоже выкладывались, вы опоздали на год. Тут что-то осталось GitHub - pvvx/rtl00TstMinAmebaV35a: RTL00 (RTL8710AF) Test Minimal AmebaV3.5a GCC. На компе, в бэкапе, есть уже отлаженные и адаптированные варианты под новые проекты...
И не выдумывайте, что надо что-то допиливать - я использую большой офиц. черный Jlink, купленный ужасно давно и ничего не допиливал. Ставлю положенный к нему софт и всё шустро работает :p Перепрограммированные STlink - тормознее большого Jlink в мин. 2 раза. Они быстрее только вариантов STLink, тоже в 2 раза. На уровне DAP-Link. По этому все они заброшены, а SEGGER остался. Ну а RTL-"В" программируются по COM-порту, до предела битрейта дешевых USB-UART, т.е. быстрее чем ваш STLink. И вы нарушаете - STLink должен использоваться только на STM. JLink разрешен в образовательных и некоммерческих вариантах :p По этому у вас один выбор - DAP-Link.
 
Последнее редактирование:

nikolz

Well-known member
На STlink скрипты тоже выкладывались, вы опоздали на год. Тут что-то осталось GitHub - pvvx/rtl00TstMinAmebaV35a: RTL00 (RTL8710AF) Test Minimal AmebaV3.5a GCC. На компе, в бэкапе, есть уже отлаженные и адаптированные варианты под новые проекты...
И не выдумывайте, что надо что-то допиливать - я использую большой офиц. черный Jlink, купленный ужасно давно и ничего не допиливал. Ставлю положенный к нему софт и всё шустро работает :p Перепрограммированные STlink - тормознее большого Jlink в мин. 2 раза. Они быстрее только вариантов STLink, тоже в 2 раза. На уровне DAP-Link. По этому все они заброшены, а SEGGER остался. Ну а RTL-"В" программируются по COM-порту, до предела битрейта дешевых USB-UART, т.е. быстрее чем ваш STLink. И вы нарушаете - STLink должен использоваться только на STM. JLink разрешен в образовательных и некоммерческих вариантах :p По этому у вас один выбор - DAP-Link.
Я использую STLink-v2 купленный у китайцев за копейки и никакого софта туда не пишу (это и есть допиливание - переделка в jLink)
и никаких прог от SEGER не надо.
В Вашем проекте MP3( очевидно старом ) требуется куча софта от SEGER плюс ваше допиливание проги для педелки STLink в jLINK.
Понятно, что Вы делали для профи
А у меня все просто - также как запись во флеш ESP .
-----------------------------------------
Относительно скорости.
У меня получилось чтение 1 мбайта флеш 10 секунд.
А быстро - это сколько у Вас получилось - 5 секунд на 1 Мбайт?
------------------------------
 

pvvx

Активный участник сообщества
Я использую STLink-v2 купленный у китайцев за копейки и никакого софта туда не пишу (это и есть допиливание - переделка в jLink)
и никаких прог от SEGER не надо.
В Вашем проекте MP3( очевидно старом ) требуется куча софта от SEGER плюс ваше допиливание проги для педелки STLink в jLINK.
Понятно, что Вы делали для профи
А у меня все просто - также как запись во флеш ESP .
-----------------------------------------
Относительно скорости.
У меня получилось чтение 1 мбайта флеш 10 секунд.
А быстро - это сколько у Вас получилось - 5 секунд на 1 Мбайт?
------------------------------
Поймете только когда поработаете с нормальным JLink, что использовать STLink или DAP-Link утомительно. Там вторая часть - OpenOCD и её тормозные коммуникации, GDB... Т.е. без неё, напрямую, вообще ни никак. Это надо инсталлировать, каждый раз запускать, на что и уходит большая часть времени.
Выходит опять всё наоборот :) С STLink надо копаться, а c JLink - просто включить и использовать. В итого набегает существенная разница по скорости работы с устройством. Даже если вы перепрограммируете STLink в Jlink (железо то одно!), общая разница будет в не менее 3-х раз. Об остальном и разговор и не идет - сравнивать их невозможно - Jlink годиться для сотен применений, а ... - единичные и единичное ПО. У STLink плохо написан драйвер и сам протокол слишком избыточный и не оптимизирован под JTAG-и. Это ещё одна дополнительная причина тормоза даже при одинаковом битрейте. (Но у Jlink на этом-же STM32F1xx оптимизирован на в два раза больший трансфер - более 2-х Мб/сек уверенно, а у ST - до одного... Ну и у моей используемой коробки JLink более 10 Мбит/сек, а не до 1 Мбит в пике как у вашего STLink. Так что сами посчитаете... ) Покопайтесь в более годичной давности темах - там приведены сравнения по скоростям всех описываемых тут адаптеров и не одним лицом...
Сделали бы DAP-Link нормальным - никто бы не бегал на другие JTAG, но их делают на самых хилых MCU у которых в пределе Булка УСБ дает до 1 Мб/с. Там для прошивки вообще не надо стороннего ПО...
 
Последнее редактирование:

nikolz

Well-known member
Поймете только когда поработаете с нормальным JLink, что использовать STLink или DAP-Link утомительно. Там вторая часть - OpenOCD и её тормозные коммуникации, GDB... Т.е. без неё, напрямую, вообще ни никак. Это надо инсталлировать, каждый раз запускать, на что и уходит большая часть времени.
Выходит опять всё наоборот :) С STLink надо копаться, а c JLink - просто включить и использовать. В итого набегает существенная разница по скорости работы с устройством. Даже если вы перепрограммируете STLink в Jlink (железо то одно!), общая разница будет в не менее 3-х раз. Об остальном и разговор и не идет - сравнивать их невозможно - Jlink годиться для сотен применений, а ... - единичные и единичное ПО. У STLink плохо написан драйвер и сам протокол слишком избыточный и не оптимизирован под JTAG-и. Это ещё одна дополнительная причина тормоза даже при одинаковом битрейте. (Но у Jlink на этом-же STM32F1xx оптимизирован на в два раза больший трансфер. Ну и у моей используемой коробки JLink более 10 Мбит/сек, а не до 1 Мбит в пике как у вашего STLink. Так что сами посчитаете... ) Покопайтесь в более годичной давности темах - там приведены сравнения по скоростям всех описываемых тут адаптеров и не одним лицом...
Сделали бы DAP-Link нормальным - никто бы не бегал на другие JTAG. Там для прошивки вообще не надо стороннего ПО...
Вы все правильно пишите, но забываете , на каком форуме Вы призываете покупать проф оборудование для поделок.
---------------------------------
Подвожу итоги того, что у меня получилось и сколько я на это затратил времени (сравните со своими затратами профессионала)
Резюме:
Задача
запись кода во флеш (как для ESP) и его проверка.
-------------------
STLink - ничего не надо пилить. просто подключаем к USB и 2 провода и 2 питание к RTL.
---------------------
3 батника:
записать флеш ,
читать флеш
сравнить флеш с файлом.
-------------------------------
Ничего не пилил и не доделывал.
---------------------------------
Никакого софта кроме openocd и софта Rebane.
---------------------------------
Скорость обновления флеш за 10 секунд меня устраивает.
----------------------------------
Так как с этим чудом openocd не встречался, то ушло 5 дней,
чтобы поставить ваш пример установить софт SEGER собрать все
понять что это сложно и мне не нужно
и сделать за 1 день то,
что написал выше
при этом спасибо г-ну Rebane
за быстрые и качественные ответы на пару вопросов.
------------------------------------
Относительно отладчика пока не доделал, так как разбираюсь в настройках eclipse с openocd.
=================
Т е тему начал с нуля ( на галерах не работал)
------------------------------------
" Все не так уж сумрачно вблизи"
 

pvvx

Активный участник сообщества
при этом спасибо г-ну Rebane
за быстрые и качественные ответы на пару вопросов.
Он ещё жив, в смысле помнит про данный загрузчик?
Тогда передайте ему - пусть исправляет боле пяти грубых ошибок в нем. Мне вот не повезло - нарвался на его код и в итоге потерял не менее недели, на разборку и последующую переделку... Надо было самому с нуля писать. А то в итоге вышло, что распространил самую неудачную концепцию программатора по самим алгоритмам...
 
Последнее редактирование:

nikolz

Well-known member
Он ещё жив, в смысле помнит про данный загрузчик?
Тогда передайте ему - пусть исправляет боле пяти грубых ошибок в нем. Мне вот не повезло - нарвался на его код и в итоге потерял не менее недели, на разборку и последующую переделку... Надо было самому с нуля писать.
---------------------------
А мне повезло, у него нет ошибок.
----------------------------
Если бы Вы не страдали манией величия, то спросили бы у него то, что вам не ясно (у меня ушло на это примерно столько же сколько потратил на треп с вами в этой теме) и не тратили бы свое драгоценное время.
---------------------
Поэтому передайте свои претензии тому, кто в зеркале.
 

pvvx

Активный участник сообщества
Начните с более понятного:
Вот это что?
MAC address: 00:F8:87:11:00:12
Нафига это было читать по абсолютному адресу и ещё приписывать что это MAC? Там сжатая структура хранения и адрес не фиксирован... Исходник развертки дал.
Выложенное на гит имеет другой код, чем уже встроенный в скрипт. Т.е. не собирается его флешер :p В итоге у автора нет рабочих исходников - пусть так и останется :)
Делает ошибки при записи на концах блоков... всё давно описано и не буду повторяться - нет времени на это - сами исправляйте и ищите где описал :p
И давно всё, кроме самого общего алго исправлено.
Seger JFlash давно работает с RTL-ками серии "A" своим фирменным софтом...
В IAR свой флешер от Ameba и исходники даны. STLink там ужасно стыкуется - работать невозможно.
У MBED свой вариант и DAP-Link в IAR работает, как и JLink более менее... У STLink нет сигнала reset, а без него с SWD замучаетесь...
Тем более с RTL серии "A" я часто использую JTAG, а не SWD... Уж для отладки только он стабилен. Для отладки флешеров на RTL серии "A" не требуется - всё грузится в RAM базовыми командами драйвера Jlink...
В итоге нет никаких исходников на STLink и они не нужны никому из-за нераспространенности его.
 
Последнее редактирование:

nikolz

Well-known member
Сделал загрузку кода в RAM для отладки программ.
Написал тест bare-metal без OC, который выводит на COM показания таймера.
Это вариант проги работы с датчиками без загрузки OS и WIFI т е аналог работы в boot для ESP.
--------------------------------
swj_newdap
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 4000 kHz
adapter_nsrst_delay: 20
rtl8710_reboot
cortex_reboot
Info : clock speed 4000 kHz
Info : STLINK v2 JTAG v30 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.185398
Info : rtl8710.cpu: hardware has 6 breakpoints, 4 watchpoints
rtl8710.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000100 msp: 0x1ffffffc
2352 bytes written at address 0x10001000
downloaded 2352 bytes in 0.015537s (147.833 KiB/s)
faultmask (/1): 0x01
sp (/32): 0x20000000
pc (/32): 0x100010D5
shutdown command invoked
-----------------------
Время загрузки кода в RAM составляет 15 ms скорость 147 KB/s.
И зачем крутое оборудование?
 

pvvx

Активный участник сообщества
Сделал загрузку кода в RAM для отладки программ.
Время загрузки кода в RAM составляет 15 ms скорость 147 KB/s.
И зачем крутое оборудование?
А почему не написали время вывода сообщения об загрузке на экран? :)
Считают не время отправки байта, а время затраченное на всю процедуру загрузки. В данном случае у вас в это входит инсталляция и запуск OpenOCD + mingw.
И где отладка? Ведь Jtag/swd для этого, а не только для загрузки.
Да, и у вас смешная строчка - adapter speed: 4000 kHz.
Не линкуется на данной скорости RTL. Не всегда. Для старта связи надо ставить меньше. После инициализации интерфейса swd в чипе можно и переключить на большую скорость.
Тем более "adapter speed: 4000 kHz" - это враки. Там сколько не поставь, более 2000 в STLink в пике не получить.
В общем потыркаетесь и поймете, что без сигнала reset от Jtag работать с RTL серией "A" почти невозможно. Будете ручками с дцатой попытки пытаться загрузить в них что... :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Москва не сразу строилась.
Да сначала была построена, а потом имя дали. Итого на данное действо затрачено 0 сек. :p
Пока сделал ровно тоже что есть в UDK ESP.
Тут другой контроллер и SDK и не действуют ограниченные методы работы с ESP.
Что написали то и будет.
Поэтому ваши вопросы типа:
Хочу посмотреть время старта и потребление без WIFI
но когда делаю рестарт то запускается код из флеш и судя по току с включенным WIFI (60 ма)
а при старте из RAM (13 ма) похоже на ESP, но меньше.
Каким кодом отключить WIFI модуль.
Спасибо.
Время старта чего? Того что вы напрограммировали и записали в него?
Какое время старта у STM32F103? :) (Время старта генератора кварца? Или что?)
Без вызова включения WiFi через драйвер вы его не включите. Это пока. Т.е. пока не разберетесь и не сделаете собственные дрова WiFi. Но это вам надо?
Время инициализации RTOS? (ну там вроде прямая зависимость от CLK CPU на скорость выполнения пару процедур - наверно до 1 ms) Но вдруг вы её не используете - её использование не обязательно в данном WiFi-SoC - зависит от постановки вашего проекта.
На сегодня SDK на RTL серии "A" у меня содержит более 1700 файлов "*.c" и "*.h". Т.е. всё, кроме нескольких процедур дров WiFi есть. Для проекта набираете что хотите и что вам надо или пишите сами, а примеры берете из SDK.
Попытайтесь конкретнее ставить тех. вопросы, а не в общем плане о погоде...Только тогда можно технически ответить на них.
Хотите "сэмулировать" ESP8266 - это совсем другая задача.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Я Вас правильно понял, что ток потребления 60 ма - это с выключенным WiFi
Это вы сами выдумали.
В моих проектах, в хидере переключения CLK CPU написано потребление CPU при разных настройках. Так-же есть несколько тем на форуме, где произведены измерения.
У вас используется другая библиотека, а не SDK от Ameba и изучать что там вы ней наковыряли я не имею возможностей.
По поводу потребления чипом откройте оф. документацию на него в SDK. Там данные есть и в пару мест (в неконкретных описаниях) они завышены, на что уже указывал...
 
Последнее редактирование:

nikolz

Well-known member
Это вы сами выдумали.
В моих проектах, в хидере переключения CLK CPU написано потребление CPU при разных настройках. Так-же есть несколько тем на форуме, где произведены измерения.
У вас используется другая библиотека, а не SDK от Ameba и изучать что там вы ней наковыряли я не имею возможностей.
Вы хотя бы читали то что написали.
Чуть выше :
"Без вызова включения WiFi через драйвер вы его не включите." - Ваши слова ?
У меня нет в программе никакого драйвера WiFI.
Но ток потребления 67 ма.
Т е согласно вашему же утверждению - WiFi у меня не ВКЛЮЧЕН.
Это не я придумал, а Вы сказали.
 

pvvx

Активный участник сообщества
Вы хотя бы читали то что написали.
Чуть выше :
"Без вызова включения WiFi через драйвер вы его не включите." - Ваши слова ?
У меня нет в программе никакого драйвера WiFI.
Но ток потребления 67 ма.
Т е согласно вашему же утверждению - WiFi у меня не ВКЛЮЧЕН.
Это не я придумал, а Вы сказали.
Значит не включен. Это и сказал вам.
Что вы пытаетесь сказать то?
Требуете повторить все годовые описания на форуме лично вам?
https://esp8266.ru/forum/threads/zamer-potreblenija-rtl00-v1-0.1595/#post-24761
Если сравнивать с ESP8266, то CPU ESP8266 потребляет больше (Power/CLK). Не на много, но больше.
У ARM достаточная эффективность и не одна из худших. Технологии изготовления чипов RTL и ESP примерно одинаковы...
Использованный Cortex M3 в данном RTL имеет команды понижения потребления, которые эффективнее используемых в реализации ядра ESP8266. Производительность у них тоже примерно одинакова - на стандартных примерах ARM чаще выигрывает из-за наличия более откатанных либ и компиляторов.
Ну и т.к. CPU данных чипов сравнимы по многим факторам и не имеют различий в разы, то я и выбрал для сравнения с ESP8266 данный WiFi-SoC. Тут и сказываются именно организация самого чипа и наличие разных контролеров...
 
Последнее редактирование:

nikolz

Well-known member
Значит не включен. Это и сказал вам.
Что вы пытаетесь сказать то?
Требуете повторить все годовые описания на форуме лично вам?
Повторять все не надо, так как в тех постах 90 процентов трепа.
Вот цитирую Ваши результаты:
----------------------------------------------------
При выключенном WiFi в режиме энергосбережения при активности UART портов и прочего, что работает по прерываниям, модуль потребляет около 7 mA. При возникновении события оно отрабатывается на полной скорости CPU - в стандартном SDK при загрузке с Flash это 83MHz, при загрузке в RAM или если переключили сами - это 166MHz с пиковым увеличением потребления на время отработки команды и т.д....
Расклад примерно такой:
Fcpu: RUN/IDLE/SLP
166MHz: ~63/21/6.4 mA
83MHz: ~55/15/6.4 mA
RUN - полная загрузка CPU,
IDLE - это примерно vTaskDelay(),
SLP - это режим экономии.
А где в этом раскладе 7 ма?
-------------------------------------------------------------------------
Т е правильно ли я вас понял (поправьте если , не понял)
что при работе CPU на 83 MHz без WIFI составляет 55 ма (по моим замерам 67 ма)
В режиме ожидания внешних прерываний 15 ма
и в режиме сна 6.4 ма
---------------------------------
По аналогии для ESP (замеры мои выкладывал на форуме)
при работе CPU на 80Mhz 14 ма
В режиме ожидания 14 ма
в режиме сна (прерывание от пина) 2.3 ма
--------------------------
Все верно?
 

pvvx

Активный участник сообщества
Повторять все не надо, так как в тех постах 90 процентов трепа.
Сравнить с вашими постами? :)

А где в этом раскладе 7 ма?
"При выключенном WiFi в режиме энергосбережения при активности UART портов и прочего, что работает по прерываниям, модуль потребляет около 7 mA."
 
Сверху Снизу