• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Arduino для RTL8710.

nkly

New member
Ошибки при загрузке на gdb сервере происходят из-за "while CPU is running"
А разве jlink не умеет тормозить CPU? Или это нормальный процесс? Прошивка ведь в конце концов заливается.
В процессе загрузки CPU несколько раз останавливается и запускается. Если его не запускать прошивка не загружается. Возможно это нормальный процесс.
 

pvvx

Активный участник сообщества
Ошибки при загрузке на gdb сервере происходят из-за "while CPU is running"
А разве jlink не умеет тормозить CPU? Или это нормальный процесс? Прошивка ведь в конце концов заливается.

Вот параллельно тыкал - все притормаживается.

J-Link>g
J-Link>h
PC = 10001044, CycleCnt = 6C266352
R0 = 00000000, R1 = 40006000, R2 = 00000000, R3 = 10008000
R4 = 100013A9, R5 = 100012E5, R6 = 1000800C, R7 = 10001271
R8 = 10008014, R9 = 10008008, R10= 00009000, R11= 10001209
R12= 00000000
SP(R13)= 1FFFFFC4, MSP= 1FFFFFC4, PSP= 00000000, R14(LR) = 100012CF
XPSR = 61000000: APSR = nZCvq, EPSR = 01000000, IPSR = 000 (NoException)
CFBP = 00010000, CONTROL = 00, FAULTMASK = 01, BASEPRI = 00, PRIMASK = 00
Ну у нас SEGGER является не бесплатным и закрытым ПО, по тому все справки от меня по нему - только за оплату :) Если они выложат исходники для всех - тогда и будет им бесплатная реклама и обсуждение :)
А так могу сказать, что при прошивке он ждет точку останова и доступ к регистрам ему не нужен... Или в данном случае, при используемой загруженной в RTL программы программатора, он ждет ответа по адресу в памяти и лезть в регистры ему тоже не стоит. А при запуске RTL JTAG вообще отключен первое время, пока программно не включится... По этому при работе AT доступ по JTAG к регистрам есть, а сразу после RESET - нет. Так-же его нет когда работает прошивка MP3 - она отключает JTAG...
 
Последнее редактирование:

Pilnikov

Active member
Ну у нас SEGGER является не бесплатным и закрытым ПО...
Т.е. такое поведение вполне законно?
Я кстати разобрался с ота.бин
У меня ртлдуина лежит в программ филес а доступ туда тока через уак.
Поэтому пришлось стать владельцем папки тулз
 

pvvx

Активный участник сообщества
В процессе загрузки CPU несколько раз останавливается и запускается. Если его не запускать прошивка не загружается. Возможно это нормальный процесс.
Пересброс RTL для исполнения кода в RAM (например программатора) возможен только если назначить флаги в аппаратном регистре и сделать "софтварный сброс" только процу, без внутренней периферии (в ней и записан флаг обхода загрузки с Flash).
По этому перезагрузка идет 2 раза при старте разных программаторов и прочего. Первый раз - аппаратная, путем дергания RESET у чипа и ожидания когда он программно включит в ROM JTAG. Выловив включенный JTAG интерфейс, забиваются значения типа перезагрузки в регистр и проц снова сбрасывается, но уже программно...
Не сбросив аппаратно чип - не получите установок периферии по умолчанию и не запустите к примеру код программатора от rebane. Он не инициализирует периферию проца и фиг знает что получится при запуске его просто прервав текущую программу, в которой периферия уже работает (дергает прерывания и т.д.)
"Счастливые" владельцы STLink-ов перепрошитых в J-Link, не припаявшие выход Сброса к STM32 сами, ловят все варианты неустойчивостей :) Это сугубо личное их желание (а так-же решение от SEGGER вывести RST на другой вывод STM32, чем у китайских клонов STLink) и обсуждать что у них там запрограммилось при этом надо позволить им самим с собой. :p При перепрошивке STLink в J-Link, надобность в STLink пропадает полностью. Всё ПО, которое работало с STLink поддерживает J-Link и перепрограммировать обратно в STLink смысла не бывает. Вывод RST на "обрубках" следует перепаять навечно в режим J-Link.

RB0
в варианте прошивки Jlink работает как RESET(!):
Посмотреть вложение 3466
 
Последнее редактирование:

Pilnikov

Active member
У меня еще есть нуклео (вроде настоящая - здесь куплена) и вроде как сеггер заявлял официальную поддержку ст линков в этих платах
 

Pilnikov

Active member
pvvx не сочтите за труд, просветите нуба насчет ота. Обязательно включать в скетчи часть кода ота, чтобы всегда работало обновление over the air? В map memory, если я не ошибаюсь, под ота ведь отведена отдельная область?
 
Последнее редактирование:

pvvx

Активный участник сообщества
pvvx не сочтите за труд, просветите нуба насчет ота. Обязательно включать в скетчи часть кода ота, чтобы всегда работало обновление over the air? В map memory, если я не ошибаюсь, под ота ведь отведена отдельная область?
Это зависит от вашего желания. Модуль в "стандарте" Arduino имеет 2 прошивки и они переключаются пином при загрузке. Если основная прошивка прошита для обновления по сети в Arduino, то вторая, пользовательская, не нуждается в этом.
Если для прошивки и отладки используете Jtag, то всё без разницы. Испытывать проще загрузкой в RAM - быстрее и не надо протирать дырку в Flash...
Файл с названием ota.bin создается всегда, и используется для любой прошивки или загрузки в RAM.
 
Последнее редактирование:

aloika

