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

Mar_K

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

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

  • Посещение

Репутация

0 Обычный

Информация о Mar_K

  • Звание
    Участник
    Участник
  1. STM32F7+FreeRTOS+LVGL+HAL

    Зравствуйте! Скрестил FreeRTOS, графическую либу LVGL и HAL (его использует пока только LVGL) на STM32f746 disco. Заметил следующее: 1) Если не вызывать диспетчер задач и поместить функцию lv_event_handler в бесконечный цикл, не включать DCache и ICache, то производительность одна. Если включить последние 2, то ожидаемо производительность возрастает в разы. 2) Если тотже цикл с вызвовом lv_event_handler поместить в таск и запустить диспетчер задач, то независимо от того включены ли кэши производительность низкая как при выключенных кэшах Пробовал различные комбинации размещения кучи LVGL и FreeRTOS : внутренняя память и внешняя. Драйвер дисплея (от LVGL) использует DMA с буфером во внешнем ОЗУ, работает на прерываниях. Дополнительно с помощью MPU отметил область буфера для DMA как некэшируемую. Один фиг! Еще пробовал разносить xPortSysTickHandler и Hal_IncTick на разные таймеры. Также пробовал lv_tick_inc помещать в отдельную задачу с задержкой. Вобщем, ничего не помогает -- тупо тормозит причем на простом GUI. В чем может быть причина? Правильно ли я понимаю, что причина может быть в том, что при переключении задач FreeRTOS инвалидирует кэш?
  2. Возможно. Напремер, легаси контроллер диска. Набор ATA регистров - 8 байт, альтернативный статус 1 - 4 байт.
  3. Главное для чего мне нужны исходники -- поправить минимальный размер BAR. Если существует бесплатная корка у которой можно выставить размер BAR до 1 байта, то пускай она будет без исходников -- это не страшно.
  4. Может быть... А где его исходники взять?
  5. Вы имеете ввиду Endpoint for PCI Express 3.7? у него исходников вроде как нет. Это нужно для того чтобы полностью прикинуться legacy девайсом, у которого размеры некоторых BAR равены 1 байту.
  6. Добрый день! Стоит задача заменить HW ядро на SW в уже готовом проекте на spartan 6. Пытаюсь найти opensource ядро pci express 1 lane аналог Integrated Block у Xilinx (то есть только до transaction layer без блока dma, но с поддержкой 6 BAR-ов, и legacy msi). Есть ли таковые и откуда можно скачать?
  7. Камень spartan6 150T. Кит от avnet. Ситуация такова, что набор дисков от Сигейта дружат с моим контроллером, а также некий SSD (производителя не помню, брал у коллеги потестить). Но диск от Вестерна отказывается дружить (WD1200BEVT). Разумеется, он работает с материнкой. Смотрел чипскопом. Не приходит COMWAKE от диска, вместо него приходит COMINIT. Предположил, что диск не видит OOB посылки от моего контроллера. Погуглил и нашел case на сайте xilinx, там человеку помогло изменение параметра differential voltage swing, попробовал поменять в своем контроллере (стояло дефолтное значение 000). Выставил все единицы. Теперь тренировка проходит на 1-й скорости, но на второй -- не алё. Однако, проходит не больше 50 мс и натренированный на 1-й диск почему-то снова высылает COMINIT, что, естественно, сбрасывает соединение и тренировка начинается снова. Какие только параметры я не крутил у трансивера (из доступных в визарде)-- бесполезно. Вобщем, как быть?
  8. 5) Все 8 бит нулями или только бит nIEN ? Нужно только его.
  9. По поводу 2 -- вы себя накрутили. У меня ридер фифиошки как раз этими флагами управляется, а синхронизируется только сигнал разрешения работы этого ридера. Я еще не настолько псих чтобы дизайнить как вы написали, и не вижу в теме моего поста с описанием того, что у меня именно так сделано.
  10. Все именно так. Дело не в констреинтах. Вобщем я был наивен, когда полагал что без синхронизации пока для небольшого теста можно обойтись, хотя до этого всегда делал сразу по нормальному, а потом и вовсе забыл про синхронизацию сигнала разрешения чтения FIFO специальным блоком в 200 МГц домене. Как результат 1.5 недели наблюдения эпических глюков и бессонных ночей с обтеканием потом, который вытирался полотенцем из UCF. Не забивайте на синхронизацию, люди.
  11. Нет не использую. Вчера до поздней ночи игрался с констрейнтами и пришел к выводу, что я просто не понимаю как их описать правильно. Если эти сигналы не появляются в отчете об ошибках, то схема работает на 200 МГц стабильно, но при этом в других местах в отчете появляются ошибки, там где они раньше не вылезали. В проекте до недавнего времени было 2 тактовых домена (62.5 и 75 МГц) и все разводилось и роботало четко. Но после добавления третьего (200 МГц) начались такие вот странности. Причем схема, которая тактируется от 200 МГц отдельно укладывается в плис без ошибок.
  12. Понизил частоту с 200 до 160 МГц. Работает стабильно. А на 200 нет. Может джитер адский? К сожалению нет возможности посмотреть так как нет хорошего осцила в наличии. У меня кит от Avnet.
  13. Понял. Значит можно просто забить на это, а проблема остается в неправильной обработке.
  14. Тоже больше склоняюсь к этому варианту. Делал diff с рабочей версией по svn, но пока принципиальной разницы не нашел..
  15. Клоки генерятся разными PLL и подключены через bufg естественно. Про 5 наносекунд, они не были никак вычислены, а просто взяты от балды. Род глюков таков, что если всего в фифо записывается 64 слова, то прочитается, например, 63.
×
×
  • Создать...