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

Axel

Свой
  • Постов

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

  • Посещение

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

    1

Сообщения, опубликованные Axel


  1. Согласен. Я тоже пользую union и placement new везде, где возможно. Но в проекте, по поводу которого топик, присутствует SDK, построенный на freeRTOS, включающий lwip, А там свои дела с кучей. Ну и rapidjson, очень удобная, но внутри сильно динамическая.

  2. Ситуации у меня в общем альтернативные (как я и писал). А "кооперативно" использовать статическую память для объектов разной природы - ИМХО, слишком высокое искусство (особенно для последующей поддержки). Так что пока - куча.

  3. Вопрос решился просто: списал переопределение менеджера у Cereal (либа сериализации).
    Про область применения: IoT (ближе к кофеварке, чем к марсоходу). По поводу джейсонов: они (в моем случае) разные бывают - от пары десятков байт до 2.5к (редко). Выделять память статически на максимум плохо, поскольку памяти дефицит. Поэтому, и по совокупности других обстоятельств, куча предпочтительнее. Кроме того, в определенных ситуациях (напр. если надо открыть еще один сокет) от длинных джейсонов я могу на время отписаться.

  4. 26 minutes ago, gte said:

    Я, в своих проектах, использую 3UG4581-1АW30. В документации есть описание и сделать можно, но вся суть в том, что это готовое изделие с необходимыми сертификатами.

    Это разнэ весовые категории: 3UG4581-1АW30 - готовое устройство, а SIM100 - чип(SIM100IC) и модуль(SIM100MOD)

     

    29 minutes ago, gte said:

    А круто, это сколько?

    Про чип пока не знаю, а модуль (чип с незначительной обвеской) - $299 @1k.

    А в доке на 3UG4581-1АW30 есть описание принципов работы? Буду весьма признателен за ссылку или файл...

  5. Уважаемые коллеги, существует ли реальная возможность реализовать поддержку PLC протокола по стандарту ISO15118 на микроконтроллере без Линукса? В качестве модема применяется Qualcomm QCA7005. За ссылки на исходники - особая признательность.

  6. Доброго времени суток!

    Коллеги, подскажите пожалуйста, требуется ли наличие сертификата безопасности (по стандарту IEC 61508 или его производным) для Linux, используемого в автомобильных зарядных станциях? 

  7. 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;
    }

     

  8. 59 minutes ago, one_eight_seven said:

    Так тут синглтон вообще вреден. Да, он позволяет быстро показать как идея будет работать. Но в долговременной перспективе он всё портит. Тесты усложняет, масштабируемость убивает. Если вы всё-равно динамически его создаёте и, что важно, - удаляете, то есть решения лучше.
    Если же вы его не удаляете, то никакой экономии памяти ввиду того, что "редко" нет.

     

    Прошу прощения за неполную формулировку - конечно же объекты удаляются. " в долговременной перспективе" никакого негатива не отмечено. "есть решения лучше" - приму совет с благодарностью.

    PS:

    Если объекты альтернативны, то для них, как правило, возможно определение общего интерфейса. И Instance именно этого интерфейса используется для обращения к синглтону. И кстати placement new для таких ситуаций в мелкоформатных embedded приложениях - один из гарантов спокойной жизни.

  9. 2 hours ago, one_eight_seven said:

    Более того, непонятно, причём тут сигнлтон вообще.
    Синглон - это то, что существует на протяжении всего , и что существует в единственном экземпляре.
    Причём тут UART и SPI, редкость и асинхронность - вообще непонятно. И что значит "альтернативно используются" - это так, как привыкли наши разработчики - непременно не по назначению? Так и тут непонятно, почему это нельзя сделать без сигнлтона.

     

    В единственном экземпляре - да, в течение всего runtime - никакими стандартами не требуется.  UART и SPI - как пример ситуации (логи направляются либо в терминал, либо на карточку). "Редко" - бОльшую часть времени не используются, поэтому, для экономии памяти, создаются по мере необжодимости. "Асинхронно" - необходимость в доступе может возникнуть в любой момент, в том числе у нескольких задач одновременно. "почему это нельзя сделать без сигнлтона" - можно, но синглтон здесь вполне в тему (в меру моего понимания этой сущности). "вообще непонятно" - надеюсь, теперь в меньшей степени...

  10. On 4/6/2020 at 12:55 PM, AHTOXA said:

    ... это по большей части идеологическое преимущество...

    ...с вполне реальным практическим аспектом. Например при наличии двух интерфейсов, UART и SPI, используемых "редко", альтернативно и асинхронно несколькими задачами. Возможно не для жесткого реалтайма, но во многих случаях работает (для надежности вкупе с "placement new").

  11. On 3/8/2020 at 12:37 AM, AlexandrY said:

    В моем проекте с mbed в стеке LwIP нашли уязвимость переполнения в файле lwip_eap.c и прислали ссылку на патч, который мне обязательно надо применить по их мнению. 
     

    Деталями не поделитесь? А то у меня тоже mbedtls, lwip, Github ... и пока ничего...

×
×
  • Создать...