Доступ к регистрам ПК через ST-Link V2?

Tiger762
Пн 12 февраля 2018 г., 21:28
У меня есть STM32F103 (LQFP, $ 2 eBay модуль), который иногда уходит в лес. У меня есть общий/клон программист ST-Link V2. Я попытался пройти через эльф, используя ST-UTIL / GDB. Всегда сложенное поведение.

Мне действительно просто нужно знать, где в коде он зацикливается. Есть ли простой способ получить ПК? заранее спасибо.

Rogerclark
Пн, 12 февраля 2018 г., 22:42
Я думаю, что вы должны использовать OpenOCD и GDB, чтобы сделать это

Дэнниф
Пн 12 февраля 2018 г., 23:08
Почему вы не могли бы просто пройти через код?

ZMEMW16
Пн, 12 февраля 2018 г., 23:19
Одним из побочных эффектов прохождения кода в отладке является то, что поведение изменится.
Хитрость о том, как промежуточно, - это проблема и осознание того, что является просто проблемой : D

SRP

Tiger762
Вт 13 февраля 2018 г. 12:48
Я никогда не был в состоянии шаг или установить точки останова или какие -либо функции, к которым мы привыкли при отладке программы в ящике Linux. Я могу поднять регистры (Info Reg), но контроль над выполнением программы все еще ускользает от меня.

victor_pv
Вт 13 февраля 2018 г. 1:50 утра
Я не использую GDB, поэтому не могу много сказать о том, как с ним делать, но когда я использую озон, чтобы поймать что -то подобное, я обычно сначала смотрю в стек вызовов. Он покажет, что такое последняя функция вызовов в стеке, так что вы получаете представление о том, какая это была функция, когда она разбилась.
После того, как у меня появится подозреваемый, я могу поместить некоторые точки разрыва в этой функции, чтобы увидеть, достигнет ли она точки останова, прежде чем она сбой. Если это не так, я затем переместил точку перерыва назад. Кажется лучше, чем шаг за шагом, что может быть много инструкций.

ZMEMW16
Вт 13 февраля 2018 г. 2:25
время для Приинтфа обильно

Tiger762
Вт 13 февраля 2018 г. 2:55 утра
Пока я не смогу отлаживать работу, я прибегал к аппаратному решению. У меня есть один из них:

https: // www.eBay.com/itm/arduino-displa ... 2716381764

Прикреплены к булавкам B12, B13, B14, B15, A8, A9 и я добавляю эту функцию:

void Debug (int level) {
OPB12 = ((Уровень >> 0) & 1);
OPB13 = ((Уровень >> 1) & 1);
OPB14 = ((Уровень >> 2) & 1);
OPB15 = ((Уровень >> 3) & 1);
OPA8 = ((уровень >> 4) & 1);
OPA9 = ((уровень >> 5) & 1);
}

А потом до/после каждого времени () петля, и в каждом ISR у меня есть уникальный вызов отладки (xxx). Если/когда он въезжает в забвение, я посмотрю, какой двоичный номер отображается в светодиодном модуле. Это уже помогло мне поймать разные дефекты. За доллар эти светодиодные модули стоят своего веса в золоте.

Дэнниф
Вт 13 февраля 2018 г. 12:00
Получение отладчика на работу, или RO использовать UART или дисплей гораздо эффективнее.

Чип обладает обширными возможностями отладки.

fpistm
Вт 13 февраля 2018 г. 13:12
Убедиться агрессивно скомпилированным ядром кэша инвалид в предпочтениях Arduino
Выбирать Отлаживать В оптимизированном меню.
Затем после создания вашего эскиза:
Запуск //----------------------------------------------------------------------------- // Example of Timer external clock mode 1. // At each input edge the output changes its level (signal inverter) // // This example uses: // - Timer2 channel 1 as external clock input // - Timer2 channel 2 to generate the pulses. //----------------------------------------------------------------------------- void timer2_isr(void) { //*outPort = outMaskHi; // set LED pin timer_set_count(TIMER2, 0); //Timer2.setPolarity(TIMER_CH1, 1^Timer2.getPolarity(TIMER_CH1)); // change input signal polarity timer_cc_set_pol(TIMER2, TIMER_CH1, 1^timer_cc_get_pol(TIMER2, TIMER_CH1)); // change input signal polarity //*outPort = outMaskLo; // clear LED pin } //----------------------------------------------------------------------------- void Timer_setup() { // setup PA1 (Timer2 channel 2) to PWM (one pulse mode) pinMode(PA1, PWM); // setup PA0 (Timer2 channel 1) as input pinMode(PA0, INPUT); // stop the timers before configuring them Timer2.pause(); Timer2.setPrescaleFactor(1); // 0.125 µs resolution // this is new: timer_set_cc_mode(TIMER2, TIMER_CH2, TIMER_OC_MODE_TOGGLE, 0); // Timer2.setMode(TIMER_CH2, TIMER_OUTPUT_COMPARE); // detect first count Timer2.setCompare(TIMER_CH2, 1); // counter setup in slave trigger mode counting on external TI1 edges Timer2.setSlaveFlags( TIMER_SMCR_TS_TI1FP1 | TIMER_SMCR_SMS_EXTERNAL ); // attach interrupt Timer2.attachInterrupt(TIMER_CH2, timer2_isr); // start timer 2 Timer2.refresh(); Timer2.resume(); // let timer 2 run }

Вассилис
Вт 13 февраля 2018 г. 14:59
- Какую операционную систему вы используете ?
- Вы производите .Файл ELF в Arduino IDE ?

Может Ультра простой отладчик STM32 может вам помочь

Tiger762
Чт 15 февраля 2018 г. 10:53 утра
Centos 7/64 и Fedora 25. В последнее время я строил из командной строки, используя макияж, который содержит захваченные команды компиляции/связывания, чтобы имитировать процесс сборки Arduino.

STM32DUINO Community Board от Robotdyn?

Мы были проникли в боты