Перейти к содержанию
    

Axel

Свой
  • Постов

    552
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент Axel


  1. GCC, SVC и Cortex-M0

    Таки да, полетело. Спасибо!
  2. GCC, SVC и Cortex-M0

    Обновил gcc до 13.2 - все равно не катит. Различие только в том, что у меня это в ассемблерном файле.
  3. GCC, SVC и Cortex-M0

    У меня те же ключи, только gcc постарше - 11.2. Попробую обновить. Пока заменил на PendSV - вроде не обиделась.
  4. GCC, SVC и Cortex-M0

    SVC исторически присутствует в коде (TNeo)
  5. GCC, SVC и Cortex-M0

    gcc отказывается компилировать svc для Cortex-M0+ (конкретно - STM32G071): "Error: SVC is not permitted on this architecture". Вызов нужен для преключения контекста в операционке. Кто-нибудь знает почему и как починить (или обойти)?.
  6. STM32G4 DMA

    Не попалась такая картинка (или внимания не обратил). Спасибо.
  7. STM32G4 DMA

    Про STM32 DMA известно, что он может читать данные из RAM и не может (не должен) читать из flash. Практически - может (в случае uart и таймера). Можно ли на это закладываться?
  8. Если кому-нибудь еще интересно: в конце концов все обошлось статическим буфером (нашел здесь). Пока все нравится.
  9. Согласен. Я тоже пользую union и placement new везде, где возможно. Но в проекте, по поводу которого топик, присутствует SDK, построенный на freeRTOS, включающий lwip, А там свои дела с кучей. Ну и rapidjson, очень удобная, но внутри сильно динамическая.
  10. Ситуации у меня в общем альтернативные (как я и писал). А "кооперативно" использовать статическую память для объектов разной природы - ИМХО, слишком высокое искусство (особенно для последующей поддержки). Так что пока - куча.
  11. Вопрос решился просто: списал переопределение менеджера у Cereal (либа сериализации). Про область применения: IoT (ближе к кофеварке, чем к марсоходу). По поводу джейсонов: они (в моем случае) разные бывают - от пары десятков байт до 2.5к (редко). Выделять память статически на максимум плохо, поскольку памяти дефицит. Поэтому, и по совокупности других обстоятельств, куча предпочтительнее. Кроме того, в определенных ситуациях (напр. если надо открыть еще один сокет) от длинных джейсонов я могу на время отписаться.
  12. Как правильно приделать одно к другому (в смысле аллокатора памяти)?
  13. Могу лишь засвидетельствовать, что устанавливается и работает. Запускаете с правами администратора?
  14. Это разнэ весовые категории: 3UG4581-1АW30 - готовое устройство, а SIM100 - чип(SIM100IC) и модуль(SIM100MOD) Про чип пока не знаю, а модуль (чип с незначительной обвеской) - $299 @1k. А в доке на 3UG4581-1АW30 есть описание принципов работы? Буду весьма признателен за ссылку или файл...
  15. "Sendyne SIM100 Isolation monitor". Кто-нибудь знает, как это работает? Если да - поделитесь сокровенным: уж больно круто оно стОит.
  16. ISO 15118 без Линукса

    Уважаемые коллеги, существует ли реальная возможность реализовать поддержку PLC протокола по стандарту ISO15118 на микроконтроллере без Линукса? В качестве модема применяется Qualcomm QCA7005. За ссылки на исходники - особая признательность.
  17. Доброго времени суток! Коллеги, подскажите пожалуйста, требуется ли наличие сертификата безопасности (по стандарту IEC 61508 или его производным) для Linux, используемого в автомобильных зарядных станциях?
  18. Например так (при использовании placement new): static CFooA * Instance() { CFooA *ret_val = 0; if(CClassFooId::FooInstance) { if(sem_polling(&CClassFooId::UseCounter) != SEM_NOT_IN_USE) { if(CClassFooId::FooInstance->GetClassId() != FOO_A_CLASS_ID) { CClassFooId::FooInstance = 0; } } else { ret_val = INST_CREATE_ERR; } } if(!ret_val) { if(!CClassFooId::FooInstance) { mutex_lock(&InstMutex, WAIT_INFINITE); if(!CClassFooId::FooInstance) { CClassFooId::FooInstance = (CClassFooId *)new ((void *)FooMemPool) CFooA(); } mutex_unlock(&InstMutex); } ret_val = (CFooA *)CClassFooId::FooInstance; } else { ret_val = 0; } return ret_val; } static CClassFooId *ClearInatance() { if(sem_polling(&CClassFooId::UseCounter) == SEM_NOT_IN_USE) { CClassFooId::FooInstance = 0; } return CClassFooId::FooInstance; }
  19. Прошу прощения за неполную формулировку - конечно же объекты удаляются. " в долговременной перспективе" никакого негатива не отмечено. "есть решения лучше" - приму совет с благодарностью. PS: Если объекты альтернативны, то для них, как правило, возможно определение общего интерфейса. И Instance именно этого интерфейса используется для обращения к синглтону. И кстати placement new для таких ситуаций в мелкоформатных embedded приложениях - один из гарантов спокойной жизни.
  20. В единственном экземпляре - да, в течение всего runtime - никакими стандартами не требуется. UART и SPI - как пример ситуации (логи направляются либо в терминал, либо на карточку). "Редко" - бОльшую часть времени не используются, поэтому, для экономии памяти, создаются по мере необжодимости. "Асинхронно" - необходимость в доступе может возникнуть в любой момент, в том числе у нескольких задач одновременно. "почему это нельзя сделать без сигнлтона" - можно, но синглтон здесь вполне в тему (в меру моего понимания этой сущности). "вообще непонятно" - надеюсь, теперь в меньшей степени...
  21. ...с вполне реальным практическим аспектом. Например при наличии двух интерфейсов, UART и SPI, используемых "редко", альтернативно и асинхронно несколькими задачами. Возможно не для жесткого реалтайма, но во многих случаях работает (для надежности вкупе с "placement new").
  22. extern переменная типа класса и/или указателя на класс/структуру в хедере этого же класса - обычный прием, так что без проблем...
×
×
  • Создать...