-
Posts
346 -
Joined
-
Last visited
-
FMC имеет раздельные настройки для записи и чтения, а вот конкретно st7799 имеет время чтения 350nc - в 23 раза больше записи. И кажется не поддерживает автоадрес. То-есть читать рам память - это к огромным тормозам.
-
У этой компании есть более современный чип CH347. Стоит дороговато, но зато очень быстрый. Программатор spi / i2c / jtag на нём тоже можно сделать. Например 25q64 зашивается за 36 секунд.
-
Эту функцию отладчика ещё не изобрели, хотя проблеме более 20 лет. И не только в IAR, но и во всех остальных IDE. Есть костыльные попытки с запретом прерываний, когда это выполняет скрипт в реальном времени. Но стабильность результата ниже уровня плинтуса. Это даже не проблема свистка, и не ide как таковой - проблема в физической реализации алгоритма на кристалле чипа. Там всё застыло на 30 лет с момента принятия промышленного стандарта, и теперь всем страшно его трогать - потому что сломается вообще все и сразу.
-
Cortex-M3, CLANG и защита стека
AVI-crak replied to Михась's topic in GNU/OpenSource средства разработки
От бесконечной рекурсии эта защита не работает. -
Трассировщик для Cortex M ядер
AVI-crak replied to IgorAVR2's topic in ARM, 32bit
Не ожидал увидеть в таком виде, походу не то искал. Я-то думал там будет натурально последние 16 команд на асме, а там вообще всё. Прикольно, одобряем. -
Трассировщик для Cortex M ядер
AVI-crak replied to IgorAVR2's topic in ARM, 32bit
Ну хорошо, а почему на ютюбе ноль роликов с демонстрацией сего действа. Насколько я понимаю - это не сложно, и даже не требуется реальная программная ошибка, достаточно нажать "стоп". -
Трассировщик для Cortex M ядер
AVI-crak replied to IgorAVR2's topic in ARM, 32bit
Даже арбузы перед покупкой проверяют десятками способов. А тут ноль роликов на ютюбе с размоткой потока команд в обратную строну. Я реально хочу это увидеть, и не верю что на это способна отладка без полноценной трассировки. -
Трассировщик для Cortex M ядер
AVI-crak replied to IgorAVR2's topic in ARM, 32bit
Итак, я успел просмотреть десяток роликов про трассировку с участием реального МК. Рекламных и обучающих роликов ещё больше, но если там нет доски - то ролик пропускается. Дык вот, каждый ролик демонстрирует как могло-бы работать, но не работает, потому что у нас нет отладчика за тысячу баксов. А те возможности что демонстрируется - доступны для меня на древней версии embitz, и относительно свежем stlink3. Чего я хочу увидеть - отмотку буфера операций ядра назад от точки сбоя. -
Трассировщик для Cortex M ядер
AVI-crak replied to IgorAVR2's topic in ARM, 32bit
Неее, чтобы меня заинтересовать - нужен мешок плюшек. Или видеопрезентация реального захвата экрана компа во время трассировки МК, с простым и практичным закадровым голосом. Можно нарезку сделать, главное чтобы смысл не улетучивался. Вот с этим ETB в главной роли. -
Трассировщик для Cortex M ядер
AVI-crak replied to IgorAVR2's topic in ARM, 32bit
То о чём говорится - требует jtag отладчика с реальными аппаратными линиями трассировки, через swd трассировка в реальном времени невозможна. GTAG + 16линий трассы + аппаратный полный usb3.1 + быстрая память на пару гиг ->>> имеет ценник выше 1к зелени. Предназначен для очень жирных фпга и мк. Программное обеспечение тоже имеет не гуманный ценник, и не продаётся в нашей стране. Кроме того, железяка в любой момент может превратиться в кирпич, если заокеанскому партнёру чего-то не понравится. Офлайн железка работать не умеет, и кстати не продаётся у нас. Свистоперделки с одной линией трассировки, не способны на трассировку в реальном времени даже на заниженной до 1МГц тактовой ядра мк. Оригинальный stlink3 - тоже не может, я проверял. Я не знаю других вариантов, но с удовольствием послушал-бы о них. -
Верно, кто раньше встал - того и тапки. Но есть тонкости, арбитраж шины происходит по приоритетам. Ядро может "выключить" поток дма, а дма уже нет. Более того, дма память-память в случае выигрыша - будет молотить до конца, остальные каналы будут в ожидании. Если в этот момент ядро обратится к памяти - сработает очередь. Просто для возникновения подобных условий нужно ооочень сильно постараться, ну прям совсем сильно. В простом коде подобные события огромная редкость, а если использовать хал - исчезающая редкость. Однако полностью исключать данный вариант сбоя - глупо. Тем-более что цена не высока, всего одна запись _VAL2FLD(DMA_SxCR_PL, 1) Тогда просветите плиз значение поля приоритета для дма. Чего это такое и зачем оно там вообще.
-
Могут, в случае занятости системной шины данных на то самое "таки огромное время". Хотя точнее будет не параллельно, а одновременно, в момент освобождения системной шины данных, а там как повезёт.
-
Линейные измерения точным инструментом, чем больше стадий перемаркиров - тем тоньше корпус. А вообще это была хохма, ну кроме цветной революции. ST сдвигает заказы на 2024 год всем подряд, ну и старые висят уже два года. Чем она кормится, мне лично не очень понятно.
-
Пока в проекте используется всего два дма - проблем особых нету. Но если задействовать три и более - начинаются проблемы. Даже при использовании программной функции копирования могут быть проблемы, потому как ядро имеет приоритет выше дма. Приоритеты для дма работают весьма прикольно, они создают очередь для триггеров обмена, в данном случае от spi. На режим память-память - приоритеты ставить бесполезно. Если в проекте используется несколько периферийных узлов с одним регистром на чтение/запись - не обязательно строить лесенку из приоритетов, достаточно обеспечить разницу в пределах каждого узла. Чего произойдет при преждевременной записи раньше чтения данных от spi - потеря данных, и взведённый флаг ошибки.
-
Отрезал нули - получилось красиво и компактно. Но изначальный полный длинный вариант нужно где-то сохранить, и использовать для копирования. Первоначально примеры были только на передачу, а сейчас ещё и чтение. Нулевой и пятый поток обращаются на один адрес периферии, в этом случае нужно использовать уровни (разные!!!) приоритета для дма. _VAL2FLD(DMA_SxCR_PL, 1)| /// priority level 0-3 Управление ногой перенести в прерывание дма на чтение, оно срабатывает самым последним. Если хочется чтоб всё было красиво - реализуй все прерывания ошибок: от дма, от spi. В нормальном режиме они даже срабатывать не будут, но явно спасут от зависаний. Есно нужна функция разгребания всех возможных ошибок, отдельная функция!!!!. Отладка подобных функций достаточно прикольное занятие, я использовал для этих целей напильник. Принудительно вносил помехи в линии передачи данных.