12.04.2018 ClonicusDebugBoard
Lipa (обсуждение | вклад) |
Lipa (обсуждение | вклад) (→Известные проблемы) |
||
(не показаны 52 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
<summary [ hidden ] > | <summary [ hidden ] > | ||
− | <center>[[File: | + | <center>[[File:ClonicusDebugBoard.jpg|400px]]</center> |
Отладочная плата для Clonicus | Отладочная плата для Clonicus | ||
</summary> | </summary> | ||
− | {{wl-publish: 2018-04-12 16: | + | |
+ | == Известные проблемы== | ||
+ | |||
+ | * Не был расчитан и замонтирован резистор R80. Необходимо впаять 0 Ом. Исправлено на обеих платах | ||
+ | * Не правильно впаяны разъемы jtag. Исправлено на одной платах. Исправить документацию | ||
+ | * SD карточка заблокирована PLD разъемами | ||
+ | * На bootstrap ноги etgPhy влияет zynq. Необходимо хотя бы изменить резисторы. По-хорошему как-то отсекать zynq от phy при bootstrap. | ||
+ | * ВАЖНО: на RJ45 разъеме ногу P10 необходимо вешать на воздух. Некоторые физики с open-drain требуют подтяжку на AVCC. Некоторые (как наш) с push-pull требуют вешание на воздух. Сейчас по схеме подключено к земле. Это точно неверно. Исправил на обоих отладочных платах Проверено только на основном экземпляре. После этого поднялась сеть. | ||
+ | * [Clonicus] Сместить немного sd карту вглубь платы, чтобы было более компактно | ||
+ | * На ответных платах должно быть свободное место под вставку sd карты. | ||
+ | * Разобраться, почему смещены мезанинные разъемы | ||
+ | * [Clonicus] Пздец. Банк 35 -HP поддерживает только 1,8В. Подано 3,3В. ПЛИС должна перейти в protection mode. Это может быть очень серьезной проблемой. Пока не ясно как с этим быть. | ||
+ | * На будущее - ошибки можно избежать, если попробовать собрать проект в вивадо с использованием ног из всех банков и прописыванием желаемых стандартов. Если напряжение стандарта недопустимое - можно получить ошибку при сборке проекта. | ||
+ | * Необходимо вернуть номиналы делителя резисторов и выпаять конденсатор с FB с dc/dc 5v и убедиться, что со штатными номиналами все запускается. | ||
+ | * [Clonicus] В схематике КЗ по питанию антенны. L5 выглядит лишней. '''Не впаиваем. Исправить в монтажной документации!!!!!!!!!!!!!''' | ||
+ | * [Clonicus] '''Важно! Выдерживать требования на ресет''' - задержка не менее 2 мкс на PS_POR_B (UG585 pg.163). На клоникус не выполнено (не мешает загрузке) | ||
+ | * [Clonicus] пожелания/замечания к дизайну PCB (от В. А. Филатова): | ||
+ | ** Сделать в дизайне платы технологические планки по периметру шириной 5-10 мм (как будто литник от детали). Иначе напаянные элементы не дают закрепить плату в тисках/направляющих. | ||
+ | ** Контактные площадки под микросхемами в корпусе QFN должны выходить за габариты микросхемы, чтобы припой мог вытекать из-под корпуса и напаиваться на вертикальные контакты на корпусе. | ||
+ | ** Попробовать (если места хватит) разнести детали поверхностного монтажа чуть подальше друг от друга, а то их может слепить вместе в печке. | ||
+ | * [Clonicus] На цифровую линию 3,3В пролазит фантомное питание через ПЛИС от интерфейсных ног номады. Необходимо поставить ключ на аналоговые 3,3В. | ||
+ | * [Clonicus] Возможно стоит поставить RC цепочки на открывание ключей питания для настройки последовательности включения линий. | ||
+ | * [Clonicus] Необходимо исправить пады на BGA8 чтобы площать площадок была одинакова. Желательно для QFN также. | ||
+ | * [Clonicus] Перепутаны RX TX в FTDI. '''ИСПРАВИТЬ!''' Есть вопросы к работе FTDI возможно нужен доп ресет | ||
+ | * [Clonicus] Нога PUDC_B определяет состояние мульти-ног до и во время конфигурации. '''Не оставлять в воздухе!''' | ||
+ | * [Clonicus] Был косяк в питании MGTAVTT LDO - мин. вх. напряжения 2,2В. Было 1,8В, исправил на 2,5В. | ||
+ | * [PCB] Замечание от резонита - отверстия для отделения платы от технологической заготовки должны быть не менее 0,5мм и между краями отверстий не менее 0,2мм | ||
+ | |||
+ | == Текущий вывод клоникуса == | ||
+ | {{Начало скрытого блока|Выравнивание_заголовка = left| Ссылка = left|Заголовок = ЛОГ ЗАГРУЗКИ:}} | ||
+ | <source lang="bash"> | ||
+ | U-Boot [SRNS] 2013.10-dirty (Apr 28 2018 - 15:46:20) | ||
+ | |||
+ | Memory: ECC disabled | ||
+ | DRAM: 128 MiB | ||
+ | MMC: zynq_sdhci: 0 | ||
+ | Using default environment | ||
+ | |||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Hit any key to stop autoboot: 0 | ||
+ | Device: zynq_sdhci | ||
+ | Manufacturer ID: 74 | ||
+ | OEM: 4a60 | ||
+ | Name: USD | ||
+ | Tran Speed: 50000000 | ||
+ | Rd Block Len: 512 | ||
+ | SD version 3.0 | ||
+ | High Capacity: Yes | ||
+ | Capacity: 7.5 GiB | ||
+ | Bus Width: 4-bit | ||
+ | reading uEnv.txt | ||
+ | ** Unable to read file uEnv.txt ** | ||
+ | Copying Linux from SD to RAM... | ||
+ | reading uImage | ||
+ | 3083120 bytes read in 311 ms (9.5 MiB/s) | ||
+ | reading devicetree.dtb | ||
+ | 9192 bytes read in 15 ms (597.7 KiB/s) | ||
+ | reading uramdisk.image.gz | ||
+ | 5622371 bytes read in 555 ms (9.7 MiB/s) | ||
+ | ## Booting kernel from Legacy Image at 03000000 ... | ||
+ | Image Name: Linux-3.12.0-xilinx | ||
+ | Image Type: ARM Linux Kernel Image (uncompressed) | ||
+ | Data Size: 3083056 Bytes = 2.9 MiB | ||
+ | Load Address: 00008000 | ||
+ | Entry Point: 00008000 | ||
+ | Verifying Checksum ... OK | ||
+ | ## Loading init Ramdisk from Legacy Image at 02000000 ... | ||
+ | Image Name: Initial Ram Disk | ||
+ | Image Type: ARM Linux RAMDisk Image (gzip compressed) | ||
+ | Data Size: 5622307 Bytes = 5.4 MiB | ||
+ | Load Address: 00000000 | ||
+ | Entry Point: 00000000 | ||
+ | Verifying Checksum ... OK | ||
+ | ## Flattened Device Tree blob at 02a00000 | ||
+ | Booting using the fdt blob at 0x2a00000 | ||
+ | Loading Kernel Image ... OK | ||
+ | Loading Ramdisk to 07605000, end 07b61a23 ... OK | ||
+ | Loading Device Tree to 075ff000, end 076043e7 ... OK | ||
+ | |||
+ | Starting kernel ... | ||
+ | |||
+ | Uncompressing Linux... done, booting the kernel. | ||
+ | Booting Linux on physical CPU 0x0 | ||
+ | Linux version 3.12.0-xilinx (sorenb@xsjandreislx) (gcc version 4.7.3 (Sourcery C | ||
+ | odeBench Lite 2013.05-40) ) #1 SMP PREEMPT Fri Jan 10 16:03:43 PST 2014 | ||
+ | CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d | ||
+ | CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache | ||
+ | Machine: Xilinx Zynq Platform, model: Xilinx Zynq | ||
+ | bootconsole [earlycon0] enabled | ||
+ | Memory policy: Data cache writealloc | ||
+ | PERCPU: Embedded 8 pages/cpu @c0814000 s8384 r8192 d16192 u32768 | ||
+ | Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 | ||
+ | Kernel command line: console=ttyPS0,115200 root=/dev/ram rw earlyprintk | ||
+ | PID hash table entries: 1024 (order: 0, 4096 bytes) | ||
+ | Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) | ||
+ | Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) | ||
+ | Memory: 248068K/262144K available (4201K kernel code, 249K rwdata, 1344K rodata, | ||
+ | 176K init, 182K bss, 14076K reserved, 0K highmem) | ||
+ | Virtual kernel memory layout: | ||
+ | vector : 0xffff0000 - 0xffff1000 ( 4 kB) | ||
+ | fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) | ||
+ | vmalloc : 0xd0800000 - 0xff000000 ( 744 MB) | ||
+ | lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) | ||
+ | pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) | ||
+ | modules : 0xbf000000 - 0xbfe00000 ( 14 MB) | ||
+ | .text : 0xc0008000 - 0xc0572820 (5547 kB) | ||
+ | .init : 0xc0573000 - 0xc059f0c0 ( 177 kB) | ||
+ | .data : 0xc05a0000 - 0xc05de5f0 ( 250 kB) | ||
+ | .bss : 0xc05de5fc - 0xc060c1e8 ( 183 kB) | ||
+ | Preemptible hierarchical RCU implementation. | ||
+ | Dump stacks of tasks blocking RCU-preempt GP. | ||
+ | RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. | ||
+ | NR_IRQS:16 nr_irqs:16 16 | ||
+ | ps7-slcr mapped to d0802000 | ||
+ | Zynq clock init | ||
+ | sched_clock: 16 bits at 54kHz, resolution 18432ns, wraps every 1207ms | ||
+ | ps7-ttc #0 at d0804000, irq=43 | ||
+ | Console: colour dummy device 80x30 | ||
+ | Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096) | ||
+ | pid_max: default: 32768 minimum: 301 | ||
+ | Mount-cache hash table entries: 512 | ||
+ | CPU: Testing write buffer coherency: ok | ||
+ | CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 | ||
+ | Setting up static identity map for 0xc03f95e0 - 0xc03f9638 | ||
+ | L310 cache controller enabled | ||
+ | l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x72360000, Cache size: 512 kB | ||
+ | CPU1: Booted secondary processor | ||
+ | CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 | ||
+ | Brought up 2 CPUs | ||
+ | SMP: Total of 2 processors activated. | ||
+ | CPU: All CPU(s) started in SVC mode. | ||
+ | devtmpfs: initialized | ||
+ | VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 | ||
+ | NET: Registered protocol family 16 | ||
+ | DMA: preallocated 256 KiB pool for atomic coherent allocations | ||
+ | zynq_gpio e000a000.ps7-gpio: gpio at 0xe000a000 mapped to 0xd0850000 | ||
+ | hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. | ||
+ | hw-breakpoint: maximum watchpoint size is 4 bytes. | ||
+ | zynq_ocm f800c000.ps7-ocmc: ZYNQ OCM pool: 256 KiB @ 0xd0880000 | ||
+ | bio: create slab <bio-0> at 0 | ||
+ | vgaarb: loaded | ||
+ | SCSI subsystem initialized | ||
+ | usbcore: registered new interface driver usbfs | ||
+ | usbcore: registered new interface driver hub | ||
+ | usbcore: registered new device driver usb | ||
+ | pps_core: LinuxPPS API ver. 1 registered | ||
+ | pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@l | ||
+ | inux.it> | ||
+ | PTP clock support registered | ||
+ | EDAC MC: Ver: 3.0.0 | ||
+ | Switched to clocksource ttc_clocksource | ||
+ | NET: Registered protocol family 2 | ||
+ | TCP established hash table entries: 2048 (order: 2, 16384 bytes) | ||
+ | TCP bind hash table entries: 2048 (order: 2, 16384 bytes) | ||
+ | TCP: Hash tables configured (established 2048 bind 2048) | ||
+ | TCP: reno registered | ||
+ | UDP hash table entries: 256 (order: 1, 8192 bytes) | ||
+ | UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) | ||
+ | NET: Registered protocol family 1 | ||
+ | RPC: Registered named UNIX socket transport module. | ||
+ | RPC: Registered udp transport module. | ||
+ | RPC: Registered tcp transport module. | ||
+ | RPC: Registered tcp NFSv4.1 backchannel transport module. | ||
+ | Trying to unpack rootfs image as initramfs... | ||
+ | ê | ||
+ | |||
+ | </source> | ||
+ | {{Конец скрытого блока}} | ||
+ | == Ethernet == | ||
+ | |||
+ | * Не использовать RGMII 3.3V!!! Xilinx не поддерживает, только 1.8/2.5 | ||
+ | |||
+ | В клоникусе сделано 1.8. В PLDA сделано 3.3 | ||
+ | |||
+ | * Необходимо помнить про задержку в линиях RGMII, возможны режимы: | ||
+ | * "rgmii" (RX and TX delays are added by the MAC when required) | ||
+ | * "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, the | ||
+ | MAC should not add the RX or TX delays in this case) | ||
+ | * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC | ||
+ | should not add an RX delay in this case) | ||
+ | * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC | ||
+ | should not add an TX delay in this case) | ||
+ | |||
+ | * Также подключаем в ядре поддержку физика и его дров. | ||
+ | |||
+ | <source lang="bash"> | ||
+ | $ petalinux-config -c kernel | ||
+ | </source> | ||
+ | |||
+ | <source lang="bash"> | ||
+ | Device Drivers-> | ||
+ | [*]Network device support -> | ||
+ | [*]Ethernet driver support -> | ||
+ | [*] Micrel devices | ||
+ | [*] PHY Device support and infastructure --> | ||
+ | [*] Drivers for Micrel PHYs | ||
+ | </source> | ||
+ | |||
+ | В Oryx_custom работает сеть только на 10Мбит/с. Предположительно из-за неправильных задержек в RGMII. | ||
+ | |||
+ | [https://ethernetfmc.com/rgmii-interface-timing-considerations/ описание задержек] | ||
+ | |||
+ | Запускается с помощью утилиты ethtool(необходимо подключать в rootfs). Команда включения 10Мбит/с: | ||
+ | <source lang="bash"> | ||
+ | ethtool -s eth0 speed 10 autoneg off | ||
+ | ifdown eth0 | ||
+ | ifup eth0 | ||
+ | </source> | ||
+ | |||
+ | Под вопросом решение о выводе eth напрямую в type-c. Не известно что будет, если подключить его как есть в usb3.0 | ||
+ | |||
+ | Включил в настройках ядра рандомизацию MAC-адреса | ||
+ | |||
+ | --------------------- | ||
+ | |||
+ | Eth_phy | ||
+ | |||
+ | Предполагалось разделить 2 физика по адресам настройками bootstrap резисторов. 0 адрес на клоникус и 12 адрес на отладочную плату. Реально получается 15 адрес на обоих. Предположительно из-за подтяжки ног плисиной. | ||
+ | |||
+ | Исправляется отключением pull-up в вивадо на ногах RX_D0; RX_D2; RX_CTRL | ||
+ | |||
+ | При попытке определить phy с помощью lwip необходимо включить отладочные сообщения или вручную добавить принтф в функцию detect_phy. | ||
+ | |||
+ | При отладке eth очень помогает утилита ethtool. Ставится в настройках rootfs | ||
+ | |||
+ | == Всякое == | ||
+ | |||
+ | Включить в rootfs "libstdc++" | ||
+ | |||
+ | Возможно нужно еще glibc | ||
+ | |||
+ | При использовании LVDS интерфейсов необходимо проверять совместимость напряжений и терминаторов [https://www.xilinx.com/support/answers/43989.html ссылка] | ||
+ | |||
+ | Для создания красивых надписей на плате на шелкографии: | ||
+ | |||
+ | * Пишем красивым текстом надпись | ||
+ | * Переводим маск-генератором слой текста на юзер слой в режиме extract as shape без заливки | ||
+ | * Открываем юзер слой и если нельзя включить заливку, то переводим объекты на плейншейп и обратно в дро-обджект. | ||
+ | * Включаем заливку | ||
+ | * Чистим плейншейп! и радуемся | ||
+ | |||
+ | [[Category:Clonicus]] | ||
+ | {{wl-publish: 2018-04-12 16:56:17 +0300 | Lipa }} |
Текущая версия на 16:29, 5 июля 2018
Содержание |
[править] Известные проблемы
- Не был расчитан и замонтирован резистор R80. Необходимо впаять 0 Ом. Исправлено на обеих платах
- Не правильно впаяны разъемы jtag. Исправлено на одной платах. Исправить документацию
- SD карточка заблокирована PLD разъемами
- На bootstrap ноги etgPhy влияет zynq. Необходимо хотя бы изменить резисторы. По-хорошему как-то отсекать zynq от phy при bootstrap.
- ВАЖНО: на RJ45 разъеме ногу P10 необходимо вешать на воздух. Некоторые физики с open-drain требуют подтяжку на AVCC. Некоторые (как наш) с push-pull требуют вешание на воздух. Сейчас по схеме подключено к земле. Это точно неверно. Исправил на обоих отладочных платах Проверено только на основном экземпляре. После этого поднялась сеть.
- [Clonicus] Сместить немного sd карту вглубь платы, чтобы было более компактно
- На ответных платах должно быть свободное место под вставку sd карты.
- Разобраться, почему смещены мезанинные разъемы
- [Clonicus] Пздец. Банк 35 -HP поддерживает только 1,8В. Подано 3,3В. ПЛИС должна перейти в protection mode. Это может быть очень серьезной проблемой. Пока не ясно как с этим быть.
- На будущее - ошибки можно избежать, если попробовать собрать проект в вивадо с использованием ног из всех банков и прописыванием желаемых стандартов. Если напряжение стандарта недопустимое - можно получить ошибку при сборке проекта.
- Необходимо вернуть номиналы делителя резисторов и выпаять конденсатор с FB с dc/dc 5v и убедиться, что со штатными номиналами все запускается.
- [Clonicus] В схематике КЗ по питанию антенны. L5 выглядит лишней. Не впаиваем. Исправить в монтажной документации!!!!!!!!!!!!!
- [Clonicus] Важно! Выдерживать требования на ресет - задержка не менее 2 мкс на PS_POR_B (UG585 pg.163). На клоникус не выполнено (не мешает загрузке)
- [Clonicus] пожелания/замечания к дизайну PCB (от В. А. Филатова):
- Сделать в дизайне платы технологические планки по периметру шириной 5-10 мм (как будто литник от детали). Иначе напаянные элементы не дают закрепить плату в тисках/направляющих.
- Контактные площадки под микросхемами в корпусе QFN должны выходить за габариты микросхемы, чтобы припой мог вытекать из-под корпуса и напаиваться на вертикальные контакты на корпусе.
- Попробовать (если места хватит) разнести детали поверхностного монтажа чуть подальше друг от друга, а то их может слепить вместе в печке.
- [Clonicus] На цифровую линию 3,3В пролазит фантомное питание через ПЛИС от интерфейсных ног номады. Необходимо поставить ключ на аналоговые 3,3В.
- [Clonicus] Возможно стоит поставить RC цепочки на открывание ключей питания для настройки последовательности включения линий.
- [Clonicus] Необходимо исправить пады на BGA8 чтобы площать площадок была одинакова. Желательно для QFN также.
- [Clonicus] Перепутаны RX TX в FTDI. ИСПРАВИТЬ! Есть вопросы к работе FTDI возможно нужен доп ресет
- [Clonicus] Нога PUDC_B определяет состояние мульти-ног до и во время конфигурации. Не оставлять в воздухе!
- [Clonicus] Был косяк в питании MGTAVTT LDO - мин. вх. напряжения 2,2В. Было 1,8В, исправил на 2,5В.
- [PCB] Замечание от резонита - отверстия для отделения платы от технологической заготовки должны быть не менее 0,5мм и между краями отверстий не менее 0,2мм
[править] Текущий вывод клоникуса
[править] Ethernet
- Не использовать RGMII 3.3V!!! Xilinx не поддерживает, только 1.8/2.5
В клоникусе сделано 1.8. В PLDA сделано 3.3
- Необходимо помнить про задержку в линиях RGMII, возможны режимы:
* "rgmii" (RX and TX delays are added by the MAC when required) * "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, the MAC should not add the RX or TX delays in this case) * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC should not add an RX delay in this case) * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC should not add an TX delay in this case)
- Также подключаем в ядре поддержку физика и его дров.
[*]Network device support ->
[*]Ethernet driver support ->
[*] Micrel devices
[*] PHY Device support and infastructure -->
[*] Drivers for Micrel PHYs
В Oryx_custom работает сеть только на 10Мбит/с. Предположительно из-за неправильных задержек в RGMII.
Запускается с помощью утилиты ethtool(необходимо подключать в rootfs). Команда включения 10Мбит/с:
ifdown eth0
ifup eth0
Под вопросом решение о выводе eth напрямую в type-c. Не известно что будет, если подключить его как есть в usb3.0
Включил в настройках ядра рандомизацию MAC-адреса
Eth_phy
Предполагалось разделить 2 физика по адресам настройками bootstrap резисторов. 0 адрес на клоникус и 12 адрес на отладочную плату. Реально получается 15 адрес на обоих. Предположительно из-за подтяжки ног плисиной.
Исправляется отключением pull-up в вивадо на ногах RX_D0; RX_D2; RX_CTRL
При попытке определить phy с помощью lwip необходимо включить отладочные сообщения или вручную добавить принтф в функцию detect_phy.
При отладке eth очень помогает утилита ethtool. Ставится в настройках rootfs
[править] Всякое
Включить в rootfs "libstdc++"
Возможно нужно еще glibc
При использовании LVDS интерфейсов необходимо проверять совместимость напряжений и терминаторов ссылка
Для создания красивых надписей на плате на шелкографии:
- Пишем красивым текстом надпись
- Переводим маск-генератором слой текста на юзер слой в режиме extract as shape без заливки
- Открываем юзер слой и если нельзя включить заливку, то переводим объекты на плейншейп и обратно в дро-обджект.
- Включаем заливку
- Чистим плейншейп! и радуемся
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.