Axel
-
Постов
552 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные Axel
-
-
Обновил gcc до 13.2 - все равно не катит.
14 hours ago, makc said:asm volatile ("svc 0 \n");
ЧЯДНТ?
Различие только в том, что у меня это в ассемблерном файле.
-
У меня те же ключи, только gcc постарше - 11.2. Попробую обновить. Пока заменил на PendSV - вроде не обиделась.
-
SVC исторически присутствует в коде (TNeo)
-
gcc отказывается компилировать svc для Cortex-M0+ (конкретно - STM32G071): "Error: SVC is not permitted on this architecture". Вызов нужен для преключения контекста в операционке. Кто-нибудь знает почему и как починить (или обойти)?.
-
Не попалась такая картинка (или внимания не обратил). Спасибо.
-
Про STM32 DMA известно, что он может читать данные из RAM и не может (не должен) читать из flash. Практически - может (в случае uart и таймера). Можно ли на это закладываться?
-
Если кому-нибудь еще интересно: в конце концов все обошлось статическим буфером (нашел здесь). Пока все нравится.
- 1
-
Согласен. Я тоже пользую union и placement new везде, где возможно. Но в проекте, по поводу которого топик, присутствует SDK, построенный на freeRTOS, включающий lwip, А там свои дела с кучей. Ну и rapidjson, очень удобная, но внутри сильно динамическая.
-
Ситуации у меня в общем альтернативные (как я и писал). А "кооперативно" использовать статическую память для объектов разной природы - ИМХО, слишком высокое искусство (особенно для последующей поддержки). Так что пока - куча.
-
Вопрос решился просто: списал переопределение менеджера у Cereal (либа сериализации).
Про область применения: IoT (ближе к кофеварке, чем к марсоходу). По поводу джейсонов: они (в моем случае) разные бывают - от пары десятков байт до 2.5к (редко). Выделять память статически на максимум плохо, поскольку памяти дефицит. Поэтому, и по совокупности других обстоятельств, куча предпочтительнее. Кроме того, в определенных ситуациях (напр. если надо открыть еще один сокет) от длинных джейсонов я могу на время отписаться. -
Как правильно приделать одно к другому (в смысле аллокатора памяти)?
-
19 hours ago, usonic said:
Скачиваю с windowsstor , запускаю и висит на инициализации.
Могу лишь засвидетельствовать, что устанавливается и работает. Запускаете с правами администратора?
-
26 minutes ago, gte said:
Я, в своих проектах, использую 3UG4581-1АW30. В документации есть описание и сделать можно, но вся суть в том, что это готовое изделие с необходимыми сертификатами.
Это разнэ весовые категории: 3UG4581-1АW30 - готовое устройство, а SIM100 - чип(SIM100IC) и модуль(SIM100MOD)
29 minutes ago, gte said:А круто, это сколько?
Про чип пока не знаю, а модуль (чип с незначительной обвеской) - $299 @1k.
А в доке на 3UG4581-1АW30 есть описание принципов работы? Буду весьма признателен за ссылку или файл...
-
"Sendyne SIM100 Isolation monitor". Кто-нибудь знает, как это работает? Если да - поделитесь сокровенным: уж больно круто оно стОит.
-
Уважаемые коллеги, существует ли реальная возможность реализовать поддержку PLC протокола по стандарту ISO15118 на микроконтроллере без Линукса? В качестве модема применяется Qualcomm QCA7005. За ссылки на исходники - особая признательность.
-
Доброго времени суток!
Коллеги, подскажите пожалуйста, требуется ли наличие сертификата безопасности (по стандарту IEC 61508 или его производным) для Linux, используемого в автомобильных зарядных станциях?
-
2 hours ago, AHTOXA said:
Обычно такого в синглтонах не предусматривается. Как это реализовано? Статическая функция класса для удаления?
И самый главный вопрос: как контролируется, что два взаимоисключающих синглтона не будут созданы одновременно?
Например так (при использовании 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; }
-
59 minutes ago, one_eight_seven said:
Так тут синглтон вообще вреден. Да, он позволяет быстро показать как идея будет работать. Но в долговременной перспективе он всё портит. Тесты усложняет, масштабируемость убивает. Если вы всё-равно динамически его создаёте и, что важно, - удаляете, то есть решения лучше.
Если же вы его не удаляете, то никакой экономии памяти ввиду того, что "редко" нет.Прошу прощения за неполную формулировку - конечно же объекты удаляются. " в долговременной перспективе" никакого негатива не отмечено. "есть решения лучше" - приму совет с благодарностью.
PS:
Если объекты альтернативны, то для них, как правило, возможно определение общего интерфейса. И Instance именно этого интерфейса используется для обращения к синглтону. И кстати placement new для таких ситуаций в мелкоформатных embedded приложениях - один из гарантов спокойной жизни.
-
2 hours ago, one_eight_seven said:
Более того, непонятно, причём тут сигнлтон вообще.
Синглон - это то, что существует на протяжении всего , и что существует в единственном экземпляре.
Причём тут UART и SPI, редкость и асинхронность - вообще непонятно. И что значит "альтернативно используются" - это так, как привыкли наши разработчики - непременно не по назначению? Так и тут непонятно, почему это нельзя сделать без сигнлтона.В единственном экземпляре - да, в течение всего runtime - никакими стандартами не требуется. UART и SPI - как пример ситуации (логи направляются либо в терминал, либо на карточку). "Редко" - бОльшую часть времени не используются, поэтому, для экономии памяти, создаются по мере необжодимости. "Асинхронно" - необходимость в доступе может возникнуть в любой момент, в том числе у нескольких задач одновременно. "почему это нельзя сделать без сигнлтона" - можно, но синглтон здесь вполне в тему (в меру моего понимания этой сущности). "вообще непонятно" - надеюсь, теперь в меньшей степени...
-
On 4/6/2020 at 12:55 PM, AHTOXA said:
... это по большей части идеологическое преимущество...
...с вполне реальным практическим аспектом. Например при наличии двух интерфейсов, UART и SPI, используемых "редко", альтернативно и асинхронно несколькими задачами. Возможно не для жесткого реалтайма, но во многих случаях работает (для надежности вкупе с "placement new").
-
extern переменная типа класса и/или указателя на класс/структуру в хедере этого же класса - обычный прием, так что без проблем...
-
1 hour ago, AlexandrY said:
Вот такой pull request пришел.
Вроде и в моем случае актуально. Спасибо!
-
On 3/8/2020 at 12:37 AM, AlexandrY said:
В моем проекте с mbed в стеке LwIP нашли уязвимость переполнения в файле lwip_eap.c и прислали ссылку на патч, который мне обязательно надо применить по их мнению.
Деталями не поделитесь? А то у меня тоже mbedtls, lwip, Github ... и пока ничего...
-
Сумма логарифмов?
GCC, SVC и Cortex-M0
в ARM, 32bit
Опубликовано · Пожаловаться
Таки да, полетело. Спасибо!