Jump to content

    

Petka

Свой
  • Content Count

    1438
  • Joined

  • Last visited

Everything posted by Petka


  1. мультикаст в данной задаче не поможет? а TTL=1 ? Хотя нет, TTL=1 не поможет. Проверил. Роутер TTL не уменьшает.
  2. Нет. Соберётся, но работать не будет. Те версии, что я собирал для кварца 7,3727 были "особенные". Для того, что бы программатор успевал на малой частоте выполнять нужную работу была выкинута часть расширенного функционала и проведена мелкая оптимизация. Если ОЧЕНЬ надо, то попробую найти те исходники. Но как говорится без гарантий =)
  3. Можно перешить "дискавери" в "Versaloon".
  4. Проверьте номиналы резисторов в программаторе.
  5. В крайней прошивке программатора сигнатура исправлена. Обновите прошивку.
  6. Ага, и USB видеокарта тоже на 1.1 должна работать? =)
  7. Косяк у Кейла

    Согласен, конструкция не нужна при одном или нескольких нижеследующих случаях. 1) Если в работе используется только один компилятор. (IAR к примеру) 2) Если в работе используется только одна архитектура. (ARM к примеру) 3) Если в работе участвует только один человек. (С высокой культурой программирования) 4) Если в работе не требуется следовать стандартам индустрии. (MISRA C к примеру) 5) Если в работе не требуется использовать макросы-как-функции. (Для целей отладки, например) 6) Если в работе используется компилятор с полностью отключенной оптимизацией, или настолько древний, что константы в условиях не обрабатываются на стадии компиляции. 7) Если в работе принято не признавать своих заблуждений.
  8. Косяк у Кейла

    Не утруждайтесь. Это такой стиль. Или как принято говорить: двойные стандарты. Когда я в этой теме просил "гуру" дать ссылки на подтверждение своих голословных заявлений (http://electronix.ru/forum/index.php?s=&showtopic=130098&view=findpost&p=1361284) , то "гуру" не соизволил ничего ответить по существу дела. Вместо этого "гуру" зачем-то приплёл не относящийся к делу пустой "for(;;)" прекрасно понимая что это совсем не эквивалент do-while-zero конструкции. Забавно получилось, что "гуру" вместо признания своей ошибки начал загонять себя ещё глубже, ссылаясь на "творца Си" Денниса Ритчи. Однако, "гуру" забыл что в сеть попали исходники самых первых трансляторов. По исходникам становится очевидно, что конструкция for вообще отсутствовала в первом компиляторе а для циклов "творец" использовал while. P.S. Будьте добрее. Всем хороших выходных.
  9. Как было сказано выше можно на регионы памяти назначать целиком единицы линковки. К примеру всё из startup.o размещать во внутренней памяти а всё остальное во внешней.
  10. Гуглить "скрипт линкера".
  11. Косяк у Кейла

    Тут такое дело... Код от "Самого" Ритчи: https://github.com/mortdeus/legacy-cc/blob/...120c/c11.c#L219 И не надо фантазировать на пустом месте по поводу скобок. P.S. Так я от Вас и не получил подтверждения Ваших слов про: "...ибо while(константа) принципиально ошибочное выражение,..." Получил только очередные фантазии про цикл for(;;), которого ВООБЩЕ не было в первых компилаторах Си. А while был. И автор языка для циклов использовал именно while.
  12. Косяк у Кейла

    Очевидно, тут не вопрос веры. Сказали "А", говорите и "Б". Если "лишние" пробельные символы компилятор может удалять(игнорировать) без предупреждений, то и валидные конструкции "while(0)", "for(;;)", "#if 0", по той-же самой логике транслятор должен обрабатывать согласно стандарту "НЕ РАССУЖДАЯ". Что бы не уводить обсуждение в сторону прошу подкрепить или опровергнуть Ваше заявление Откуда вы это взяли? Есть какой-то стандарт где это описано? Отраслевые инструкции? Исследования? В книжке какой-то прочитали? Бложик? Твиттер? Сплетни? С удовольствием ознакомлюсь с источником такой информации.
  13. Косяк у Кейла

    Резюме: "вменяемый компилятор" по умолчанию не выдаёт предупреждение на вполне законную конструкцию. Плюсик к IAR Systems. В качестве литературной гиперболы: в конструкции: r = (a * b) + (c * d); тоже есть "лишние конструкции", которые транслятор "выкинет". Например, скобки вообще "лишние". Да и пробелы совсем не нужны. Может программист "все-же рассчитывал этими скобками на какой-то другой эффект"? Резюме: наличие широкого спектра предупреждений в трансляторах это хорошо. Но порою производители "инструментов" немного перегибают палку. P.S. Модераторам: из топика имеет смысл обсуждение конструкции do-while-zero вынести в отдельную тему.
  14. Косяк у Кейла

    1) С точки зрения стандарта Си конструкция do-while-zero не является "Implementation-Defined Behavior", "Undefined behavior" или пр. Так что поводов "давать по рукам" программисту никаких нет. 2) Уважаемый Вами инструмент от "IAR Systems" имеет возможность проверять в том числе и правила "MISRA C". Было бы забавно наблюдать что на единственно возможную конструкцию согласно правилам "MISRA C" транслятор при проверке будет выдавать предупреждение. :smile3046:
  15. Косяк у Кейла

    Что-то задело меня это безапелляционное утверждение. Для Си-программистов встраиваемых систем группа "энтузиастов" из индустрии разработала стандарт "MISRA C". Приведу небольшую выдержку из стандарта редакции 2004 года. Так что если заниматься программированием для встраиваемых систем, такая нотация макросов является не только "допустимой", но и обязательной (с точки зрения MISRA C).
  16. Cortex-M7

    Та же проблема, но теперь вынесена в libc. 1) Какие гарантии, что memset не рассчитывает на заранее инициализированную/очищенную область памяти? 2) При оптимизации LTO будет ли вообще этот memset как вызов libc или цикл очистки будет "заинлайнен"? Всё это меня очень сильно смущает. Есть ли какие-нибудь гарантированные способы обойти эти неоднозначности? (без АСМа)
  17. Cortex-M7

    Как вы умудряетесь в startup на C делать очистку секции "bss" (инициализированые нулями данные)? У меня это единственная часть, которая делается инлайн-ассемблером. Если делать на Си, то код обнуления области памяти не всегда корректно работает (зависит от компилятора). Видимо, компилятор рассчитывает на изначально нулевое значение переменной счётчика, что не так на стадии стартапа.
  18. Cortex-M7

    Согласен, классный чип. Внешние конфигурашки не нужны, даже старшие чипы не требуют никаких радиаторов, встроенный кортекс выбирает команды на частоте 160 МГц (это Ксении на заметку, что не только у япошек есть быстрый флеш для контроллеров) Шина процика выведена в ПЛИС, что позволяет сделать практически любое количество необходимой периферии. 100 дополнительных ШИМов? Легко! Столько же УАРТов? Можно! Десятки аппаратных умножителей позволят решать целочисленные задачи DSP. Мне понравилось.
  19. тут в первом посте: http://electronix.ru/forum/index.php?showtopic=42679 под строкой "Актуальные на 8 июля 2009 года документы:"
  20. Да, самый разумный вариант. Сначала отделите мухи от котлет. Сделайте два "проекта" всё что относится к M0 в один, остальное в другой. Если будут сложности по сборке каждого проекта - обращайтесь. Потом с помощью objcopy и srecord можно всё это поместить в один хекс. Начните с раздельных ELF.
  21. Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет. Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecord Общий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно. П.С. Опишите подробнее, что у вас имеется, и что вы хотите сделать. Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile.
  22. Назревает вопрос: Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл?
  23. Я работал только с Mini версией версалуна. SPI и I2C точно работают. vsprog - документирована не очень хорошо, но разобраться можно. В этой софтинке как раз можно запускать скрипты с использованием SPI, GPIO и т.д. Про небольшое количество GPIO - тут либо если нужно готовое железо и не хватает портов, то надо подбирать другое железо. Если есть возможность подпаяться к чипу, можно вывести хоть все GPIO готовой железки. Либо самому развести. Софт на микроконтроллере легко дорабатывается под другой чип/разводку/другое количество GPIO. Софт на компе тоже достаточно легко дорабатывается. Всё доступно в исходных кодах. Для себя софт я сам собирал. Правда мне нужно было под Linux.