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

Pavel V.

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о Pavel V.

  • Звание
    Местный

Контакты

  • Сайт
    http://embedded.su
  • ICQ
    276661
  1. А какое значение находится в настройках проекта C/C++ Build -> Build directory Makefile свой, или генерится эклипсом?
  2. Цитата(repka @ Mar 26 2012, 19:49) Вопрос по этапу компиляции в Eclipse (Galileo, Helios, Indigo). Опробованы все доступные эклипсы с одними и теми же файлами проекта, на некольких машинах билдится совершенно без проблем. На моей же, откомпилировав несколько файлов, почему-то перестает видеть инклудовские файлы из своего же проекта. Лечится только прописыванием вручную пути к проекту. WinXPSP3 чистенькая (на старой тоже не работало). Имеются в виду файлы в корневой директории проекта? Вы бы привели структуру файлов, которую пытаетесь скомпилировать, а то так не понятно. У меня вроде никогда таких проблем не возникало, поведение эклипса было полностью ожидаемым. В качестве профилактики могу посоветовать поиграться с пунктами меню Index (правая кнопка на проекте -> Index -> Rebuild, Update, Freshen).
  3. "SerialPort" в Си

    "Справка" является отдельным продуктом и называется MSDN. Можно установить локально, можно найти в интернете. Я предпочитаю пользоваться онлайн через сайт майкрософта. Если программа пишется с использованием .NET, то ИМХО, следует писать на c#, он специально заточен под это дело. C++ с поддержкой Framework задумывался майкрософтом просто как мостик между "старым" (не CLR) кодом и "новым" (CLR), а не как самостоятельное средство разработки.
  4. Python в Telit.

    Интересует еще вот какой вопрос - какой величиной ограничен размер одного скрипта, загруженного в модуль? В официальной документации я этой цифры не нашел - означает ли это, что размер ограничен только доступной памятью?
  5. Не знаю, будет ли полезна эта информация, но я много работал с модулями GL868 из разных поставок - описанной проблемы ни разу не наблюдал.
  6. Python в Telit.

    Цитата(molecul @ Feb 21 2012, 17:46) Вообще говоря, если скрипт работает, то работает стабильно. Наиболее частая ошибка - это название скрипта. Некомпилированный скрипт должен иметь расширение .py, а компилированный - .pyo. Кроме того, в названии не должно быть пробелов, звездочек и других спецсимволов. От скрипта нельзя требовать невозможного - там не поддерживаются операции с плавающей точкой (во всяком случае в текущей версии), многопоточность и пр. В принципе, если вы написали скрипт, но он работает некорректно, то можете связаться с техподдержкой дистрибьютора и попросить сделать его анализ. Telit производит это бесплатно и дает свои рекомендации по оптимизации работы. Вроде бы поборол проблему. Оказалось, скрипт компилировался другой версией питона (помимо штатного набора софта от Telit в системе был установлен официальный релиз Python 2.7). Какой командой компилируются скрипты при вызове пункта Compile из контекстного меню?
  7. Я использую Visual Paradigm for UML, лучше инструмента не встречал. Есть Community Edition для некоммерческого использования, бесплатная. Для коммерческого применения можно и приобрести - стоит копейки.
  8. В одном своем устройстве я использовал общий источник питания для модуля SIM900 и процессора (с обвязкой) на 3,5 В (на LM2576). Вроде бы проблем не было, в том числе при передаче данных. Уровни сигнальных линий, естественно, были согласованы. Почему-то не увидел в теме упоминаний такого варианта схемы питания, может быть это в корне неправильно и чревато какими-то проблемами?
  9. Python в Telit.

    Дабы не плодить темы, спрошу здесь. Начал разбираться со встроенным интерпретатором Python на модулях Telit GL868. Вроде бы, путем какого-то шаманства, что-то стало получаться, но... Проблемы есть следующие: 1. Если заливать в модуль "не скомпилированную" версию скрипта, все работает как надо, но стартует при этом с задержкой больше минуты (скриптик на 3 кб, одним файлом). 2. Если же заливать "скомпилированную" версию, то скрипт вообще не запускается. Точнее, один раз у меня получилось сделать так, чтобы он запускался (и при этом не было задержки исполнения), но повторить больше не удается. Хотелось бы услышать мнение представителя фирмы - стоит ли вообще связываться с этой возможностью? Первое впечатление возникло не самое приятное... Вроде бы и руки не самые кривые, но стабильной работы добиться пока так и не удалось.
  10. Цитата(ReAl @ Feb 12 2012, 15:32) LPC17 ? Тоже наткнулся на такую заразу со сдвигами («больше ширины» либо «сдвиг на отрицательное значение» в зависимости от константы и ветки if (shift < 32)). Он самый! Цитата(ReAl @ Feb 12 2012, 15:32) Сначала по-быстрячку сделал shift локальной переменной функции. Оптимизатор всё делает нормально, а предупреждение пропадает. Потом нарисовал такое (в рабочий код ещё не интегрировал, в тесте с ключиком -S всё красиво): Здорово, такой вариант мне больше нравится Попробую использовать.
  11. PhyCore-LPC2292/94 + IAR + JLink

    1. Вы отключаете отладчик от компа, или отладчик от платы? Если отключить отладчик от платы и перезапустить ее - так работает? Вы уверены, что код заливается во флеш, а не RAM? 2. Точно не помню, но в IARе была в опциях проекта вкладка типа "Дополнительный формат выходного файла", и там надо выбрать Intel HEX. 3. Keil и JLink отлично дружат, дело только в настройках. Версия Keil-а уже перевалила за 4, надо обновиться.
  12. Цитата(neiver @ Feb 11 2012, 00:27) Для этого можно использовать частичную специализацию шаблонов. Завести дополнительную шаблонный класс, вычисляющий нужную маску и сделать для него две специализации, для pin < 16 и для pin >= 16. Спасибо за идею! В итоге так и сделал, только использовал анонимный параметр, что избавило от необходимости в вызове писать условие pin < 16. Специализацию шаблона нельзя выполнять внутри класса, поэтому вынес наружу. Кодnamespace IO {     template<uint32_t pin, bool = (pin < 16)>     struct ConfigurationMask     {         static inline uint32_t Clear() { return ~(0x03UL << (pin * 2)); }         static inline uint32_t SelSet(Configuration configuration) { return (((uint32_t)configuration >> 4) & 0x03UL) << (pin * 2); }         static inline uint32_t ModeSet(Configuration configuration) { return (((uint32_t)configuration >> 2) & 0x03UL) << (pin * 2); }     };     template<uint32_t pin>     struct ConfigurationMask<pin, false>     {         static inline uint32_t Clear() { return ~(0x03UL << ((pin - 16) * 2)); }         static inline uint32_t SelSet(Configuration configuration) { return (((uint32_t)configuration >> 4) & 0x03UL) << ((pin - 16) * 2); }         static inline uint32_t ModeSet(Configuration configuration) { return (((uint32_t)configuration >> 2) & 0x03UL) << ((pin - 16) * 2); }     };     template<Port port, uint32_t pin, ActiveState activestate>     class Pin     {         static_assert((pin < 32), "Pin number must be <= 31");     public:         /*          * Set Configuration          */         static void SetConfiguration(Configuration configuration)         {             ...             SEL0 &= ConfigurationMask<pin>::Clear();             SEL0 |= ConfigurationMask<pin>::SelSet(configuration);             MODE0 &= ConfigurationMask<pin>::Clear();             MODE0 |= ConfigurationMask<pin>::ModeSet(configuration);             ...         }     }; }
  13. Компилирую следующий код: Кодtemplate<uint32_t pin> class Pin { public:     void Test()     {         if(pin < 16) { 1:            g_test &= ~(0x03UL << (pin * 2));         }         else         {             g_test &= ~(0x03UL << ((pin - 16) * 2));         }     } }; int main() {     Pin<22> test;     test.Test(); } На строчку 1 компилятор ругается: Кодsource/main.cpp: In member function 'void Pin<pin>::Test() [with long unsigned int pin = 22ul]': source/main.cpp:30:12:   instantiated from here source/main.cpp:18:4: warning: left shift count >= width of type [enabled by default] Код компилируется и работает правильно. Оптимизатор, естественно, выкидывает ненужный код, т.к. pin константа (что видно по листингу). Как убрать это сообщение?
  14. Кстати, заметил еще одну особенность - при уровне оптимизации -O0 проблема сохраняется, тянутся системные вызовы. Начиная с -O1 перестают.
  15. neiver Спасибо за ссылки, буду изучать По коду не сразу получается воткнуть, надо будет для себя диаграммки нарисовать для наглядности. У меня GPIO в проектах в основном для "медленных" операций используются, типа управления питанием внешних модулей, поэтому накладными расходами на вызов функций работы с портами особо не заморачивался. Зато очень удобно передавать куда угодно по ссылке. Будьте добры мне тоже на почту реализацию для LPC17хх, как раз сейчас с этим процессором работаю (павел AT posten.ru).