• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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."
 
Сверху Снизу