Известные проблемы
- Не был расчитан и замонтирован резистор 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В.
Текущий вывод клоникуса
ЛОГ ЗАГРУЗКИ:
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...
ê
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)
- Также подключаем в ядре поддержку физика и его дров.
$ petalinux-config -c kernel
Device Drivers->
[*]Network device support ->
[*]Ethernet driver support ->
[*] Micrel devices
[*] PHY Device support and infastructure -->
[*] Drivers for Micrel PHYs
В Oryx_custom работает сеть только на 10Мбит/с. Предположительно из-за неправильных задержек в RGMII.
описание задержек
Запускается с помощью утилиты ethtool(необходимо подключать в rootfs). Команда включения 10Мбит/с:
ethtool -s eth0 speed 10 autoneg off
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
Для создания красивых надписей на плате на шелкографии:
- Пишем красивым текстом надпись
- Переводим маск-генератором слой текста на юзер слой в режиме extract as shape без заливки
- Открываем юзер слой и если нельзя включить заливку, то переводим объекты на плейншейп и обратно в дро-обджект.
- Включаем заливку и радуемся
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.