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

demiurg_spb

Свой
  • Постов

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

  • Посещение

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


  1. Легко. Причём это поведение описано в стандарте. Если у флэша и ОЗУ разные адресные пространства именно так и будет. Например, для AVR специально придуман квалификатор __flash, который укажет компилятору, что данные нужно поместить во флэш, а не в основную память (коей считается ОЗУ). Для ARM, где единое адресное пространство, можно с уверенностью сказать, что static const данные лягут во флэш (кроме случая когда компилятор решит соптимизировать) . Умная книга, которую ТС советовали читать - это стандарт языка Си...
  2. В компанию ООО "Сумма технологий" требуется инженер-программист встраиваемых систем. Должностные обязанности: - разработка ПО под архитектуру ARM (cortex-m); - написание ПД согласно ЕСПД; - участие в испытаниях макетов и опытных образцов. Требования к кандидату: - отличное знание языка Си; - отличное знание архитектуры ARM (cortex-m); - опыт работы с gnu-arm тулчейном. Условия труда: - пятидневка с 9 до 17:30; - официальное оформление; - белая ЗП в районе 60 т.р. чистыми в зависимости от опыта кандидата; - офисное здание со столовой БЦ "Скайтрейд" Санкт-Петербург ул. Репищева 20. http://www.summatechnology.ru/contacts/ +7(812)333-31-21 (доб.189) Елена (отдел кадров).
  3. Чтобы нормально разобраться в принципах работы gcc-xxx, утилиты make и т.д.и т.п. нужен не один месяц. Вместо того, чтобы устраивать подобную клоунаду ТС просто необходимо научиться читать доки. Жаль что Чукча не читатель, а писатель.
  4. Проблема в чём-то другом. У вас ведь программа не состоит только из данных во флеше, а есть ещё и код программ. avr-gcc (см скрипт линкера и map-файл) обычно размещает секцию с данными перед секцией кода. Поэтому проблемы с заполнением памяти на 49% и 51% не следуют из вышеназванных предположений. А на будущее рекомендую изучить файлик pgmspace.h Также есть смысл использовать более свежий тулчейн хотя бы avr-gcc-4.9.2 т.к. там появилась поддержка ключевого слова __flash (на подобии IAR). https://sourceforge.net/projects/mobileches...%20%28Win32%29/
  5. CodeVisionAVR в топку! Используйте avr-gcc. Для начала лучше: https://sourceforge.net/projects/winavr/files/ потом, когда вдруг потребуется что-то свеженькое: http://www.microchip.com/development-tools/atmel-studio-7 + http://www.atmel.com/ru/ru/tools/ATMELAVRT...FORWINDOWS.aspx
  6. unsigned int Div_Round_Closest(unsigned int x, unsigned int divisor) { return (x/(float)divisor + 0.5f); } - это только положительных чисел, а для отрицательных -0,5f надо. Либо так: int divRoundClosest(const int n, const int d) { return ((n < 0) ^ (d < 0)) ? ((n - d/2)/d) : ((n + d/2)/d); } Подробности тут: https://stackoverflow.com/questions/2422712...d-of-truncating
  7. Для скорости, очевидно! Основная идея - улучшение переносимости программ между архитектурами с разной разрядностью АЛУ. Например, на AVR uint_fast8_t будет 8-ми битным, а на Cortex-m уже 32-ух битным. Его следует использовать, фактически, повсеместно, кроме как в протоколах передачи данных. Я использую эти типы в счётчиках цикла, в качестве аргументов функции, а также в качестве возвращаемого функцией значения, локальные временные и статические переменные и т.д.... Чтобы понять суть, напишите код для Cortex-m, с использованием uint_fast8_t и uint8_t, и посмотрите во что выливается компиляция такого кода:
  8. Понятно, что их много разных. Но наиболее употребимые же есть?
  9. Спасибо за ссылочку... Поясню, делаю прибор со входом для различных термодатчиков. Хочу добавить стандартные градуировки NTC, чтобы пользователь мог выбрать сам подходящую к имеющемуся в системе датчику.
  10. Ищу информацию из первоисточника по типам полупроводниковых датчиков температуры NTC В настоящий момент знаю лишь что смог нагуглить. ИМХО наиболее распространены - 10K NTC - NTC 575 также есть целая серия FT003 - там их штук 20 разновидностей. Вопрос что самое ходовое и где найти НСХ (таблицы или формулы) для этих датчиков? Спасибо!
  11. https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gc...r-Builtins.html __builtin_constant_p
  12. Более того есть доки и даже книжки (см. список внизу на вики) Человеку, сидящему в winows, никогда не понять смысла opensource(
  13. Всегда можно зарепортить баг или предложение. Также можно и самому пытаться допиливать продукт. На мой взгляд это чуть ли не единственный достаточно простой открытый продукт для моделирования схем. Я не знаю альтернативы Qusc, также как и не знаю альтернативы kicad.
  14. https://ru.wikipedia.org/wiki/Qucs http://qucs.sourceforge.net/download.html Кто использовал, поделитесь впечатлениями.
  15. Если интересно, почитайте стандарт С99 - там написано то, о чём я вкратце изложил. Даёт именно то о чём я сказал: в случае разделной компиляции без LTO, если компилятор не заинлайнит эту функцию в различных единицах трансляции, то мы всё равно получим ЛИШЬ ОДИН экземпляр этой функции.
  16. extern inline

    Вот уже как лет 15 программирую на Си и думал, что уже знаю всё и вся, но на прошлой удивился следующему: Оказывается, если реализацию функции поместить в заголовочном файле unit.h и описать её как inline void foo(void) { do something...} , без слова static а в файле unit.c поместить следующее extern inline void foo(void); то компилятор гарантировано создаст экземпляр этой функции для внешнего вызова, а в других модулях, включающих заголовочный файл unit.h, эта функция может заинлайнится, либо будет вызвана из модуля unit.c (это зависит от уровня оптимизации и отдано на откуп компилятору). Вот такие пироги)))
  17. Так сказать на совершенно случайно оказавшемся и первым попавшемся Кинетисе))) Это мне уже напоминает анекдот про собаку и блох: "А если бы у рыбы была шерсть, то у неё наверняка были бы блохи (кинетисы)..."
  18. Я совершенно не понял к чему Вы мне это написали? Именно эту мысль я и отразил в своём предыдущем посте. Скопируйте мой исходник и скомпилируйте, а потом раскомментируйте третью строку и скомпилируйте снова.
  19. #include <string.h> strcpy(tst_hex.passkey, "12345"); Попытайтесь осознать это: char a[20] = "12345"; char* b = NULL; // a = "bad"; b = "good";
  20. ImageCraft - не самый лучший выбор. Хуже разве что CodeVision. Не хотите увлекательных квестов в будущем - переходите на avr-gcc (бесплатно), либо на iar (если есть лишние деньги).
  21. Чем не угодил libopencm3? И почему бы не пофиксить багу и отправить патч?
×
×
  • Создать...