esaulenka 7 15 октября, 2015 Опубликовано 15 октября, 2015 (изменено) · Жалоба Столкнулся с проблемой - отладка стартует через раз. В наличии STM32 и клон JLink'а от otladka.com.ua SEGGER J-Link GDB Server V4.98 Command Line Version JLinkARM.dll V4.98 (DLL compiled Mar 20 2015 18:23:08) -----GDB Server start settings----- GDBInit file: none GDB Server Listening port: 2331 SWO raw output listening port: 2332 Terminal I/O port: 2333 Accept remote connection: localhost only Generate logfile: off Verify download: on Init regs on start: on Silent mode: off Single run mode: on Target connection timeout: 0 ms ------J-Link related settings------ J-Link Host interface: USB J-Link script: none J-Link settings file: none ------Target related settings------ Target device: STM32F105VC Target interface: SWD Target interface speed: 1000kHz Target endian: little Connecting to J-Link... J-Link is connected. Firmware: J-Link V9 compiled Apr 21 2015 18:10:40 Hardware: V9.10 S/N: /* i'm paranoid */ Feature(s): GDB, RDI, FlashBP, FlashDL, JFlash Checking target voltage... Target voltage: 2.99 V Listening on TCP/IP port 2331 Connecting to target...Connected to target Waiting for GDB connection...Connected to 127.0.0.1 Reading all registers Read 4 bytes @ address 0x00000000 (Data = 0x2000FFF8) Target interface speed set to 1000 kHz Select auto target interface speed (2000 kHz) Flash breakpoints enabled Semi-hosting enabled (VectorAddr = 0x08) Semihosting I/O set to TELNET Client SWO disabled succesfully. SWO enabled succesfully. Read 4 bytes @ address 0x00000000 (Data = 0x2000FFF8) Downloading 56 bytes @ address 0x0801C000 - Verified OK Downloading 2904 bytes @ address 0x0801C038 - Verified OK Downloading 4 bytes @ address 0x0801CB90 - Verified OK Comparing flash [....................] Done. Erasing flash [..........ERROR: Failed to erase sectors 56 @ address 0x0801C000 (erase error) ..........] Done. Verifying flash [....................] Done. Спотыкается на стирании первой же используемой страницы (почему перед этим запись с верификацией прошла?! там точно ДРУГАЯ прошивка!). Дальше делает вид, что всё окей, и запускает отладку. Если отладку остановить, видно, что первая используемая страница пустая, остальные - со старым содержимым. Со второго раза прошивается корректно. Собственно, вопросы: - кто-нибудь сталкивался? - кто это вообще пишет? gdb или segger ? Поиграть версией сеггеровских утилит? - может, openocd поможет? они ж нормально работают с SWD и SWO ? И вопрос чуть не в тему. Как к eclipse'у приделать кнопку "залить прошивку, отладку не запускать" ? Изменено 15 октября, 2015 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aaron 1 15 октября, 2015 Опубликовано 15 октября, 2015 · Жалоба Интересно! МК на чём стоит? своя плата или покупная готовая, отладочная? Проблем с питанием, подтяжками нет? Маловероятно, но вдруг: кондёры по питанию стоят? Мало ли, просадка по питанию при стирании идёт... Ещё была история - кварц сбойно работал, иногда МК при подключении и попытке стирания выдавал защиту от перезаписи... помогало выключение на 30-90 минут. В общем, мне кажется проблема в области железа! С другой стороны - каким образом стирается память? Напрямую через SWD? Попробовать скорость понизить подключения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 18 октября, 2015 Опубликовано 18 октября, 2015 · Жалоба попробуйте OpenOCD, он с версии 0.9.0 у меня нормально с SWD через J-Link заработал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 19 октября, 2015 Опубликовано 19 октября, 2015 · Жалоба Интересно! МК на чём стоит? своя плата или покупная готовая, отладочная? Проблем с питанием, подтяжками нет? Маловероятно, но вдруг: кондёры по питанию стоят? Мало ли, просадка по питанию при стирании идёт... Своё. Опытный образец, паяный-перепаяный, но очевидных косяков с питанием нету. Подозреваю, что из-за моих экспериментов "уплыли" стандартные тайминги стирания памяти (я перепрограммирую чип десятки раз в день. уже не первый месяц). Всё никак не одолжу у коллег других подопытных... С другой стороны - каким образом стирается память? Напрямую через SWD? Попробовать скорость понизить подключения... Не понял вопрос. "Напрямую" из чипа загрузчик чудесно всё стирает, но я им редко пользуюсь. попробуйте OpenOCD, он с версии 0.9.0 у меня нормально с SWD через J-Link заработал... Я хоть и положительно отношусь к опенсорсу, но тут трындец какой-то... :-( Драйвера на jlink переставил (как теперь, интересно, j-flash'ем пользоваться?..). Покурил интернет, написал конфиг. Теперь следующий этап: у Вас SWO работает? Гугл сходу магическое слово не подсказывает. Но пишет-стирает без проблем, тьфу-тьфу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 24 октября, 2015 Опубликовано 24 октября, 2015 · Жалоба Теперь следующий этап: у Вас SWO работает? SWO не пробовал. Убедился что отладка/заливка идёт и стал дальше использовать адаптер на FT2232, у которого второй интерфейс для приёма отладочного выхлопа через UART... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terrabyte 0 18 февраля, 2020 Опубликовано 18 февраля, 2020 · Жалоба В 15.10.2015 в 11:52, esaulenka сказал: Столкнулся с проблемой - отладка стартует через раз У меня тоже проблема с gdb возникла. В win10 x64, установлена gnu-mcu-eclipse toolchain, и xpack, это arm-none-eabi-gcc, openocd. Не переходит к коду и не останавливается на breakpoints. На main() не останавливается. Но прошлый рабочий проект записывает и ассемблер показывает. Пробовал собирать с разными вариантами -O0 -Og -g3 включал в linker -nostdlib --specs=rdimon.specs но нет, gdb не останавливает на С коде. Создал на template новые проекты stm32. Кнопки переходов не работают. Для конфигурации Debug GDB SEGGER jlink Debugger : сообщение Faled to execute MI command -exec-next 1 а для GDB openocd : нет драйвера winusb, поставил Zylin но нет, не подходит. Как в отладку то перейти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 18 февраля, 2020 Опубликовано 18 февраля, 2020 · Жалоба 10 minutes ago, Terrabyte said: Не переходит к коду и не останавливается на breakpoints Судя по картинкам, исполняется код из RAM, а брекпоинты вы ставите во флеше. Либо что-то с ногами BOOT, либо что-то хитрое со скриптом линкера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terrabyte 0 18 февраля, 2020 Опубликовано 18 февраля, 2020 · Жалоба Flash, то есть собрано во flash: в test3.lst 080001e4 <_start>: _start(): и boot на flash BT0, BT1 = 0, 0 померил, но вот почему gdb не сообщается с кодом? В начале получалось поймать brakepoint в потоке другом, но не в main(), а теперь не работают кнопки переходов по asm. openocd скрипт: source [find interface/jlink.cfg] #transport select hla_swd не поддерживается пишет source [find target/stm32f1x.cfg] #reset_config srst_only не поддерживает #reset_config none adapter_khz 4000 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terrabyte 0 18 февраля, 2020 Опубликовано 18 февраля, 2020 · Жалоба 21 час назад, esaulenka сказал: Судя по картинкам, исполняется код из RAM, а брекпоинты вы ставите во флеше. Либо что-то с ногами BOOT, либо что-то хитрое со скриптом линкера. Один gdb заработал, который GDB jlink Debugging, дело в его конфигурации и в Reset. Сразу все breakpoints заработали и main() и _start(). nReset в этом CPU можно использовать только для кнопки, а в отладке использовать нужно Reset Types: 1-5 А с openocd GBD вопрос, надо разбираться как libusbK работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться