Jump to content

    

andrewlekar

Участник
  • Content Count

    836
  • Joined

  • Last visited

Everything posted by andrewlekar


  1. void const *argument

    Что, вашему компилятору не хватает ума разместить глобальную переменную во флэше? Или вы просто не пробовали?
  2. void const *argument

    Цитатадля каких именно компиляторов Ни для каких. static очевидно может изменяться во время выполнения программы и не может быть размещён во flash. const размещает переменные во flash независимо от квалификатора static - актуально для IAR для ARM.
  3. void const *argument

    При чём тут static вообще? На ARMах const в определении переменной заставляет компилятор (и линкер) размещать её во флэше. На AVR такое не работало из-за раздельного адресного пространства.
  4. STM32F107 + RTL8201 + lwip-1.4.0

    Кнопка делает Submit на страничку CGI. CGI вызывает функцию из вашей программы. Некоторые веб-сервера для embedded применений имеют SSI (server-side includes) фичу для динамического обновления страницы. Мне лично не нравится ни CGI, ни SSI, хотя это довольно простые штуки. Я бы сделал сайт на JQuery или просто java script, кнопочка бы делала POST, а веб-сервер обрабатывал бы POST/GET запросы как надо. Про AJAX почитайте например, но там нужен парсер XML. Ничто не мешает выкинуть XML и использовать чё-нить поприличнее.
  5. Cortex-M3 и М4

    ЦитатаБез них просто не будет работать же. Будет. Таблица векторов, задание параметров входов/выходов и тактирования через регистры процессора, сама программа. Ассемблер тут нафиг не нужен, по размеру кода в килобайт гарантированно уложитесь. Цитатабез знания ассемблера хороший специалист в области микроконтроллеров и т.п. вещей невозможен в принципе. Возможен. Хороший специалист при необходимости любую технологию осваивает в течение месяца. Знать ассемблеры под все ходовые платформы нет никакого резона.
  6. Посоветуйте, какой алгоритм сжатия применить для упаковки геолокационных данных. Пожелания: - Доступные исходники на Си - Минимальное использование ОЗУ. Допустимо не более 32К, лучше уложиться хотя бы в 8К. - Данные поступают блоками фиксированного размера из флэша. Алгоритм должен позволять добавлять данные в архив по частям.
  7. STM32F107 + RTL8201 + lwip-1.4.0

    Ставлю на то, что макрос неправильно развернулся, так как от другой версии компилятора.
  8. Я так понял, что дллка раньше загружалась, а в новом проекте не загружается. Для начала нужно проверить, как советовал kolobok0, есть ли дллка рядом с запускаемой программой. Если есть, но всё равно не работает, то причина может быть в преобразовании имён функций C/C++. Если дело в преобразовании имён, то как чинить не знаю. Гуглите "dll name mangling".
  9. Чё-то дешево ATOP оценили.
  10. fpga(67, &string); Только argc - это кол-во передаваемых параметров как правило. У вас получается передаются 67 параметров - смотрите, поаккуратнее там.
  11. uC/OSII: память

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

    Размер кучи можно определить только приблизительно: размещается памяти с запасом и прогоняется программа - потом смотрите, сколько памяти максимум требовалось. Размеры стеков для задач тоже рассчитываются таким методом - автоматического вычисления стека для задач я не встречал.
  13. Hard Fault при выполнении malloc

    Возможно дело в невыровненном доступе к памяти. Попробуйте вместо sizeof поставить просто число 16. Если падать перестанет, то делайте либо по размеру структуры размещение, либо по частям но с выравниванием.
  14. Выбор PHY Ethernet для устройства на STM32F4

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

    У меня USBTrace используется. Баг я нашёл. В моей версии NxpUsbLib было закомментировано ожидание готовности передатчика: Кодwhile ( !Endpoint_IsINReady() )     {         Delay_MS(2);     } в функции Endpoint_Write_Stream_LE. Закомментировано было с пометкой, типа здесь виснет. После раскомментирования действительно висло. Выяснилось, что у флага isInReady не было атрибута volatile. После исправления всё заработало как надо. Вроде как в свежей версии NxpUsbLib с этим всё в порядке.
  22. USB enumeration

    Есть девайс на LPC1788 с USB стеком от NXP (NxpUsbLib). Примерно каждая 8-я энумерация под Windows 7 не проходит. Если потом сделать принудительно энумерацию, то нераспознанное устройство определяется нормально. Под линуксом таких проблем не замечал, впрочем детально не исследовал. Это нормальное поведение для USB? На ваших устройствах статистика лучше? Если это поведение ненормально, то что можно попробовать поправить?
  23. USB enumeration

    Внешний с функцией SoftConnect. Но он вроде как не при чём, потому что можно просто вытыкать разъём и втыкать - всё равно происходят сбои. Щас ставлю эксперимент ещё один - вроде получше стало работать. Если заработает без проблем, то отпишусь как чинил.
  24. Простите за оффтоп, но UEFI - это не загрузчик. OVMF как разновидность UEFI точно так же как биос сидит в ROM, а загрузчик операционки подцепляет уже отдельно с EFI partition на диске.
  25. ЦитатаКстати, Вы много видели PC c u-boot или, скажем так, не с BIOS ? UEFI же щас везде пихают. OVMF вы смотрели?