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

andrewlekar

Участник
  • Постов

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

  • Посещение

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


  1. Cortex-M3 и М4

    Будет. Таблица векторов, задание параметров входов/выходов и тактирования через регистры процессора, сама программа. Ассемблер тут нафиг не нужен, по размеру кода в килобайт гарантированно уложитесь. Возможен. Хороший специалист при необходимости любую технологию осваивает в течение месяца. Знать ассемблеры под все ходовые платформы нет никакого резона.
  2. Посоветуйте, какой алгоритм сжатия применить для упаковки геолокационных данных. Пожелания: - Доступные исходники на Си - Минимальное использование ОЗУ. Допустимо не более 32К, лучше уложиться хотя бы в 8К. - Данные поступают блоками фиксированного размера из флэша. Алгоритм должен позволять добавлять данные в архив по частям.
  3. Ставлю на то, что макрос неправильно развернулся, так как от другой версии компилятора.
  4. Я так понял, что дллка раньше загружалась, а в новом проекте не загружается. Для начала нужно проверить, как советовал kolobok0, есть ли дллка рядом с запускаемой программой. Если есть, но всё равно не работает, то причина может быть в преобразовании имён функций C/C++. Если дело в преобразовании имён, то как чинить не знаю. Гуглите "dll name mangling".
  5. fpga(67, &string); Только argc - это кол-во передаваемых параметров как правило. У вас получается передаются 67 параметров - смотрите, поаккуратнее там.
  6. uC/OSII: память

    У IAR это называется ucOS Plugin. На деле ось вызывает периодически задачу специальную, которая и проверяет заполненность стеков. Можно там запоминать максимум и выдавать его в терминал по запросу. Этот метод может давать неточное значение максимальной заполненности стека, а куча, кажется, вообще не проверяется. Чтобы наверняка, нужно ставить хук на malloc и free и отслеживать, сколько памяти выделилось в пике. Однако куча может фрагментироваться и нужно закладывать раза в 2 больше памяти, чем вычислили. Короче, муторное это занятие.
  7. uC/OSII: память

    Размер кучи можно определить только приблизительно: размещается памяти с запасом и прогоняется программа - потом смотрите, сколько памяти максимум требовалось. Размеры стеков для задач тоже рассчитываются таким методом - автоматического вычисления стека для задач я не встречал.
  8. Возможно дело в невыровненном доступе к памяти. Попробуйте вместо sizeof поставить просто число 16. Если падать перестанет, то делайте либо по размеру структуры размещение, либо по частям но с выравниванием.
  9. RMII лучше - меньше сигналов, легче развести, поддерживается мелкими контроллерами. 50 мгц генератор уже не нужен - во всех современных физиках есть PLL для тактирования от 25 мгц кварца. Micrel или LAN8720 примерно одинаковая цена и доставаемость.
  10. Да, юнит-тесты пишет программист. Можно использовать того, который пишет и код, можно другого. Да, писал. К коду, который сам же и написал. Суть юнит-тестов не в какой-то бюрократии или 100% покрытии, а в подготовке кода к рефакторингу. Юнит-тестирование позволяет уменьшить вероятность, что что-то сломается при рефакторинге, а также предполагает переработку архитектуры кода в плане тестируемости. Эта переработка архитектуры подготавливает код к дальнейшему изменению, т.е. при добавлении новой фичи меньше вероятность, что придётся всё раскурочивать.
  11. Основной минус - event-driven программирование во весь рост. Невозможно писать нормальную архитектуру - приходится писать лапшу с кучей таймеров. Например, нужно отправить команду, дождаться ответа OK и отправить следующую: с точки зрения вейвкома нужно делать коллбэк на ответ от первой команды и из этого коллбэка отправлять следующую. Это бред и лапша. Остальные минусы: так и недоделанная работа с интерфейсами (у меня I2C стабильно так и не заработал, виснет сам и намертво вешает модуль); бредовый тулчейн - M2M Studio виснет, тормозит, отладка только трейсами, которые передаются закодированные по UART, который M2M Studio распознаёт 1 раз из 5, а остальное время тупит и теряет основной порт для AT команд; если отладку делать сообщениями в порт (не нужно привязываться к дебильной студии), то часть сообщений теряется. В целом, OpenAT это такой толстый вендор лок, если чё-то не работает или работает не так, как хочется, то остаётся только утереться и ждать патча. Например у нас девайсы цепляются к серверу по несколько часов безуспешно и сделать ничё нельзя. Был бы проект без OpenAT, можно было бы подебажить стек или поменять его на другой.
  12. У меня опыт работы с wavecom от Q2400 до Q2687RD плюс немножко Q2501 и краем глаза видел первые wismo. И опыт переезда на SIM300D, SIM900. Впечатление однозначное: SIM900 по всем параметрам лучше. Единственный плюс Sierra Wireless - богатый функционал встраиваемых приложений OpenAT. Но OpenAT я тоже не порекомендовал бы никому, разве что сроки уж совсем поджимают и некогда написать проект на чём-нибудь поприличнее.
  13. В моём телефоне можно достать симку без отключения аккумулятора. Sony Xperia P.
  14. Если мы пишем юнит-тест для модуля Math, в котором есть АПИ функция sum, то пишем тест: void test_sum() { ASSERT(5==sum(2, 3)); } Прогоняем тест - он фейлится, потому что такая функция у нас пока что не написана. Пишем функцию, прогоняем тест до тех пор, пока успешно не прогонится.
  15. Щас процентов 50 охранно-пожарной сигнализации ставится беспроводной. За рубежом так и все 80, пожалуй. Так что смело закладывайте для умного дома беспроводку: WiFi или RF 433 с WiFi шлюзом.
  16. У меня USBTrace используется. Баг я нашёл. В моей версии NxpUsbLib было закомментировано ожидание готовности передатчика: while ( !Endpoint_IsINReady() ) { Delay_MS(2); } в функции Endpoint_Write_Stream_LE. Закомментировано было с пометкой, типа здесь виснет. После раскомментирования действительно висло. Выяснилось, что у флага isInReady не было атрибута volatile. После исправления всё заработало как надо. Вроде как в свежей версии NxpUsbLib с этим всё в порядке.
  17. Внешний с функцией SoftConnect. Но он вроде как не при чём, потому что можно просто вытыкать разъём и втыкать - всё равно происходят сбои. Щас ставлю эксперимент ещё один - вроде получше стало работать. Если заработает без проблем, то отпишусь как чинил.
  18. USB enumeration

    Есть девайс на LPC1788 с USB стеком от NXP (NxpUsbLib). Примерно каждая 8-я энумерация под Windows 7 не проходит. Если потом сделать принудительно энумерацию, то нераспознанное устройство определяется нормально. Под линуксом таких проблем не замечал, впрочем детально не исследовал. Это нормальное поведение для USB? На ваших устройствах статистика лучше? Если это поведение ненормально, то что можно попробовать поправить?
  19. Простите за оффтоп, но UEFI - это не загрузчик. OVMF как разновидность UEFI точно так же как биос сидит в ROM, а загрузчик операционки подцепляет уже отдельно с EFI partition на диске.
  20. UEFI же щас везде пихают. OVMF вы смотрели?
  21. По моему опыту, смс приходит всегда в той кодировке, в какой его отправило устройство A. Опсос ни разу ниче не перекодировал, в том числе и при работе по SMPP протоколам. Если вы отправляете смс в PDU режиме, то выставьте поле DCS в F4. Если не в PDU режиме, то насколько я помню, GSM 8 бит формат в SIM не поддерживается.
  22. Это штатное поведение для http сервера. Чтобы этого избежать, можно использовать keep-alive запросы. Или ознакомиться с принципами работы веб сокетов (нужна поддержка на хостинге, если ваш сервер сидит на стороне).
  23. В идеале можно поднять на устройстве веб сервер и принимать запросы от клиентов на включение/выключение. Однако это решение требует приличных ресурсов на контроллере и реальный IP для каждого устройства. Ваш вариант (с http клиентом на устройстве, насколько я понял) можно доработать под использование веб сокетов. Тогда можно реализовать риал тайм мониторинг и всё такое. Самый простой для реализации вариант - TCP сервер с самопальным протоколом. На устройстве соответственно TCP клиент.
  24. Чипы просто офигенные! Вот выброшу нафиг из приборов LPC1768 и заложу Ralink. Конкуренты не догонят уже никогда. :)
×
×
  • Создать...