« PythonのXMLRPCが遅くなった原因 | トップページ | ET/IoT2017に出展します! »

2017.11.11

ZYNQ搭載ADC/DAC基板が届いた

本日、ZYNQ(可能な)ADC/DAC基板と、タカチのカスタム加工ケースが届きました。

Cosmozmini

さっそく組み立ててみると、あれ!?、穴がひっかかって入らない、という事態になりました。

おそらくSMAの同軸コネクタや、USBなどのコネクタの穴の大きさを公差0で設計したのではないかと思います。月曜日に会社にいったらヤスリで削ってみます。

基板にもいくつか問題がありました。まず、電源回路がなぜか動かないのです。1.8Vと2.5Vを出すはずなのに、何も出てきません。なぜなんでしょう。

そして、このTE0720というモジュールはVIOがすべてそろっていないとTE0720上のCPLDがFPGAにリセットをかけ続けるようで、FPGAがリセットされたままになってしまいました。

とりえあえず、すべてのVIOに何らかの電圧を与えることで、FPGAは起動しました。

それから、回路設計をちょっと間違えていて、FSBLの出力はUART1、つまりMIO14とMIO15に出てくるようなのですが、UARTの端子をFPGAのPLにつないでいたので、EMIOを使ってUART1をEMIOに出すことで何とか回避しました。

しかし、TE0720を使っていて困るのは、このモジュール上のCPLDが何をやっているかわからないことと、ほとんどの部品がBGAかつ多層基板なのでオシロで信号が見れないことです。

Cszmini_1

この拡張ボードを作ったことで、MITOUJTAGからTE0720が見えるようになったことで、デバッグの効率が飛躍的に高まりました。

Cszmini_2

MITOUJTAGを使えば、FSBLやU-BOOTが起動中であっても、UARTのポートが間違っていても、端子の波形が見えるので何をやっているかがだいたいわかります。

下の図は、FSBLとU-Bootが起動してLinuxのカーネルを読み込んでいる際のSDカードのようすです。

Zynqboot1

次の図は、同じ期間のDDR3メモリのようすです。SDカードから読み込んでDDR3メモリに展開しているのがわかります。

Zynqboot2

なお、LinuxのDeviceTreeでギガビットイーサを使わないようにしたら、Ether用のクロックが途中で止まることが確認できました。

Zynqboot3

このLinuxでは、QSPIを使いたいのにどうしてか動いてくれません。バウンダリスキャンで波形を見てみると、途中から線が赤くなって、何らかの状態変化があって止まっていることがわかります。

このように、BGAだらけの基板でも、JTAGを使えば、SDカードを読みにいっているな、とか、DDR3メモリにイメージを展開しているな、とか、QSPIメモリを読んでいるとか、USBのチップにアクセスしている、とかそういうのが見えるようになります。

さんざん苦労して、なんとかFSBLとU-Boot、それからLinuxのカーネル起動まではできるようになりました。

Cszmini_3

Linuxboot

U-BootとLinuxが起動したときのメッセージを忘れないように書いておきます。

U-Boot 2017.01-00013-g3290b10-dirty (Nov 12 2017 - 16:33:25 +0900)

Model: Zynq Cosmo-Z Mini Development Board
Board: Xilinx Zynq
I2C:   ready
DRAM:  ECC disabled 1 GiB
MMC:   sdhci@e0100000: 0 (SD)
SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
*** Warning - bad CRC, using default environment

In:    serial@e0001000
Out:   serial@e0001000
Err:   serial@e0001000
Model: Zynq Cosmo-Z Mini Development Board
Board: Xilinx Zynq
Net:   ZYNQ GEM: e000b000, phyaddr 7, interface rgmii-id
eth0: ethernet@e000b000
Hit any key to stop autoboot:  0
Device: sdhci@e0100000
Manufacturer ID: 3
OEM: 5054
Name: SL16G
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.5 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
reading uEnv.txt
** Unable to read file uEnv.txt **
Copying Linux from SD to RAM...
reading uImage
3777296 bytes read in 231 ms (15.6 MiB/s)
reading devicetree.dtb
9351 bytes read in 18 ms (506.8 KiB/s)
reading uramdisk.image.gz
5310062 bytes read in 312 ms (16.2 MiB/s)
## Booting kernel from Legacy Image at 02080000 ...
   Image Name:   Linux-4.9.0-xilinx-00050-gbd8f87
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3777232 Bytes = 3.6 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 04000000 ...
   Image Name:
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    5309998 Bytes = 5.1 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 02000000
   Booting using the fdt blob at 0x2000000
   Loading Kernel Image ... OK
   Loading Ramdisk to 1faef000, end 1ffff62e ... OK
   Loading Device Tree to 1fae9000, end 1faee486 ... OK
