Jump to content

    

Spym

Участник
  • Content Count

    75
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Spym

  • Rank
    Частый гость

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

1287 profile views
  1. Я думаю, здесь будет уместно обратиться за помощью к модератору. Смысл в корректировке есть, ведь ваш пост на виду в начале темы. Мы это легко сейчас сделаем. Уважаемый модератор, не могли бы вы помочь нам отредактировать пост?
  2. Да, спасибо. Это снимает необоснованные подозрения с аллокатора. Не могли бы вы отредактировать упомянутый ваш пост?
  3. У вас здесь всего лишь закончилась память, об этом ниже. В своём первом посте об этой библиотеке (пятый пост в этой теме) вы говорили о замедлении, сбое, и зависании. Меня интересуют именно вот эти явления. Аллокатор постоянной вычислительной сложности в принципе не может приводить к замедлению и зависанию сам по себе; если вы посмотрите исходники, вы не увидите там ни одного цикла (кроме как при вычислении двоичного логарифма, если быть максимально педантичным). Можете ли вы подтвердить, что вы действительно наблюдали описанные эффекты? Я склоняюсь к версии, что тест был выполнен не вполне добросовестно, и ваш первый отзыв вводит людей в заблуждение. Пожалуйста, либо внесите ясность, либо отредактируйте пост. В плане эффективности использования памяти мой аллокатор лучше, чем альтернатива от zltigo и, скорее всего, лучше чем ваш аллокатор из стандартной библиотеки (не могу быть в последнем уверен, потому что не знаю, что у вас за стандартная библиотека). В системах не-реального времени традиционно делается упор на оптимизацию среднего или амортизированного худшего случая, при этом худший случай (особенно если он достаточно редок) интерес для анализа представляет сравнительно небольшой. В системах реального времени приоритеты обратные, но вам, как разработчику встраиваемых систем, это известно и так. Что вам может быть неизвестно, так это применимость принципа оптимизации среднего случая в контексте не только времени, но и фрагментации кучи. В обычных аллокаторах часто применяется стратегия поиска наилучшего соответствия (best-fit), о которой писал и zltigo: Человеку не в теме это может показаться парадоксальным, но худший случай фрагментации кучи при использовании стратегии best-fit хуже, чем при использовании более простой стратегии поиска первого соответствия (first-fit). Я не буду утомлять вас матаном, но если вам это действительно интересно, обратите внимание на публикацию "Worst case fragmentation of first fit and best fit storage allocation strategies" [Robson 1977]. В моём аллокаторе используется first-fit, который, как вы уже поняли, показывает более высокую фрагментацию у вас на столе, но он при этом не сломается в полевых условиях у невезучего клиента, которому повезёт выбить из best-fit аллокатора редкую последовательность выделений памяти, что приводит к катастрофической фрагментации и отказу. Большинство людей на этом форуме, в частности вы и уважаемый zltigo, ничего не понимают в аллокаторах, но я вас в этом не виню. Это довольно экзотическая область и нет ничего страшного в отсутствии столь узкоспециализированных познаний, нужно просто это аккуратно осознать. Меня задевает, что вы лезете в тему, в которой явно ничего не смыслите, и несправедливо критикуете работу других, не разобравшись в происходящем. Вам уже давали ссылку на мою статью на хабре, пожалуйста, прочитайте её и указанные в ней источники, если вы хотите разобраться в вопросе самостоятельно.
  4. Хорошо. Тогда, пожалуйста, поделитесь сведениями о характере обнаруженного сбоя, и подтвердите, что ваша программа исполняется в одном потоке. Я надеюсь, вы понимаете, что вы сделали очень сильное заявление о неработоспособности библиотеки, которая успешно эксплуатируется в системах жёсткого реального времени и имеет полное покрытие тестами.
  5. Я готов найти ошибку в вашем бенчмарке, если вы его здесь выложите.
  6. "*овно" не либа, а ваша обёртка. Во-первых, следует прочитать инструкцию, где написано, что 1. есть требования по выравниванию буфера (как в большинстве аллокаторов); 2. функция инциализации вернёт NULL, если буфер не выровнен (вы этого не проверили); 3. фраза "а фиг его знает" указывает на то, что вы не посмотрели даже README. Я бы прошёл мимо, но крайне досадно видеть, как третьесортные бенчмарки, состряпанные на коленке абсолютно без понимания происходящего, вываливаются на публику под видом объективной оценки. Библиотека моя.
  7. Всем спасибо, исполнитель найден. Если кому не ответил, извините.
  8. Имеется проект маломощного BLDC контроллера на 20V/20А, выполненный в Eagle. Схема готова полностью, требуется завершить трассировку ПП. Трудоёмкость менее одной человеко-недели. Параметры платы: - 4 слоя - малые габариты (~25x45 мм) - двусторонний SMD монтаж - пассивные компоненты 0402 и 0603 - корпуса LQFP64, SOIC-20 Плата является прототипом (вторая итерация), массовое производство не планируется. Сборка образцов не требуется. Требований к географическому расположению исполнителя нет. Пишите на pavel.kirienko at gmail.com
  9. USB коннекторы вообще использовать не хотелось бы, они занимают место и ненадёжны. Даже если речь идёт о записи логов. Неплохо, спасибо. Вы не использовали? Как коннекторы SATA работают при вибрациях?
  10. Добрый день. Есть компьютер в форм-факторе COM Express 2.0, для него проектируется кросс-плата (носитель). Проблема в выборе оптимального решения по подключению накопителя; ранее, с компьютером 3.5", его функцию выполняла карта Compact Flash, но COM Express второй версии не поддерживает PATA, так что решение с CF уже не столь очевидно. Сложность выбора определяется условиями работы компьютера: предполагаются вибрации, так что использования кабелей и коннекторов здесь хотелось бы избежать. Ожидания от диска: - Объём от 8Гб; - Жёстких требований по скорости обмена нет, т.к. работающая система обращается к диску исключительно для записи логов, интенсивный I/O возможен только при старте, так что скорости чтения в 50MB/сек должно быть достаточно. Какие решения я вижу сейчас: 1. Наиболее очевидное: SATA --> мост PATA --> CF. 2. Что-то типа SATA Disk Chip выглядит идеальным решением, но мне не удалось найти эти штуки в продаже. Впрочем, с производителями я ещё не связывался. http://www.fortasa.com/sata-disk-chip-sdc http://www.global.tdk.com/news_center/press/aah38800.htm 3. Организовать на плате контроллер USB flash + память. Вероятно, это может выйти наиболее простым и дешёвым решением. Интересует ваше мнение. Возможно, кто-то работал с п.2 и может назвать поставщика; либо посоветовать мост SATA - PATA для п.1. Заранее благодарен.
  11. Доброго дня. Первая задача состоит в разработке аппаратуры устройства примерно следующей функциональности: - 2 интерфейса CAN (ISO 11898-2) - 1 RS485 - STM32F405R - пара сенсоров на SPI - термостатирование Разработка ПО не требуется; ТЗ лично. Следующими на очереди стоят: - несколько устройств аналогичной сложности, где потребуется так же разработать нехитрую прошивку (простой опрос сенсора+запись в порт) - модуль COMExpress (USB Wi-Fi, CompactFlash) Предполагаемые работы: - проектирование схемотехники и ПП (ТЗ частично описывает элементную базу, в частности, сенсоры) - сборка опытных образцов (либо заказ и контроль сборки), включая заказ комплектующих Ожидания от исполнителя: - опыт работы с распределёнными системами управления версиями (mercurial/git) - работа с открытыми GCC-based тулчейнами - расположение в Москве или ближней области Студенты старших курсов приветствуются. Пишите на pavel.kirienko @gmail.com Павел.
  12. О чем и речь. Оптимизация препятствует удобству символьной отладки, Вы ведь не будете с этим спорить.
  13. Для удобства символьной отладки желательно выключить оптимизацию. Передайте компилятору ключ -O0.
  14. LPC2214 Idle Mode

    Добрый вечер. Есть некий LPC2214 с SRAM на EMC и каким-то idle task, который переводит девайс в idle mode; набор инструкций ARM SCB_PCON |= 1; После перехода в idle (или выходе из него - не суть) случается abort; посмотреть отладчиком невозможно, т.к. контроллер JTAG при этом отключается. Само собой, при неиспользовании режима ожидания всё работает стабильно. В другом продукте используется LPC2124, и аналогичный код для работы с PCON работает без нареканий; единственное существенное различие - нет внешней памяти. Поиски ответов в мануале к успеху не привели (может искал плохо), посему вопрос следующий: что я мог упустить, и где накосячить? Действительно ли проблема в EMC?