Jump to content

    

jcxz

Свой
  • Content Count

    7308
  • Joined

  • Last visited

Everything posted by jcxz


  1. IAR 8.40.1, директива __forceinline

    Интринсики - это тот же ассемблер, завуалированный. Если в IAR включить High-speed оптимизацию то вроде будет как раз на несколько %% быстрее. И то не факт. И код сильно раздувается.
  2. IAR 8.40.1, директива __forceinline

    Ну да, помнится когда я писал ещё для TMS320VC5502, там тоже были либы. Как же оно называлось?... DSPLIB вроде. Задействовал как-то из неё код 32-битного БИХ-фильтра на биквадратных звеньях. Ну ничё в принципе неплохо вроде. А потом заглянул в код этой функции... ии.... кто-ж так пишет??? Хотя вроде на асме написано, но такое ощущение, что писавший её даже не удосужился изучить систему команд ядра! Переписал её нафиг. Получил ускорение примерно в 3 раза! Т.е. - не %-ы, а именно в разы! Так что библиотеки - не панацея. Их пишут индусы. Хотя может потому что она бесплатная была?...
  3. IAR 8.40.1, директива __forceinline

    Имхо: потому что самый тяжёлый код (по вычислениям) у меня на асме; а тот, что на си - мне кажется потому что я когда пишу, хорошо знаю систему команд и предвижу, во что оно скомпилится. Поэтому даже на си тяжёлый по вычислениям код, стараюсь писать оптимально. Ну и очень часто смотрю в листинг. Поэтому работы оптимизатору оставляю немного. Почему это? В моём проекте главное прерывание - с такой же частотой. Если нужно тупо просуммировать (усреднить) кучу значений, зачем это делать на си, если это легко сделать на асме? Получив при этом ускорение на десятки %-ов с минимумом усилий. При сравнимой сложности. Покажите пример как заставить компилятор использовать например: UADD16/UHADD16 - очень интересно! Да хотя бы ту же самую CLZ - как?? Без интринсинков. Как написать код на си чтобы она появилась?
  4. IAR 8.40.1, директива __forceinline

    ....или писать на асме. У меня вот сейчас в текущем проекте при компиляции с оптимизацией "Medium" загрузка процессора примерно такая-же (33-34%) как при оптимизации "High-Balanced". На "Medium" даже чуть меньше (~1% разницы). IAR_7.80.4. Почему бы это?...
  5. IAR 8051 Linker

    Согласен. В своё время когда нужно было написать под CY7C68013A, взял проект из Кейла, и он завёлся сразу - с полпинка. Потом его дорабатывал. И про отладку даже ничего не помню - значит не было проблем с ней никаких. Это один из двух случаев когда я пользовал Кейл (и то - мелких), почти все остальные проекты - в IAR/CCS. Так что фанатом Кейла не являюсь. Это просто - инструмент.
  6. Да ладно! Много лет назад я работал в конторе связанной с эксплуатацией систем связи на сетях радиостанций (данного диапазона). Заказчики у нас были серьёзные - нефтяные компании. Так когда появлялась какая-то проблема со связью (пропадала связь с какими-то КП на кустах нефтедобычи например), то нас поднимали чуть не по тревоге - выяснять в чём дело. И если выяснялось, что проблемы со связью из-за того, что кто-то гадит в эфир на арендованных ими (нефтекомпаниями) частотах, то сразу же стучали куда следует и соответствующие службы реагировали очень быстро! Хотя, тогда время было сразу после 90-хх, так что могли решить проблему и в стиле 90-хх. Но точно то, что проблема быстро решалась. PS: Если же конечно косяк был наш, то мы практически жили на этих объектах, пока не пофиксим.
  7. ...а поставьте себя в зависимость от продления/не_продления разрешения ГКРЧ на аренду частотного диапазона.
  8. IAR 8051 Linker

    Просто нет слов.... "Чукча не читатель - чукча писатель". Это про вас. Какой смысл вам что-то объяснять? Из того что я советовал, Вы ничего не поняли. От слова "вообще".
  9. IAR 8051 Linker

    Так портируйте проект для этого МК из Кейла в IAR, а потом возьмите монитор из IAR-а (из любого проекта для x51) и добавьте его в портированный проект.
  10. IAR 8051 Linker

    Ещё раз повторяю: Я Вам вроде и не советовал использовать Кейл. А советовал взять оттуда пример. А потом добавить туда всё что необходимо. В том числе и поддержку этого монитора, раз без него совсем никак (только на кой он нужен? Если есть работающий проект, а значит можно всю необходимую отладочную информацию передавать через этот уже работающий канал связи). PS: Мне кажется Вы не читаете мои сообщения. Или не понимаете прочитанного...
  11. IAR 8051 Linker

    Это Вы этим сейчас и занимаетесь, пытаясь перетащить проект с левого МК на этот.
  12. IAR 8051 Linker

    Интересно - почему? "протокол" чего? Портировать затем чтобы компилировалось.
  13. Интересно, а как Вы тогда собрались выключать их "в области перехода через 0" если период следования этих переходов = 10мс? Тогда уж пишите "во время 2-х ближайших переходов через 0"
  14. IAR 8051 Linker

    Я Вам вроде и не советовал использовать Кейл. А советовал взять оттуда пример. И компилить его хоть под IAR хоть под чем-то другим. Хотя я бы начал всё-таки с Кейла. Чтобы время не терять. А когда там пример заработает - портировал бы его под IAR.
  15. IAR 8051 Linker

    Ну если речь идёт о религиозной нетерпимости, то действительно остаётся только перепиливать левый проект от совсем другого МК.
  16. IAR 8051 Linker

    Я в своё время использовал готовый. Значит должен быть. За давностью лет уже точно не вспомню где его брал. Но думаю - или шёл в примерах с Keil или он был в составе CySuite.
  17. IAR 8051 Linker

    А зачем тогда использовать готовый проект от совершенно другого МК? Возьмите проект для CY7C68013A.
  18. IAR 8051 Linker

    О каком ROM речь? ROM зашитая производителем при производсте чипов? А на кой её мониторить?? Думаете оно изменится вдруг? Насколько помню у CY7C68013A есть режим загрузки "на лету" по USB. Просто кладёте прошивку (прямо компилятором) в определённую директорию на компе, и она автоматом отправляется в МК при выходе его из сброса.
  19. Смотря для чего запускать. Если это нужно для выведения модуля из зависшего состояния, то это не годится, т.к. этот пин - программный, а значит его обработчик повиснет вместе с ПО. В подавляющем большинстве GSM-модулей самый действенный метод железного сброса - ключ на питание.
  20. Потому что в вашем даташите это никак не гарантируется и не оговорено. А значит: будет зависеть от технологического процесса изготовления реле и степени износа в процессе эксплуатации. И даже не только "разное время срабатывания", а я думаю - и разные моменты замыкания/размыкания разных групп контактов.
  21. LWIP Socket API блокировка задачи

    А что такое "физический дисконнект" по Вашему?
  22. Обещали рассказать о работе девайса и пропали куда-то. А у нас тут 11-е ноября на носу....
  23. Stm32f405 запись во Flash 16bit

    Кто Вам сказал, что она что-то "портит"? Если функция - часть некоего драйвера (часть его API) и в данном драйвере какие-то биты каких-то используемых регистров периферии (периферии принадлежащей этому драйверу) имеют предопределённое значение (например - установлены на этапе инициализации драйвера), то почему эта функция не может туда эти значения записать? Раз она их определённо "знает", то зачем ей их читать из этого регистра? Она может сразу записать туда нужную константу, сформированную в build-time. А может эта функция - вообще не часть API, а какая-то внутренняя функция драйвера (что скорей всего и есть). Какие-то надуманные ограничения....
  24. Stm32f405 запись во Flash 16bit

    А если нет? Если не были выставлены? Очевидно что это - не весь код, а только его кусок. По которому нельзя сделать таких выводов. Если где-то в начале кода содержимое регистра было проинициализировано, все биты? А потом дальше, последующими записями изменяются только нужные биты в регистре, а в другие записываются те же значения, что были раньше (так как предыдущее значение их известно). Я всегда так делаю в своих драйверах. Какой смысл читать регистр, если его значение известно из предыдущего кода? Чтобы замедлить работу программы и сделать её более громоздкой?
  25. Stm32f405 запись во Flash 16bit

    Так и следует делать. А чтобы "не бояться" нужно мануал на периферию читать. Да к тому же из приведённого кода никак не следует что автор "меняет значение ВСЕХ битовых полей регистра". А вот "FLASH->CR &= ~(FLASH_CR_PG);" - тут чтение совершенно лишнее, достаточно только записи.