Active member
"Счастливые" владельцы STLink-ов перепрошитых в J-Link, не припаявшие выход Сброса к STM32 сами, ловят все варианты неустойчивостей :) Это сугубо личное их желание (а так-же решение от SEGGER вывести RST на другой вывод STM32, чем у китайских клонов STLink) и обсуждать что у них там запрограммилось при этом надо позволить им самим с собой. :p При перепрошивке STLink в J-Link, надобность в STLink пропадает полностью. Всё ПО, которое работало с STLink поддерживает J-Link и перепрограммировать обратно в STLink смысла не бывает. Вывод RST на "обрубках" следует перепаять навечно в режим J-Link.

RB0
в варианте прошивки Jlink работает как RESET(!):
Посмотреть вложение 3466
Припаял. Всё равно остались вот эти надписи:

ERROR: Can not read register 10 (R10) while CPU is running
ERROR: Can not read register 11 (R11) while CPU is running
ERROR: Can not read register 12 (R12) while CPU is running
ERROR: Can not read register 13 (R13) while CPU is running

и т.д.
 

pvvx

Активный участник сообщества
Припаял. Всё равно остались вот эти надписи:

ERROR: Can not read register 10 (R10) while CPU is running
ERROR: Can not read register 11 (R11) while CPU is running
ERROR: Can not read register 12 (R12) while CPU is running
ERROR: Can not read register 13 (R13) while CPU is running

и т.д.
А команды:
Код:
r0
r1
для J-link вписали? :)
 

pvvx

Активный участник сообщества
Нет, конечно... а куда вписывать?
А зачем?
А кто будет дергать RST вывод у Jlink?
Запускаете JLink.exe и вводите [inline]r0[/inline] смотрите, что на выходе. Потом [inline]r1[/inline] - RTL должен начать работу - вывести ROM Version...
 

aloika

Active member
А кто будет дергать RST вывод у Jlink?
Запускаете JLink.exe и вводите r0 смотрите, что на выходе. Потом r1 - RTL должен начать работу - вывести ROM Version...
Да, после r1 - начинает работать. Но, честно говоря, я смысла всего этого не понимаю совсем. какие-то магические манипуляции.

А-а, дошло, выставляем уровень на ресете. Ну да, работает, значит, по крайней мере, припаял куда нужно.
 
Последнее редактирование:

Pilnikov

Active member
Пример SPIFFS test не компилируется.
Если сделать так в файле spiffs_hal
Код:
extern "C" {
#include "device_lock.h"
//extern flash_t flashobj;
}
flash_t flashobj;
то вроде собирается, но работает - нет - не знаю не проверил еще
 

pvvx

Активный участник сообщества
Пример SPIFFS test не компилируется.
Были взяты новые obj от Ameba и убежала структура flash_t flashobj в Local.
Замените lib_rtl8710.a.
Первый запуск:
Код:
===== SPIFFS Info ====
Total: 52961
Used: 0
Block: 4096
Page: 256
Max open files: 5
Max path len: 32
======================
Open file...
Write data...
Close file...
Read file...
Close file...
Data file: SPIFFS Test

Test End.
Второй запуск:
Код:
===== SPIFFS Info ====
Total: 52961
Used: 502
Block: 4096
Page: 256
Max open files: 5
Max path len: 32
======================
Read file...
Close file...
Data file: SPIFFS Test

Test End.
Уже есть Used: 502...
 

Pilnikov

Active member
Я чего-то уже запутался жестоко. :confused:
Ресет прицепил р1, р0 попробовал - все работает - 1ку и нолик на вход чип ен выдает. А вот команды типа r rt rx 100 target не сбрасывают
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
J-Link>rt
J-Link>rx 100
Reset delay: 100 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
J-Link>rx 10000
Reset delay: 10000 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
J-Link>r1
J-Link>r0
J-Link>r1
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
SYSRESETREQ has confused core. Trying to reconnect and use VECTRESET.
Found SWD-DP with ID 0x4BA01477
AP-IDR: 0x24770011, Type: AHB-AP
AHB-AP ROM: 0xE00FF000 (Base addr. of first ROM table)
Found Cortex-M3 r2p1, Little endian.
Где собака порылась?
Ессно все ошибки при загрузке остались.:oops:
Я и китайский стлинк и не китайскую нуклео вусмерть замучил уже
 

pvvx

Активный участник сообщества
Я чего-то уже запутался жестоко. :confused:
Ресет прицепил р1, р0 попробовал - все работает - 1ку и нолик на вход чип ен выдает. А вот команды типа r rt rx 100 target не сбрасывают
Написано же - чип STM32F10x и нога RB0, да фото дано. На клонах STLink (перепрошитых в Jlink) она не выведена на RST.
Переключается в JLink.exe командой r0 и r1, а так-же в JLinkGDBServer.exe - что-то типа monitor reset.

А кто такие [inline]rt rx 100[/inline] ? Не соизволите рассказать? :)
 

pvvx

Активный участник сообщества
rx 100
rx Reset target (RESET). Syntax: rx <DelayAfterReset>
rt Reset TAP Controller (nTRST)
но это правда справедливо тока для Jtag


Я померил цэшкой. В моем клоне она припаяна к RB0
Значит должна по r0 выводить 0 В, а при r1 - 3.3 В (возможно ОК).
На полном STlink - это nRST выход JTAG, аналогично как на всех нормальных JTAG.


Купите полный JTAG от SEGGER и не мучайтесь. Тут тема про rtlDuino. :)
По имеющимся сведениям от владельцев китайских клонов STLink, с разными STM32F102, STM32F103, .. которые перекинули-припаяли на RB0 ногу выходного разъема - всё успешно работает. У меня тоже, на имеющихся платках c STlink закупленных для прошивок разных интерфейсов для тестов - всё работает с RB0 (фото одной из них и дано).
 
Последнее редактирование:
Сверху Снизу