Jump to content

    

kirra.cat

Участник
  • Content Count

    17
  • Joined

  • Last visited

Community Reputation

0 Обычный

About kirra.cat

  • Rank
    Участник
  • Birthday 03/15/1992

Информация

  • Город
    Array

Recent Profile Visitors

485 profile views
  1. Добрый день. Я отлаживаю железку, в которой USB Hub USB7216, структура железки выглядит примерно так: там есть одноплатный ПК формата MXM3 (p/n EDM1-IMX6D-10-R10-MSD-9377) и в силу того, что у него один USB, к нему подключен USB-Hub на 6 портов USB7216. К мосту подключены уже USB-UART, микроконтроллер (его нет на картинке), и несколько соединителей USB. В качестве Reference Design использовать схему отладочной платы EVB-USB7216 (схема в pdf файле, во вложении). Я предполагал, что выбрав одну из двух предустановленных опций USB Hub, мне не надо будет его отдельно конфигурировать, и он должен сразу заработать. Сейчас, установлены перемычки J18,J19,J21,J25,J26,J27,J31-J37,J39,J71,J72 (выделены на схеме желтым). Но на практике я получил такое поведение: иногда он определяется как один хаб, иногда как два хаба, и чаще всего не определяется совсем. Во всех случаях, подключенные к хабу USB устройства не определяется операционной системой. Это вывод с Linux, если мост определяется вывод, когда он не определяется и когда определяется лишь его "часть" я не могу сейчас поймать что-то, как поймаю, дополню пост. Когда определяется лишь "часть" устройства, он отображается примерно так Bus 001 Device 083: ID 0424:4216 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Кто сталкивался с этим семейством USB Hub от MicroChip? В чём может быть причина? Буду рад любой помощи, спасибо. hw_platform_usb_hub1.pdf
  2. Спасибо за ответы. Я когда рисовал эту схему, следовал следующими соображениями: т.к. каждый SPI уходит через соединитель дальше в прибор, то линия должна быть помехоустойчивой. И на мой взгляд, 8 проводников подключенных к одной точке менее помехозащищены, нежели линия точка-точка. Может у меня просто такой стререотип выработался. Конечно, можно мультиплексировать только FSS, а остальные сигналы оставить просто соединёнными между собой. Но в таком случае мне потребуется буфер перед каждым разъемом, чтобы не оставлять порты микроконтроллера подключенные напрямую в недра прибора. А тут подумал, почему бы не поставить микросхемы 138 и 151 (ток они могут дать около 10 мА), и не ставить буфер перед разъемом. Но если это решение рабочее, тогда буду думать, как его лучше прилепить.
  3. Добрый день. Сейчас думаю над устройством, где есть микроконтроллер, к которому подключены 8-SLAVE SPI. Т.к. мне все это SLAVE одновременно не нужны, да и в примененом мной микроконтроллере нет столько SPI, хочу мультиплексировать линии. Типа вот такой вот штуки должно получится Решил нагородить из стандартной логики SN74HC138 и SN74HC151 некий мультиплексор/демультиплексор, который выглядит примерно так (если плохо видно, есть во вложении схема Test.pdf): Предполагаю, что выставив 3-битный адрес устройства (линии SELA, SELB, SELC) в нужное число от 0 до 7, я выберу необходимый мне SLAVE. У меня собственно вопросы такие: 1. Нужны ли буферы (типа SN74HC244) после мультиплексора/демультиплексора? 2. Какие могут быть неприятности в таком решении? 3. Не считается такой костыль из стандартной логики чем-то жутко плохим? 4. Вообще, рабочее это решение/схема? :) -- С уважением, Kirra
  4. Отлично. И у меня ещё небольшой вопрос, но уже по поводу соединителей. С экранчиков выходят шлейфы на гибко-жеских платах. Рекомендованный Winstar разъем я не нашел. По какому принципу эти разъемы выбираются? Просто использовал соединители от Hirose Electric серии FH34SRJ, которые обзываются FPC/FFC Connectors, и у них в этой же серии есть подходящие, на мой взгляд, соединители FH34SRJ-10S-0.5SH(99), FH34SRJ-40S-0.5SH(99) и FH34SRJ-50S-0.5SH(99) Должны ли подойти эти соединители к экранам от Winstar? P.S. Прошу прощения за столь глупые вопросы про разъемы, просто это моя больная тема, в каждой разработке я обязательно ошибусь с разъемом :) могу безошибочно поместить на плату 700-ногий BGA, но с каким-нибудь соединителем обязательно будет что-то не так :) ed_FH34_20191223.pdf
  5. Я как раз хотел приложение на Qt писать. А в качестве ОС использовать Ubuntu. А чём может быть сложность с тачем в Qt? Это весьма крутой проект. Верно ли я понял, что допустим, я выберу экран от Winstar WF50BTIAGDNGC (5 дюймов) и WF70GTIAGDNGC (7 дюймов), они используют для обработки сенсора чип FT5426 (который поддерживается в проекте от Watterrott) и сделаю плату на TFP401A, то по сути, подключив к нему HDMI и USB получу сенсорный монитор? P.S. Просто мои скиллы позволют разработать без особых проблем сложную плату, и осуществить монтаж, типа 0402 и пр., поэтому больше склоняюсь к аппаратному решению задачи :) P.P.S. Кстати, этих вилок PLLD 1.27mm у меня предостаточно валяется :)
  6. Изначально я хотел подключить экранчики WF50BTIAGDNGC (5 дюймов) и WF70GTIAGDNGC (7 дюймов). В итоге, как я понял, надо настроить драйвер для сенсора (используетяс чип FT5426), и контроллеров экрана HX8264+HX8664 и пересобрать его вместе с ядром. Конечно то ещё развлечение. Но мне важно, чтобы этот одноплатник с экраном были минимальной толщины (насколько это возможно), поэтому я искал варианты без всяких HDMI. Как понимаю, на этом одноплатнике есть ещё DSI (и он на том же разъёме, что и камера). С ним такое же приключение предстоит? Просто мне всё равно предстоит развлечение примерно следующего характера: сделать плату, на одной стороне которой MXM-3 соединитель для платы с i.MX6, а на другой - соединители для экрана с сенсорной панелью. Ну и ещё там всякой всячины. Вариант, без развлечений с пересборкой, есть лишь с экраном по HDMI и сенсором по USB? В силу этих размышлений, может есть смысл прикрутить микросхему преобразователя HDMI в 24-битный RGB, типа TFP401A от TI? Но тем не менее вопрос с сенсором остается открытый..
  7. Доброго всем вечера. Есть одноплатный ПК от Wandboard на i.MX6 Dual. И я хочу прикрутить к нему сенсорный экранчик. Посмотрев на схему, для экрана у этого ПК есть некоторая 24-разрядная шина (на 21-й странице схемы). Мне не понятны две вещи: 1. Сенсорная панель цепляется, как понимаю, отдельно, по SPI/I2C и пр. Куда её цеплять к этому одноплатному ПК? 2. Если выбрать какой-нибудь экран, то вероятность его поднятия зависит от того, есть ли для этого экрана (точнее для контроллера в этом экране) драйвер в Linux. Если есть драйвер для контроллера экрана, то этого достаточно, чтобы он заработал? P.S. Если у вас есть опыт применения экрана, то можете что-нибудь посоветовать, с емкостным сенсором, диагональною 5-7 дюймов, и примерным разрешением 800х480? Желательно, чтобы его можно было без проблем купить в России, до 8000 руб. P.P.S. Прошу прощения, что задаю глупые вопросы из разряда "возьми, да загугли", просто уже запутался что-то.. До этого одноплатный ПК подключал только по HDMI к монитору.. wandboard-user-guide-20130208.pdf
  8. Либо я дурной, либо вправду что-то не так. Создал пустой проект, добавил main.c Пробую мигать светодиодом, но при сборке ругается, что не определен ps7_init(). Но он находится в описании аппаратной части, и пути в проекте у меня до него настроены Делал для этого C/C++ Build -> Settings -> Directories и туда добавлены пути как для текущего проекта "${workspace_loc:/${ProjName}}", так и для описания платформы "${workspace_loc:/zynq_test0_wrapper_hw_platform_0}" Собственно в саму функцию по клавише F3 могу зайти, но всё равно ругается, что она неопределенна Пробовал создавать проект с HelloWorld, там тоже самое. В комментариях к init_platform() написано, что если будешь это дело вызывать вне SDK, то раскомментируй функции ps7_init() и psu_init(), а также раскомментируй подключени хедеров ps7_init.h и psu_init.h Но это ровным счётом приводит к такому же результату, ps7_init() не определен. Без вызова функции ps7_init() всё собирается без ошибок, но отладчик не заходит в программу, всегда куда-нибудь улетает Как понимаю, тут есть некая тонкость, о которой я не догадываюсь. Что я делаю не так? Сейчас мучаюсь с проектом zynq_test0_hello, проект на Яндекс.Диске
  9. Вообщем, что я сделал 1. Добавил NAND-Flash в систему с Zynq 2. Собрал (запустил Synthesis и Implementation) 3. Далее Generate Bitstream 4. Потом File->Export-> Export Hardware (включая созданный Bitstream) 5. Далее File->Launch SDK 6. В этом Xilinx SDK делаю Refresh проекта, который описывает аппаратную часть (в приложенном мною примере это zynq_test0_wrapper_hw_platform_0). 7. Далее создаю новый проект (назвал его zynq_test0_run_on_nand), выбирая шаблон Zynq FSBL (который, согласно описанию, и загружает образ с NAND флешки, и закидывает его на выполнение в DDR) 8. Собираю проект, прошиваю FPGA. Потом на проекте правой кнопкой – и выбираю Debug As->Launch On Hardware (system debugger) 9. Запускаю программу на выполнение, и потом останавливаю. Программа останавливается в функции FsblHookFallback void FsblHookFallback(void) { /* * User logic to be added here. * Errors to be stored in the status variable and returned */ fsbl_printf(DEBUG_INFO,"In FsblHookFallback function \r\n"); while(1); } Это нормально? Просто по крайней мере отладчик стабильно попадает в эту функцию. Верно ли я понял, что это аналог бесконечного цикла в микроконтроллерах? Обновленный проект закинул снова на Яндекс.Диск P.S. Нормально, что при синтезе и прочих операциях, Vivado спрашивает сколько ядер можно использовать, и в итоге использует лишь одно? Попробовал зашить собранную прошивку в NAND Flash (используя меню Xilinx->Program Flash) но в итоге получаю cmd /C program_flash -f \ G:\Vivado\zynq_test0\zynq_test0.sdk\zynq_test0_run_on_nand\bootimage\BOOT.bin -offset 0 \ -flash_type nand_8 -fsbl \ G:\Vivado\zynq_test0\zynq_test0.sdk\zynq_test0_run_on_nand\Debug\zynq_test0_run_on_nand.elf \ -cable type xilinx_tcf url TCP:127.0.0.1:3121 ****** Xilinx Program Flash ****** Program Flash v2018.2 (64-bit) **** SW Build 2258646 on Thu Jun 14 20:03:12 MDT 2018 ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. Connected to hw_server @ TCP:127.0.0.1:3121 Available targets and devices: Target 0 : jsn-JTAG-HS2-210241988047 Device 0: jsn-JTAG-HS2-210241988047-4ba00477-0 Retrieving Flash info... Initialization done, programming the memory ===== mrd->addr=0xF800025C, data=0x00000005 ===== BOOT_MODE REG = 0x00000005 WARNING: [Xicom 50-100] The current boot mode is SD. If flash programming fails, configure device for JTAG boot mode and try again. Downloading FSBL... Running FSBL... Finished running FSBL. ===== mrd->addr=0xF8000110, data=0x000FA220 ===== READ: ARM_PLL_CFG (0xF8000110) = 0x000FA220 ===== mrd->addr=0xF8000100, data=0x00028008 ===== READ: ARM_PLL_CTRL (0xF8000100) = 0x00028008 ===== mrd->addr=0xF8000120, data=0x1F000200 ===== READ: ARM_CLK_CTRL (0xF8000120) = 0x1F000200 ===== mrd->addr=0xF8000118, data=0x001452C0 ===== READ: IO_PLL_CFG (0xF8000118) = 0x001452C0 ===== mrd->addr=0xF8000108, data=0x0001E008 ===== READ: IO_PLL_CTRL (0xF8000108) = 0x0001E008 Info: Remapping 256KB of on-chip-memory RAM memory to 0xFFFC0000. ===== mrd->addr=0xF8000008, data=0x00000000 ===== ===== mwr->addr=0xF8000008, data=0x0000DF0D ===== MASKWRITE: addr=0xF8000008, mask=0x0000FFFF, newData=0x0000DF0D ===== mwr->addr=0xF8000910, data=0x000001FF ===== ===== mrd->addr=0xF8000004, data=0x00000000 ===== ===== mwr->addr=0xF8000004, data=0x0000767B ===== MASKWRITE: addr=0xF8000004, mask=0x0000FFFF, newData=0x0000767B Problem in running uboot Flash programming initialization failed. ERROR: Flash Operation Failed Попробовал править тайминги NAND флешки, тоже не привели в её прошивке. На флешке маркировка S34ML01G100TF100, тайминги правил в соотвествии с Datasheet
  10. Камень, как понимаю виден. Я сделал такую архитектуру, в которой добавил на шину AXI двухбитный GPIO (подсоединеный к светодиодам), и пробовал его переключать. Как понимаю, процессорная часть видна в Harware Manager Только у меня не получилось заходить по человечески в отладку (вылазиет периодически Error while launching program: Memory write error at 0x100000. APB AP transaction error, DAP status f0000021), который, как я понял, связан с тем, что мой чип Zynq 7010 сконфигурирован как-то не так, и чтобы JTAG-отладчиком его можно было отлаживать, надо перепаять какие-то резисторы, тем самым разрешив отладку по JTAG. Возможно, я что-то путаю. Но тем не менее, как я понял из Ch.6 Boot and Configuration, можно сделать так, чтобы моя программа жила в NAND флешке, даже если она Baremetal. Только мне надо использовать некий FSBL. Я всё верно понял? Только пока не понял, что надо доработать в плате, чтобы была возможность загружать в NAND флешку программу, и отлаживать её по JTAG. Если подскажете, как мне это сделать, буду премного благодарен :) Полный проект для Vivado 2018.2 выложил на Яндекс.Диск P.S. Прощу прощения за такие глупые вопросы, но с Xilinx имею дело не более недели :)
  11. да, имеется. Только она от похожей платы, которая отличается лишь тем, что два чипа DDR3 заменены на один. А в остальном всё тоже самое P.S. Сейчас еще у меня возникла идея отпаять чип NAND флешки W29N01HVSINA, и заменить его QSPI чипом S25FL256SAGNFV001, правда незнаю, наколько хорошая идея. По идее, если QSPI также подключается на ного MIO, то возможно и получиться припаять на контактные площадки от NAND флешки. ebit.pdf
  12. Приветствую. Хочу построить систему, которая оцифровывает данные с помощью АЦП, выполняет некую обработку сигнала и затем отдает данные в ПК через Ethernet. Предполагается, что FPGA обрабатывает данные с АЦП, предварительно обрабатывает их, и отдает процессору. Процессор доделывает что надо и отправляет по Ethernet в ПК для отображения. И хотелось бы, чтобы и процессор и FPGA были в одной микросхеме. Вообщем, выбор мой пока пал на SoC Zynq 7010 :) я заказал у китайцев «отладочную плату», которая оказалась платой управления от какого-то майнера, ну и ладно, сам чип там Zynq 7010, что собственно хорошо. Начал с ним разбираться, часть с FPGA мне ясна. Но не ясна часть с процессорной системой и с конфигурацией. Точнее мне не ясно, где храниться процессорная программа и прошивка для FPGA. Я хотел уточнить какие из возможных сценариев конфигурации этого дела возможны, при учете что я планирую кодить это дело без всяких операционных систем, прям Baremetal: Вариант 1. В системе есть некая SPI (или QSPI) флешка, на которую я закидываю прошивку FPGA, и программы для процессоров. При подаче питания SoC вычитывает содержимое, конфигурирует FPGA и закидывает программу в накристальную память для процессоров, и всё начинает работать. Правда, насколько я понимаю, я должен с программами для процессоров уложиться в объем накристальной памяти, которой у Zynq 7010 256 кБ. Вариант 2. Такой же, как и вариант 1, только программа для процессора должна оказаться в DDR памяти, и оттуда выполняться. Как понимаю, у Xilinx есть некий загрузчик FSBL, который загружается в накристальную память, инициализирует DDR и перемещает туда пользовательское приложение (которое не понятно, где находится, в той же флешке?). В самой плате от китайцев есть только NAND флешка и SD карта, но эти варианты загрузки не подходят.. Что-то поиск меня всегда приводил к мануалам, в которых запускают Linux, а как делать для Baremetal я не находил. В конечном счёт ожидаю из этого получить вот это P.S. Если не сложно, ткните в документацию, возможно я неправильно запросы гуглу даю..
  13. Прошу прощения за столь долгий ответ. Как я понял из вышесказанного, то можно Root Complex создать в процессоре, и тогда системы будет выглять так, как на картинке? Этот Root Complex будет в квадратике Interface Processor. У меня тогда есть вопрос: какой процессор (желательно ARM) подойдет на роль Root Complex? Он должен соединяться с чипом коммутатора тоже через PCI Express? P.S. Можете посоветовать что лучше использовать? Мне желательно такое, для чего есть примеры создания этого Root Complex и в идеале отладочная плата.. P.P.S. Root Complex вынести за FPGA хотим чтобы разгрузить логику, и собственно команду. А то замучаются бедные :) -- С наилучшими пожеланиями, kirra
  14. Добрый день. Проектирую свое первое устроство с использованием PCI Express, и появился такой вот вопрос. Для начала хотел несколько описать, что из себя представляет разрабатываемая мной система. Система представлет из себя совокупность некой SoC, и 4 конечных точек, соединеных коммутатором PCI Express (как на приложенной картинке). Каждый квадратик на картинке - это отдельная плата. Т.к. этот SoC (реализованный на жирной ПЛИС) чёт какой-то сложный получается, поэтому было принято решение PCI Express Root Complex из него выкинуть. В итоге, по задумке, поставить микросхему коммутатора PCI Express со встроенным Root Complex, либо если такой не бывает, то отдельную микросхему Root Complex и отдельную микросхему коммутатора. Собственно вопрос: бывает ли микросхемы коммутаторов со встроенным Root Complex? Если есть, то можете подсказать как они называются. Даже не обязательно, чтобы Root Complex и коммутатор были в одной микросхеме, вполне устраивает вариант, когда коммутатор и Root Complex в разных микросхемах. P.S. Просто я таким микросхем (коммутаторов со встроенным Root Complex) не смог найти, скорее всего не правильно давал гуглу запрос на поиск -- С наилучшими пожеланиями, kirra
  15. Спасибо вам за ответ. Итак, попробую всё по порядку рассказать. Есть некоторое, весьма хитрое, устройство, состоящее, скажем из 16 блоков. Один из эти блоков - Батя, он всеми управляет. Управляет он, формируя различные импульсы, по которым остальные реагируют, и ещё он передает всем и принимает от всех данные. Всё бы ничего, но есть в этой системе два поганца, Поганец0 и Поганец1. Они поганцы в том, что передают Бате поток данных в 8 ГБит/с, поэтому Батя большую часть времени принимает и обрабатывает от них данные. Остальные же, вполне адекватные, и им требуется лишь 10-50 байт данных. Примерно столько же от них принимает Батя. Сценарий работы это цирка такой: Батя посылает импульсы каждые 2 мкс (это самый быстрый режим работы, в основном это каждые 500 мкс). Перед каждым импульсом, Бате надо успеть передать каждому из 13 адекватных блоков порцию данных (10-50 байт), чтобы они успели их обработать, и запустить некий свой процесс строго по импульсу от Бати. После того, как процесс запущен, адекватным блокам ещё надо до следующего импульса от Бати передать ему некоторое количество служебной информации (примерно те же 10-50 байт). Всё садо-мазо с ns точностью передается в виде импульсов от Бати (потому адекватным модулям нужно лишь быть готовым запустить свои дела до прихода импульса). И так это продолжает работать, пока не сгорит. В конечном итоге мы имеем систему, в которой необходимо гарантированно передать 13 абонентам данные для запуска процесса по следующему импульсу. Всё жесткое реальное время реализуется посредством формирования синхроимпульсов. От канала передачи данных (PCI Express) требуется лишь гарантированно передавать данные между этими синхроимпульсами, которые следуют не чаще, чем раз в 2 мкс. Канал приема данных активен практически всегда. Концепция PCI Express должна хорошо вписаться в эту систему, предоставив 1 линию передачи (lane) для абонентов с небольшим количеством данных, и несколько линий передачи (2-4) для приёма потока данных. К тому же, PCI Express хоть и называется шина, но на физическом уровне это топология “Звезда” с соединениями точка-точка между абонентами. К тому же поддерживается Full-Duplex, поэтому можно выиграть время, принимаю и передавая данные одновременно. В итоге получаем, что необходимо 21 линия передачи, что не так и много. Надеюсь, что для такой системы Root Complex существует. С наилучшими пожеланиями, kirra