Search the Community
Showing results for tags 'debugging'.
-
Приветствую всех кому интересна тема. Обнаружена ошибка в отображении PORTG при дебаггинге микроконтроллера 1986ВЕ3Т среде IAR. Если точнее, то базовый адрес порта G для указанной микросхемы указывает на область KEYBOARD. И поэтому при отладке вы не увидите реальных значений параметров порта G. Настоящий адрес PORTG = 0x4011_8000, а в файле конфига дебаггера в разделе GPIOG стоит 0x4011_0000, а это как раз адрес клавиатуры. В приложении выкладываю файл jbr_MDR1986VE3.ddf с исправленным адресом, если кому лень исправлять вручную самому. Этот файл надо поместить в папку установки IAR. если IAR установлен в папку по умолчанию, то это путь C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\config\debugger\Milandr. Сначала переименуйте оригинальный файл jbr_MDR1986VE3.ddf в jbr_MDR1986VE3.ddf.bak, а затем скопируйте туда файл из приложения. На правах "AS IS", ответственность на использующем. Привет jbr_MDR1986VE3.ddf
-
EFM32 и Simplicity Studio, дебаг проекта
kreker posted a topic in Все остальные микроконтроллеры
Доброго дня. Спрошу тут, авось кто-нибудь поможет. IDE, эклипсо-подобная: Simplicity Studio v5 МК: EFM32GG11B120F2048GM64 В своей поделке использую cJSON библиотеку. Спустя пару минут работы программного цикла ловлю Hardfault, похоже, связанный именно с этой либой: каким-то образом output_size увеличилось до 13618, хотя на выходе размер строки не должен быть больше 200+ символов. Вместе с формированием \ отправкой строк постоянно рабоает таймер по прерыванию (раз в секунду) и GPIO прерывание (раз в 8 миллисекунд каждые 100 миллисекунд). Каким образом можно определить, почему происходит переполнение буфера? Если что-то не указал - скажите, дополню. Быстрые ссылки на код в либе: printf_string_ptr(), print_object(), print_value(), print_array(), print_value(), print_object(), print_value(), print(), cJSON_PrintUnformatted() Регистры состояния: HardFault: SCB->CFSR 0x00008200 SCB->HFSR 0x40000000 SCB->MMFAR 0x20083399 SCB->BFAR 0x20083399 SP 0x2007fe08 R0 0x2007fe67 R1 0x20002adb R2 0x20002adb R3 0x00003533 R12 0x00000000 LR 0x0000a0af PC 0x0000a0b0 PSR 0x01000000 [HardFault] SP = 2007fe08 R0 = 2007fe67 R1 = 20002adb R2 = 20002adb R3 = 00003533 R12 = 00000000 LR [R14] = 0000a0af - Subroutine Call return address PC [R15] = 0000a0b0 - Program Counter PSR = 01000000 BFAR = 20083399 - Bus Fault SR/Address causing bus fault CFSR = 00008200 - Config. Fault SR HFSR = 40000000 - Hard Fault SR :FORCED, Bus fault/Memory management fault/usage fault DFSR = 00000000 - Debug Fault SR MMAR = 20083399 - Memory Manage Address R AFSR = 00000000 - Auxilirary Fault SR SCB->SHCSR= 00000000 - System Handler Control and State R (exception) Дизассемблер, ошибку проставляет по строке: 0000a0b0: strb r6,[r7,r3] Немного кода. -
Все здравствуйте, всех с прошедшими праздниками! Вопрос такой: почему при отладке в QTCreator при достижении заданной точки останова вылезает сообщение "Info : Dropped 'gdb' connection", хотя прошивка проходит нормально? Работаю в Mac OS. Я сделал простой проект для китайской Bluepill платы с STM32F103, просто мигание светодиодом, который на этой плате подключен к PC13. В качестве аппаратного отладчика использую китайский же ST-Link V2. Проект собираю в QTCreator, система сборки Qbs. Для этого собрал Комплект (по терминологии QTCreator), т. е. задал компилятор из установленного тулчейна (gcc-arm-none-eabi-6_2-2016q4) и отладчик openocd. Проект собирается нормально, светодиодиком моргает. Пытаюсь отлаживать, устанавливаю точку останова, и по ее достижению получаю в консоли сообщение "shutdown command invoked" и "Info : dropped 'gdb' connection". Весь вывод выглядит так: 18:44:40: Запускается /Users/al/mysh/openocdscr.sh... 18:44:40: Отладка запущена Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html 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: 500 kHz adapter_nsrst_delay: 100 none separate Info : Unable to match requested speed 500 kHz, using 480 kHz Info : Unable to match requested speed 500 kHz, using 480 kHz Info : clock speed 480 kHz Info : STLINK v2 JTAG v32 API v2 SWIM v7 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.245473 Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800037c msp: 0x20004ff8Info : accepting 'gdb' connection on tcp/3333 Info : device id = 0x20036410 Info : flash size = 64kbytes undefined debug reason 7 - target needs reset target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800037c msp: 0x20004ff8 target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800037c msp: 0x20004ff8 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000003a msp: 0x20004ff8 target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800037c msp: 0x20004ff8 target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800037c msp: 0x20004ff8 target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x0800037c msp: 0x20004ff8shutdown command invoked Info : dropped 'gdb' connection 18:44:44: Приложение завершилось с кодом 0. 18:45:29: Отладка завершена Отладчик запускается скриптом (его запускает сам QTCreator, а скриптом оформлено, чтобы параметры указать), в котором указываю конфиги оборудования. Вот содержимое файла: #!/bin/bash /usr/local/Cellar/open-ocd/0.10.0/bin/openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /Users/al/Documents/Qt/stm32_test0/stm32f1x.cfg Пожалуйста, помогите советом, как отследить проблему, какие логи и где смотреть? На какие настройки обратить внимание? Сам проект прикреплен к посту. stm32_test0.zip