Например TDA7294

Форум РадиоКот • Просмотр темы - HardFault при дебаге прошивки для stm32 в CubeIde на С++
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб апр 27, 2024 16:48:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: HardFault при дебаге прошивки для stm32 в CubeIde на С++
СообщениеДобавлено: Пт дек 22, 2023 16:11:06 
Родился

Зарегистрирован: Сб ноя 04, 2023 07:49:00
Сообщений: 4
Рейтинг сообщения: 0
Приветствую котоединомышленников!

При запуске дебага простой прошивки (просто для проверки) на С++ для stm32f405, stm32F103 в CubeIde вываливаюсь в HardFault при достижении обращения программы к виртуальному методу:

Код:
#ifndef TEST103_HPP_
#define TEST103_HPP_
#include "gpio.h"
#include "main.h"
 
class PtrFoo {
public:
    virtual void fooVirt(){};
};
class FooSecond: public PtrFoo {
public:
    void fooVirt() override {
        int a = 2 + 3;
    }
};
 
class FooTherd: public PtrFoo {
public:
    void fooVirt() override {
        int b = 5 + 4;
    }
};
 
class PtrFoo;
 
class ComCom {
public:
    PtrFoo* arrPtrFoo[2] ;
    ComCom(){
    FooSecond FS;
    FooTherd FT;
    arrPtrFoo[0] = &FS;
    arrPtrFoo[1] = &FT;
    }
 
    void fooVirt(int y) {
        arrPtrFoo[y]->fooVirt();//На следующем шаге уходит в HardFault
    }
};
 
#endif /* TEST103_HPP_ */


В main.cpp перед while:

Код:
ComCom comCom;
comCom. fooVirt(0);


Долгое время пытался найти решение проблемы в сети, но безрезультатно. Тот же эффект наблюдается при работе в IARe. Давно пишу на С для stm32, на С++ перешел совсем недавно.
При отладке в Visual Studio все работает корректно. Куда копать? Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HardFault при дебаге прошивки для stm32 в CubeIde на С++
СообщениеДобавлено: Пт дек 22, 2023 16:25:37 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
FS и FT локальные, при выходе из конструктора они уничтожаются.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HardFault при дебаге прошивки для stm32 в CubeIde на С++
СообщениеДобавлено: Пт дек 22, 2023 16:59:04 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Объекты FS и FT после выполнения конструктора перестают существовать. Получаете массив указателей arrPtrFoo в никуда.

В комплекте с оптимизиатором, который выкидывает почти весь это код как ничего не делающий, дело даже до вызова не доходит, падает на попытке прочитать адрес метода. При выполнении зелёной строки будет HF. Обратите внимение, что от конструктора осталась одна команда BKPT, остальное почикалось.
СпойлерИзображение
Вложение:
321.png [67.84 KiB]
Скачиваний: 27


Добавлено after 30 minutes 9 seconds:
PS: Прикольно, с включенной оптимизацией GCC этот код выкидывает как ничего не делающий и ошибка маскируется. Без оптимизации падает, как и положено. Ссылка на godbolt.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: HardFault при дебаге прошивки для stm32 в CubeIde на С++
СообщениеДобавлено: Чт дек 28, 2023 05:10:44 
Родился

Зарегистрирован: Сб ноя 04, 2023 07:49:00
Сообщений: 4
Рейтинг сообщения: 0
Всем спасибо. Вопрос решен.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Fanis1867 и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y