Unable to update property /amba/ethernet@e000b000:mac-address, err=FDT_ERR_NOTFOUND
Unable to update property /amba/ethernet@e000b000:local-mac-address, err=FDT_ERR_NOTFOUND

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.9.0-xilinx-00050-gbd8f87c (naitou@ubuntu) (gcc version 4.9.2 (Sourcery CodeBench Lite 2015.05-17) ) #3 SMP PREEMPT Sun Nov 12 17:54:19 JST 2017
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt:Machine model: xlnx,zynq-7000
cma: Reserved 16 MiB at 0x3f000000
Memory policy: Data cache writealloc
percpu: Embedded 14 pages/cpu @ef7d4000 s25984 r8192 d23168 u57344
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260608
Kernel command line: console=ttyPS1,115200 root=/dev/ram rw earlyprintk
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1007684K/1048576K available (6144K kernel code, 200K rwdata, 1460K rodata, 1024K init, 230K bss, 24508K reserved, 16384K cma-reserved, 245760K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
    lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0700000   (7136 kB)
      .init : 0xc0900000 - 0xc0a00000   (1024 kB)
      .data : 0xc0a00000 - 0xc0a32140   ( 201 kB)
       .bss : 0xc0a32140 - 0xc0a6bbdc   ( 231 kB)
Preemptible hierarchical RCU implementation.
        Build-time adjustment of leaf fanout to 32.
        RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
efuse mapped to f0800000
slcr mapped to f0802000
L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 1 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 8 ways, 512 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001
zynq_clock_init: clkc starts at f0802100
Zynq clock init
sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 4398046511103ns
clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x4ce07af025, max_idle_ns: 440795209040 ns
Switching to timer-based delay loop, resolution 3ns
clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns
timer #0 at f080a000, irq=17
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 666.66 BogoMIPS (lpj=3333333)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x100000 - 0x100058
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 2 CPUs
SMP: Total of 2 processors activated (1333.33 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor menu
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0xf0880000
zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
e0000000.serial: ttyPS0 at MMIO 0xe0000000 (irq = 27, base_baud = 6249999) is a xuartps
e0001000.serial: ttyPS1 at MMIO 0xe0001000 (irq = 28, base_baud = 6249999) is a xuartps
console [ttyPS1] enabled
vgaarb: loaded
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
media: Linux media interface: v0.10
Linux video capture interface: v2.00
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti 

PTP clock support registered EDAC MC: Ver: 3.0.0 FPGA manager framework fpga-region fpga-full: FPGA Region probed Advanced Linux Sound Architecture Driver Initialized. clocksource: Switched to clocksource arm_global_timer NET: Registered protocol family 2 TCP established hash table entries: 8192 (order: 3, 32768 bytes) TCP bind hash table entries: 8192 (order: 4, 65536 bytes) TCP: Hash tables configured (established 8192 bind 8192) UDP hash table entries: 512 (order: 2, 16384 bytes) UDP-Lite hash table entries: 512 (order: 2, 16384 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... rootfs image is not initramfs (no cpio magic); looks like an initrd Freeing initrd memory: 5188K (dfaef000 - e0000000) hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available futex hash table entries: 512 (order: 3, 32768 bytes) workingset: timestamp_bits=30 max_order=18 bucket_order=0 jffs2: version 2.2. (NAND) (SUMMARY)  c 2001-2006 Red Hat, Inc. bounce: pool size: 64 pages io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dmac:        DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 [drm] Initialized brd: module loaded loop: module loaded libphy: Fixed MDIO Bus: probed CAN device driver interface e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k e1000e: Copyright(c) 1999 - 2015 Intel Corporation. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ehci-pci: EHCI PCI platform driver usbcore: registered new interface driver cdc_wdm usbcore: registered new interface driver usb-storage mousedev: PS/2 mouse device common for all mice i2c /dev entries driver cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 23 cdns-i2c e0005000.i2c: 400 kHz mmio e0005000 irq 24 cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at f098d000 with timeout 10s EDAC MC: ECC not enabled Xilinx Zynq CpuIdle Driver started sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA mmc0: new high speed SDHC card at address 0007 mmc1: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA ledtrig-cpu: registered to indicate activity on CPUs mmcblk0: mmc0:0007 SL16G 14.5 GiB mmcblk0: p1 p2 usbcore: registered new interface driver usbhid usbhid: USB HID core driver fpga_manager fpga0: Xilinx Zynq FPGA Manager registered NET: Registered protocol family 10 sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver NET: Registered protocol family 17 can: controller area network core (rev 20120528 abi 9) NET: Registered protocol family 29 can: raw protocol (rev 20120528) can: broadcast manager protocol (rev 20161123 t) can: netlink gateway (rev 20130117) max_hops=1 Registering SWP/SWPB emulation handler hctosys: unable to open rtc device (rtc0) of_cfs_init of_cfs_init: OK ALSA device list:   No soundcards found. RAMDISK: gzip image found at block 0 mmc1: new high speed MMC card at address 0001 mmcblk1: mmc1:0001 MMC04G 3.52 GiB mmcblk1boot0: mmc1:0001 MMC04G partition 1 16.0 MiB mmcblk1boot1: mmc1:0001 MMC04G partition 2 16.0 MiB mmcblk1rpmb: mmc1:0001 MMC04G partition 3 128 KiB EXT4-fs (ram0): couldn't mount as ext3 due to feature incompatibilities EXT4-fs (ram0): mounted filesystem without journal. Opts: (null) VFS: Mounted root (ext4 filesystem) on device 1:0. devtmpfs: mounted Freeing unused kernel memory: 1024K (c0900000 - c0a00000) Starting rcS... ++ Mounting filesystem FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. ++ Setting up mdev ++ Starting telnet daemon ++ Starting http daemon ++ Starting ftp daemon ++ Starting ssh daemon random: sshd: uninitialized urandom read (32 bytes read) rcS Complete

なお、このrcS Completeで止まってしまうので、まだ何か足りないところがあるのでしょう。

|

« PythonのXMLRPCが遅くなった原因 | トップページ | ET/IoT2017に出展します! »

コメント

コメントを書く



(ウェブ上には掲載しません)




« PythonのXMLRPCが遅くなった原因 | トップページ | ET/IoT2017に出展します! »