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

AVI-crak

Участник
  • Постов

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

  • Посещение

Весь контент AVI-crak


  1. STM32G07x STM32G08x

    Вот когда уволят обкуренного проектировщика, тогда будут новые продукты. А сейчас у них маниакальная зависимость от менеджеров проекта свихнувшихся на совместимости корпусов разных серий. Новое - это когда при разводке ПП не придётся собирать контакты со всех четырёх сторон чипа под память, дисплей, и так далее. Оно должно выглядеть красиво, тогда и работать будет лучше, и стоить дешевле.
  2. Перепроверил. EXTI->PR сбрасывается в ноль после записи единицы. Читать его нужно только в случае множества линий на одно прерывание, а таких всего два EXTI9_5_IRQHandler и EXTI15_10_IRQHandler.
  3. Физически - да, а по смыслу - нет. Чтение их этого регистра не имеет смысла, он всегда успевает сбросится в ноль аппаратно. Но GCC об это не знает.
  4. Совершают точно такие-же ошибки. Модификаторы const и volatile, а так-же их комбинации - не позволяют реализовать условие - "только запись". Наличие такого нового модификатора могло-бы запретить чтение из регистра. Выдав ошибку ещё в процессе набора кода.
  5. Ну это ограничение самого GCC. Пока есть всего два доступных модификатора const и volatile для типов - ситуация не изменится. Тут нужен модификатор "только запись", но его пока не изобрели.
  6. Возможно чипы нужно делать иначе,
  7. Мне тоже понравилось. Они выполнили компоновку всех необходимых элементов c-sip - в одном пластиковом корпусе. Необходимых - это тех что что инженеру придётся использовать в любом случае. Но чёт подери, почему так дорого??? Если делать то-же самое для stm чипов - то цена получится просто космической... Это-ж нужно сначала купить чип памяти, потом стравить пластик, снять с подложки, и разварить на новой. Они-ж не умеют делать чипы памяти самостоятельно...
  8. Ну это понятно, но триста баксов за чип из омерики - это как-то непропорционально рядом с stm.
  9. Если не секрет, где так мёдом намазано? Прошёлся поиском - цены просто дурные по сравнению с риалтеком, у которого кстати 500Msps и сразу три канала. (дёргаю с дохлых мониторов)
  10. STM32F429 Discovery / uGFX

    Я не в курсе насколько будет ускорение, потому как F7, 16 бит память, и 800*480 экран. Но могу точно сказать - свободных ног мк станет значительно меньше.
  11. Я тоже в поисках. 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 , так сказать - память будущих аурдинщиков.
  12. Я и здесь могу это повторить - можно и нужно. Более того - код будет более простым и нативным по сравнению с явным указанием адреса команд и данных. Обращаться к области памяти как к массиву, да почти так. Без адреса, через имя структуры, и линейно от начала до конца окна. Дело в том что у всех дисплеев счётчик адреса данных щёлкает автоматически с каждым чтением/записи данных. А для новых дисплеев это свойство распространяется на всю периферию (наверное забыли отключить).
  13. Это-ж dma2d, смешивание двух слоёв. Эту операцию можно полностью аппаратно выполнять. Прогресс будет даже на небольших блоках. По самому алгоритму. Честно говорю - пытался понять и нишмог. Блочную схему, ну или хотя-бы точку входа в алгоритм... А то там столько напечатано, что ногу свернуть можно.
  14. NEON имеет множество пробелов по сравнению с возможностями Cortex-M7. И уж точно Cortex-M7 может выполнять всё что есть в NEON. Нужно просто перелопатить код, удаляя и заменяя вставки NEON функций.
  15. Генерация звука

    Чем проще - тем надёжнее. Для такого однообразного события достаточно сохранённых семплов. Программно их собирать достаточно сложно, и уж точно невозможно собрать мгновенно. А для музыки имеет смысл произвести раскопки среди форматов MID. MOD. XM. S3M. iT. Для них есть открытые проекты плееров, редакторов самой музыки и готовая музыка.
  16. Поддержка со стороны gcc остановилась на V8, без дальнейшего развития. Аппаратная поддержка может быть и есть, а вот программной - нету. Для применения приходится запускать отдельную функцию, gcc не выполняет мета подстановку автоматически. А спрашивал я о встроенных в gcc библиотеках, тех-что откомпелированны. Ну да, есть у gcc собственный гит, и я даже знаю его адрес. Но то-ли руки кривые, то-ли там кривизна превышает мой уровень, но скачать репозиторий у меня не получается. А бродить по бесконечным каталогам через веб интерфейс - унылое занятие. Как вариант- гит устаревшей библиотеки, той что была в каталоге gcc. https://github.com/devkitPro/newlib/tree/master/newlib
  17. Какое странное совпадение, неделю назад я выловил последний баг в собственной библиотеке стандартных математических функций для одинарной точности. Но у меня была задача сделать минимальную ошибку вычислений. Значит зря старался? Кстати - дай плиз ссылку для особоленивых... А то у них там обе ноги сломать можно, пока найдёшь то что нужно. И ещё. Вычисление квадратного корня на arm чипе с аппаратной поддержкой 14тиков для одинарной точности, и кажется 36тиков для двойной(не уверен в точности). Это аппаратные инструкции для Cortex-M4-7, которых естественно нету в Cortex-Axx - потому как это отдельная ветка развития ядра, и у них вроде как война.
  18. Правильный ответ считается решением задачи.
  19. Как и предполагалось, для ответа простые вопросы нужно хорошо подумать. Повторюсь: Откуда мк начинает выполнять программный код сразу после аппаратного сброса. Общая функция этого кода, и что происходит дальше по алгоритму.
  20. Простые вопросы на самом деле бывают со сложными ответами. Особенно когда мозаика не складывается в общий узор. Я повторю свой вопрос - откуда мк читает программный код? Есть ли дополнительный код или инструкции которые должен выполнять мк в нативе, или программный код на мк в режиме эмуляции?
  21. IDA Pro

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