• Система автоматизации с открытым исходным кодом на базе 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 (фото одной из них и дано).
 
Последнее редактирование:
Сверху Снизу