Jump to content

    

AVI-crak

Участник
  • Content Count

    234
  • Joined

  • Last visited

Everything posted by AVI-crak


  1. STM32H7+DCMI+DMA+обработка

    Ну это понятно, но триста баксов за чип из омерики - это как-то непропорционально рядом с stm.
  2. STM32H7+DCMI+DMA+обработка

    Если не секрет, где так мёдом намазано? Прошёлся поиском - цены просто дурные по сравнению с риалтеком, у которого кстати 500Msps и сразу три канала. (дёргаю с дохлых мониторов)
  3. STM32F429 Discovery / uGFX

    Я не в курсе насколько будет ускорение, потому как F7, 16 бит память, и 800*480 экран. Но могу точно сказать - свободных ног мк станет значительно меньше.
  4. Микросхемы SDRAM с шиной 32 бита

    Я тоже в поисках. https://www.micron.com/products/dram/sdram - нету, снято с производсва http://www.issiusa.com/products-dram-SDR.htm - например IS42S32160B, ценник откровенно конский, снято с производсва http://www.mt-system.ru/sites/default/file...msungmicron.pdf - Samsung откровенно дешёвый, но подходящего тоже нет https://www.alliancememory.com/products/synchronous-dram/ - не уверен что заработает, у меня не завелось. Статическая память ещё дороже, там прямо космические цены. Комбинированные чипы флеш+память - сразу начинаются с ddr. Остаётся вяло пинать ST, чтобы она встраивала sdram под крышку чипа мк. Вот пусть где хочет - там и берёт. А ещё мне жутко понравилась HyperRAM http://www.cypress.com/search-results?as_q=HyperRAM , так сказать - память будущих аурдинщиков.
  5. STM32H743. Тайминги FMC

    Я и здесь могу это повторить - можно и нужно. Более того - код будет более простым и нативным по сравнению с явным указанием адреса команд и данных. Обращаться к области памяти как к массиву, да почти так. Без адреса, через имя структуры, и линейно от начала до конца окна. Дело в том что у всех дисплеев счётчик адреса данных щёлкает автоматически с каждым чтением/записи данных. А для новых дисплеев это свойство распространяется на всю периферию (наверное забыли отключить).
  6. Графический фильтр на Cortex-M7

    Это-ж dma2d, смешивание двух слоёв. Эту операцию можно полностью аппаратно выполнять. Прогресс будет даже на небольших блоках. По самому алгоритму. Честно говорю - пытался понять и нишмог. Блочную схему, ну или хотя-бы точку входа в алгоритм... А то там столько напечатано, что ногу свернуть можно.
  7. Графический фильтр на Cortex-M7

    NEON имеет множество пробелов по сравнению с возможностями Cortex-M7. И уж точно Cortex-M7 может выполнять всё что есть в NEON. Нужно просто перелопатить код, удаляя и заменяя вставки NEON функций.
  8. Генерация звука

    Чем проще - тем надёжнее. Для такого однообразного события достаточно сохранённых семплов. Программно их собирать достаточно сложно, и уж точно невозможно собрать мгновенно. А для музыки имеет смысл произвести раскопки среди форматов MID. MOD. XM. S3M. iT. Для них есть открытые проекты плееров, редакторов самой музыки и готовая музыка.
  9. Умножение и деление в ядрах АРМ

    Поддержка со стороны gcc остановилась на V8, без дальнейшего развития. Аппаратная поддержка может быть и есть, а вот программной - нету. Для применения приходится запускать отдельную функцию, gcc не выполняет мета подстановку автоматически. А спрашивал я о встроенных в gcc библиотеках, тех-что откомпелированны. Ну да, есть у gcc собственный гит, и я даже знаю его адрес. Но то-ли руки кривые, то-ли там кривизна превышает мой уровень, но скачать репозиторий у меня не получается. А бродить по бесконечным каталогам через веб интерфейс - унылое занятие. Как вариант- гит устаревшей библиотеки, той что была в каталоге gcc. https://github.com/devkitPro/newlib/tree/master/newlib
  10. Умножение и деление в ядрах АРМ

    Какое странное совпадение, неделю назад я выловил последний баг в собственной библиотеке стандартных математических функций для одинарной точности. Но у меня была задача сделать минимальную ошибку вычислений. Значит зря старался? Кстати - дай плиз ссылку для особоленивых... А то у них там обе ноги сломать можно, пока найдёшь то что нужно. И ещё. Вычисление квадратного корня на arm чипе с аппаратной поддержкой 14тиков для одинарной точности, и кажется 36тиков для двойной(не уверен в точности). Это аппаратные инструкции для Cortex-M4-7, которых естественно нету в Cortex-Axx - потому как это отдельная ветка развития ядра, и у них вроде как война.
  11. Правильный ответ считается решением задачи.
  12. Как и предполагалось, для ответа простые вопросы нужно хорошо подумать. Повторюсь: Откуда мк начинает выполнять программный код сразу после аппаратного сброса. Общая функция этого кода, и что происходит дальше по алгоритму.
  13. Простые вопросы на самом деле бывают со сложными ответами. Особенно когда мозаика не складывается в общий узор. Я повторю свой вопрос - откуда мк читает программный код? Есть ли дополнительный код или инструкции которые должен выполнять мк в нативе, или программный код на мк в режиме эмуляции?
  14. IDA Pro

    Процент успеха программного кода напрямую зависит от содержащихся в нём синтаксических и смысловых ошибок. Те самые синие предупреждения в логе сборщика, не критические ошибки. На библиотеках от st - количество синевы зашкаливает. Написать код для st без синевы - очень сложно. Необходимо очень многое переписывать с нуля, даже то что уже хорошо работает. Хотя это и радует взгляд - сомневаюсь что этим кто-то будет заниматься бесплатно.
  15. Если "модификация" происходит под внешним управлением - то это называется эмуляцией. Доказательство очень простое: информация от том что и как необходимо изменить - остаётся без изменений. Место хранения этой информации не важно, важно то что эта информация является избыточной. Самомодифицирующийся код в явном виде делится на два типа поведения: модификация себя любимого под внешним управлением, и автономное поведение. Оба случая утрачивают начальное состояние кода. Более простое название этого процесса - полиморфный код. Используется вирусами, защитой лицензии, и как не странно - антивирусами. Насколько я верно понял, вам нужно выполнять внешний код из текстового ввода. То-есть все те-же команды ассемблера arm - записанные в текстовом массиве. Без разметки границ, без легирования меток, и без чёткой локализации хранения данных. Поздравляю - это называется парсер. Имеет смысл посмотреть блочную реализацию парсера бэйсика. На него кстати есть с десяток активных проектов на гите, в том числе и под арм. Или реализацию джавы для арм, хотя там без тяжёлых наркотиков очень трудно разобраться.
  16. Cortex, да и почти все arm чипы - используют внеочередное исполнение кода. Он может загружать адреса для двух функций одновременно. Просчитывать данные которые будут применяться где-то внутри функции до её реального вызова. Размазывать циклы на всю портянку. Обращать переменные в другое значение чем было назначено в пользовательской программе -без потери целостности алгоритма, и ещё много много чего. Это их главная фишка. Фактически код в отладчике выполняется по строкам программы, а в реальности прыгает как бешеный сайгак. Попытка воткнуть модификацию кода без предварительной изоляции всего куска - обычно приводит быстрому и окончательному сбою. Свод правил - прикольная вещь. Кусок кода предварительно компилируется в асму, с сохранением всех имён, названий функций и так далее. На весь этот кусок кода накладывается структура - с достаточно детальным описанием, прежде всего для себя (запутаться проще простого). И только после этого компилятор поймёт - чего от него хотят. Код который будет модифицировать этот кусок асмы - будет автоматически подстраиваться под имеющиеся логический цикл. Это означает что компилятор не воткнёт команды предварительного чтения на модифицированный код, корректно сделает переход, и корректно обработает замену кода и данных на которые он будет ссылаться. Есно остальной код без модификаций - если он уже вызывал некоторые функции из этого блока - то потеряет адреса. Не просто так - а сработают заглушки по внешнему флагу. В плюсах такие модификации кода происходят автоматически при сборке функции. Когда код выполняется из памяти - там вообще трудно чего понять. (по крайней мере мне). Естественно. Но если нужно модифицировать код - то требования повышаются. Компилятору нужно будет объяснить - где и чего менять, и как это скажется на его дальнейшей работе. Кхм, это наверное слишком глупо, но всё-же. Флешка - это именно та флешка что вставляется в разъём компьютера?
  17. Не предполагает. Любая перетасовка программного кода - есть алгоритм. Ничего сложного, местами даже интересно, в плюсах вообще всё прозрачно получается. Самомодифицирующийся код - это когда цель не перемещение, а изменение программного кода. Добавление, удаление, модификация известного кода в зависимости от заложенного в него алгоритма. То-есть там появляются команды и данные которых не было в проекте изначально.
  18. Начнём с того что для успешной компиляции такого кода - необходимы пляски с бубном. И бубен тот особенный, очень неудобный в руках. И танец чуть больше чем чумашедший. Информации на эту тему раз/два и обчёлся, и всё такое ветхое - пылью покрытое. Всё дело в том что сама функция изменения физического и логического поведения кода на кортексах работает из коробки. Коробка сея чёрная, на свет не прозрачная, и достаточно уникальная. Создавая собственный свод правил для определений поведения кода в режиме реального времени исполнения - есть огромная вероятность отстрелить себе обе ноги, а так-же другие части тела. Но выход есть всегда. На Си, Си++, и выше - задать точную последовательность применения мнемоник ядра практически невозможно. Однако это можно сделать на асме. Весь проект придётся делить на две части: до и после. Причём компилировать придётся то-же отдельно. Весьма утомительное удовольствие. Если нет задачи защиты информации - этим рукоблудием лучше не заниматься.
  19. Дык в этом проблема, алгоритмы распознавания лица по сохранённой векторной маске - не умещаются в обычный контролёр чисто физически. Хотя их и можно утрамбовать - мало кто этим начнёт заниматься. С момента когда эти алгоритмы уже стали выдавать вменяемые данные - в них было внесено огромное количество дублирующего кода. Те самые полупустые библиотеки, фреймворки, куски кода на разных языках и наречиях и так далее. Вполне безобидная операция сложения может занимать килобайты кода - проверки на условия и ограничения под всеми углами. И такая фигня на каждой странице кода. Удачи самоубийце, я пас.
  20. DMA и FreeRTOS

    У spi есть два режима cs - Motorola и TI режим, и я их постоянно путаю. Один из них может активировать cs, но не может его снять - предназначен для работы с потоком. Второй дёргает ногу cs с каждой 4-16 битной одноразовой передачей данных. Размер данных задаётся отдельно. Меня другое волнует, они уже давно придумали fifo буфер и ещё кучу полезностей, но отчего-то размер данных ограничен в 16 бит...
  21. DMA и FreeRTOS

    Тут важнее второй раз его не пнуть на передачу, пока он нормально работает (а это вполне возможно). Для этого нужно сначала выиграть арбитраж на конкретную линию дма, то-есть добиться монопольной работы с дма из одной задачи. А дальше можно использовать эту линию как хочется, и освободить когда будет не нужна.
  22. lwIp tcp клиент для STM32

    Ну значит вырезано. Подсчитывать байты в пользовательской функции - это как землю руками вращать.
  23. lwIp tcp клиент для STM32

    Вроде-бы lwIp работает точно так-же как терминал - учитывает управляющий символ строки. Если конечно это не вырезано с корнем.
  24. Библиотеки

    Ви таки не поверите, почти все собранные библиотеки имеют политику частичного объявления. Это связанно с тем что они имеют внутренние, не публичные функции, предназначенные для собственной корректной работы.
  25. Библиотеки

    Это имеет смысл когда к библиотеке есть документация, полный набор файлов для быстрого поиска функций, или когда библиотека твоя личная. Но вот использовать жирную чужую библиотеку без возможности заглянуть в её содержимое - уже явный перебор. Кстати насчёт пересборки проекта - gcc следит за изменениями в файлах, если кеш *.a разрешен - то он его не собирает каждый раз, а использует уже имеющиеся. Это работает даже при переключении проектов. Файлы *.a остаются в папке сборки, и используются по мере надобности. Устаревшая версия уничтожается автоматически. Так-что насчёт жирных проектов - не всё столь однозначно.