Forum: Mikrocontroller und Digitale Elektronik Cyclone V - Altera SoC - Linux und QT auf einem SoCrates


von Micha K. (rumeniger)


Lesenswert?

Hallo zusammen,

ich habe ein SoCrates Developmentboard der Version 2.1 und 1.2 mit einem 
Cyclone V.

Aktuell versuche ich ein Linux Betriebssystem auf dem Board zu starten.
Das eigentliche Ziel des Projektes ist eine QT Anwendung laufen zu 
lassen. Daher verwende ich als Grundlage das Projekt „QT Demo on 
SoCrates“ 
https://rocketboards.org/foswiki/view/Projects/QtDemoOnSoCrates
Auf meinem Host PC habe ich Windows 7 mit den Programmen Quartus || 17, 
DS-5 und SoC EDS 17.
Als Virtuelle Maschine benutze ich ein Ubuntu V14 32 Bit. Auf der 
virtuellen Maschine sind keiner der oben genannten Tools installiert.
Als erstes habe ich ELDK 5.3 in Ubuntu installiert.
Hierzu habe ich die folgenden Files heruntergeladen:
- ftp://ftp.denx.de/pub/eldk/5.3/install.sh
- 
.../5.3//targets/armv7a-hf/core-image-qte-sdk-generic-armv7a-hf.tar.gz
- 
.../5.3//targets/armv7a-hf/eldk-eglibc-i686-arm-toolchain-qte-5.5.3.sh
-  .../5.3//targets/armv7a-hf/target.conf
und anschließend mit „ sudo ./install.sh -s qte -r qte-sdk armv7a-hf“ 
installiert. Danach folgt die Installation des eldk-switch und das 
setzen der Enviromentvariablen. Abschließend die Anweisung "eldk-switch 
-r 5.3 armv7a-hf".
Nun wurde alle Schritte wie bei der Anleitung „QT Demo on SoCrates“ 
durchgeführt und den make Prozess mit
make socfpga_socrates_defconfig
make -j2 LOADADDR=0x8000 uImage
make socfpga_cyclone5_socrates.dtb
gestartet.  Die erzeugten Files befinden sich im Ordner  arch/arm/boot 
und arch/arm/boot/dts

Für das Erstellen der SD Karte verwende ich das Archivfile vom EBV 
workshop. Das dort enthaltene Betriebssystem funktioniert einwandfrei.
Wenn ich allerdings die Files „socfpga_socrates.dtb“ und uImage durch 
die neu erzeugten Files austausche erhalte ich folgenden Auszug:

U-Boot SPL 2013.01.01 (Aug 04 2015 - 21:24:12)
BOARD: EBV SoCrates
CLOCK: EOSC1 clock 25000 KHz
CLOCK: EOSC2 clock 25000 KHz
CLOCK: F2S_SDR_REF clock 0 KHz
CLOCK: F2S_PER_REF clock 0 KHz
CLOCK: MPU clock 800 MHz
CLOCK: DDR clock 333 MHz
CLOCK: UART clock 100000 KHz
CLOCK: MMC clock 50000 KHz
CLOCK: QSPI clock 400000 KHz
RESET: COLD
INFO : Watchdog enabled
SDRAM: Initializing MMR registers
SDRAM: Calibrating PHY
SEQ.C: Preparing to start memory calibration
SEQ.C: CALIBRATION PASSED
SDRAM: 1024 MiB
ALTERA DWMMC: 0

U-Boot 2013.01.01 (Aug 04 2015 - 21:24:38)
CPU   : Altera SOCFPGA Platform
BOARD: EBV SoCrates
I2C:   ready
DRAM:  1 GiB
MMC:   ALTERA DWMMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   mii0
Hit any key to stop autoboot:  0
3761160 bytes read in 242 ms (14.8 MiB/s)
20485 bytes read in 45 ms (444.3 KiB/s)
## Booting kernel from Legacy Image at 10000000 ...
   Image Name:   Linux-3.14.0-00318-g775a3df-dirt
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3761096 Bytes = 3.6 MiB
   Load Address: 00008000
   Entry Point:  00008000
## Flattened Device Tree blob at 00f00000
   Booting using the fdt blob at 0x00f00000
   Loading Kernel Image ... OK
OK
   Loading Device Tree to 03ff7000, end 03fff004 ... OK

Starting kernel ...

… und danach passiert nichts mehr.

Wenn ich nur das uImage austausche und den alten Device Tree verwende 
erhalte ich folgende Ausgabe:

U-Boot 2013.01.01 (Aug 04 2015 - 21:24:38)

CPU   : Altera SOCFPGA Platform
BOARD: EBV SoCrates
I2C:   ready
DRAM:  1 GiB
MMC:   ALTERA DWMMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   mii0
Hit any key to stop autoboot:  0
3761160 bytes read in 246 ms (14.6 MiB/s)
20174 bytes read in 48 ms (410.2 KiB/s)
## Booting kernel from Legacy Image at 10000000 ...
   Image Name:   Linux-3.14.0-00318-g775a3df-dirt
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3761096 Bytes = 3.6 MiB
   Load Address: 00008000
   Entry Point:  00008000
## Flattened Device Tree blob at 00f00000
   Booting using the fdt blob at 0x00f00000
   Loading Kernel Image ... OK
OK
   reserving fdt memory region: addr=0 size=1000
   Loading Device Tree to 03ff8000, end 03fffecd ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Linux version 3.14.0-00318-g775a3df-dirty (bo@ubuntu) 
(gcc version 4.7.2 (GCC) ) #4 SMP Wed Oct 18 22:34:00 PDT 2017
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing 
instruction cache
[    0.000000] Machine model: EBV SOCrates
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 8 pages/cpu @bf7db000 s11328 r8192 
d13248 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
Total pages: 260096
[    0.000000] Kernel command line: root=/dev/mmcblk0p2 rw rootwait 
console=ttyS0,115200 uio_pdrv_genirq.of_id=generic-uio mem=1024M
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 
bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 
bytes)
[    0.000000] Memory: 1031344K/1048576K available (5619K kernel code, 
266K rwdata, 1524K rodata, 379K init, 266K bss, 17232K reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xc0800000 - 0xff000000   (1000 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xc0000000   (1024 MB)
[    0.000000]     modules : 0x7f000000 - 0x80000000   (  16 MB)
[    0.000000]       .text : 0x80008000 - 0x80702030   (7145 kB)
[    0.000000]       .init : 0x80703000 - 0x80761c40   ( 380 kB)
[    0.000000]       .data : 0x80762000 - 0x807a4a90   ( 267 kB)
[    0.000000]        .bss : 0x807a4a90 - 0x807e72a4   ( 267 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, 
Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000018] sched_clock: 32 bits at 100MHz, resolution 10ns, wraps 
every 42949672950ns
[    0.000327] Console: colour dummy device 80x30
[    0.000366] Calibrating delay loop... 1594.16 BogoMIPS (lpj=7970816)
[    0.089744] pid_max: default: 32768 minimum: 301
[    0.089984] Mount-cache hash table entries: 2048 (order: 1, 8192 
bytes)
[    0.090007] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 
bytes)
[    0.095223] CPU: Testing write buffer coherency: ok
[    0.095278] ftrace: allocating 18816 entries in 56 pages
[    0.128575] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.128683] Setting up static identity map for 0x5146b8 - 0x514710
[    1.129741] CPU1: failed to come online
[    1.129816] Brought up 1 CPUs
[    1.129830] SMP: Total of 1 processors activated.
[    1.129838] CPU: All CPU(s) started in SVC mode.
[    1.130811] devtmpfs: initialized
[    1.138815] VFP support v0.3: implementor 41 architecture 3 part 30 
variant 9 rev 4
[    1.140509] NET: Registered protocol family 16
[    1.140571] fpga bridge driver
[    1.141250] DMA: preallocated 256 KiB pool for atomic coherent 
allocations
[    1.142549] L310 cache controller enabled
[    1.142569] l2x0: 8 ways, CACHE_ID 0x410030c9, AUX_CTRL 0x32460000, 
Cache size: 512 kB
[    1.144099] syscon ffc25000.sdr: regmap [mem 0xffc25000-0xffc25fff] 
registered
[    1.144360] syscon fffef000.l2-cache: regmap [mem 
0xfffef000-0xfffeffff] registered
[    1.144785] syscon ffc25000.sdrctl: regmap [mem 
0xffc25000-0xffc25fff] registered
[    1.145163] syscon ff800000.l3regs: regmap [mem 
0xff800000-0xff800fff] registered
[    1.146391] syscon ffd08000.sysmgr: regmap [mem 
0xffd08000-0xffd0bfff] registered
[    1.146686] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 
watchpoint registers.
[    1.146695] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    1.146981] altera_hps2fpga_bridge fpgabridge.2: regmap for 
altr,rst-mgr lookup failed.
[    1.146994] altera_hps2fpga_bridge fpgabridge.2: probe deferral not 
supported
[    1.147101] altera_hps2fpga_bridge fpgabridge.3: regmap for 
altr,rst-mgr lookup failed.
[    1.147113] altera_hps2fpga_bridge fpgabridge.3: probe deferral not 
supported
[    1.147213] altera_hps2fpga_bridge fpgabridge.4: regmap for 
altr,rst-mgr lookup failed.
[    1.147223] altera_hps2fpga_bridge fpgabridge.4: probe deferral not 
supported
[    1.152021] bio: create slab <bio-0> at 0
[    1.153981] FPGA Mangager framework driver
[    1.154264] SCSI subsystem initialized
[    1.154497] usbcore: registered new interface driver usbfs
[    1.154552] usbcore: registered new interface driver hub
[    1.154671] usbcore: registered new device driver usb
[    1.155523] pps_core: LinuxPPS API ver. 1 registered
[    1.155534] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 
Rodolfo Giometti <giometti@linux.it>
[    1.155555] PTP clock support registered
[    1.156272] Switched to clocksource timer1
[    1.179907] NET: Registered protocol family 2
[    1.180482] TCP established hash table entries: 8192 (order: 3, 32768 
bytes)
[    1.180563] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    1.180706] TCP: Hash tables configured (established 8192 bind 8192)
[    1.180801] TCP: reno registered
[    1.180820] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    1.180881] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    1.181166] NET: Registered protocol family 1
[    1.181582] RPC: Registered named UNIX socket transport module.
[    1.181593] RPC: Registered udp transport module.
[    1.181600] RPC: Registered tcp transport module.
[    1.181606] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.181980] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 
counters available
[    1.182039] arm-pmu arm-pmu: PMU:CTI successfully enabled for 1 cores
[    1.182758] futex hash table entries: 512 (order: 3, 32768 bytes)
[    1.192942] NFS: Registering the id_resolver key type
[    1.192998] Key type id_resolver registered
[    1.193006] Key type id_legacy registered
[    1.193042] NTFS driver 2.1.30 [Flags: R/W].
[    1.193393] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    1.194006] msgmni has been set to 2014
[    1.194521] io scheduler noop registered (default)
[    1.197802] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    1.198669] ffc02000.serial0: ttyS0 at MMIO 0xffc02000 (irq = 194, 
base_baud = 6250000) is a 16550A
[    1.761234] console [ttyS0] enabled
[    1.765167] ffc03000.serial1: ttyS1 at MMIO 0xffc03000 (irq = 195, 
base_baud = 6250000) is a 16550A
[    1.774697] altera_fpga_manager ff706000.fpgamgr: fpga manager 
[Altera FPGA Manager] registered as minor 0
[    1.785306] brd: module loaded
[    1.789374] cadence-qspi ff705000.spi: DMA NOT enabled
[    1.794574] cadence-qspi ff705000.spi: master is unqueued, this is 
deprecated
[    1.802217] m25p80 spi2.0: n25q256a (32768 Kbytes)
[    1.807245] 6 ofpart partitions found on MTD device spi2.0
[    1.812711] Creating 6 MTD partitions on "spi2.0":
[    1.817508] 0x000000000000-0x000000040000 : "preloader"
[    1.823463] 0x000000040000-0x000000050000 : "env"
[    1.828881] 0x000000050000-0x000000060000 : "fdt"
[    1.834287] 0x000000060000-0x000000100000 : "U-Boot"
[    1.839947] 0x0000000a0000-0x0000006a0000 : "kernel"
[    1.845618] 0x0000006a0000-0x000002000000 : "user"
[    1.851154] cadence-qspi ff705000.spi: Cadence QSPI controller driver
[    1.858152] CAN device driver interface
[    1.862546] c_can_platform ffc00000.can: c_can_platform device 
registered (regs=c08de000, irq=163)
[    1.871765] stmmaceth ff702000.ethernet: no reset control found
[    1.877683] stmmac - user ID: 0x10, Synopsys ID: 0x37
[    1.882714]  Ring mode enabled
[    1.885756]  DMA HW capability register supported
[    1.890277]  Enhanced/Alternate descriptors
[    1.894626]  Enabled extended descriptors
[    1.898630]  RX Checksum Offload Engine supported (type 2)
[    1.904090]  TX Checksum insertion supported
[    1.908350]  Enable RX Mitigation via HW Watchdog Timer
[    1.919479] libphy: stmmac: probed
[    1.922875] eth0: PHY ID 03625e6a at 0 IRQ POLL (stmmac-0:00) active
[    1.929540] dwc2 ffb40000.usb: EPs:15
[    1.933193] dwc2 ffb40000.usb: dedicated fifos
[    2.796446] dwc2 ffb40000.usb: DWC OTG Controller
[    2.801159] dwc2 ffb40000.usb: new USB bus registered, assigned bus 
number 1
[    2.808224] dwc2 ffb40000.usb: irq 160, io mem 0x00000000
[    2.813789] usb usb1: New USB device found, idVendor=1d6b, 
idProduct=0002
[    2.820571] usb usb1: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    2.827775] usb usb1: Product: DWC OTG Controller
[    2.832463] usb usb1: Manufacturer: Linux 3.14.0-00318-g775a3df-dirty 
dwc2_hsotg
[    2.839839] usb usb1: SerialNumber: ffb40000.usb
[    2.844932] hub 1-0:1.0: USB hub found
[    2.848740] hub 1-0:1.0: 1 port detected
[    2.853000] usbcore: registered new interface driver usb-storage
[    2.859155] usbcore: registered new interface driver usbserial
[    2.865250] mousedev: PS/2 mouse device common for all mice
[    2.871339] rtc-m41t80 0-0068: chip found, driver version 0.05
[    2.877658] rtc-m41t80 0-0068: rtc core: registered m41t82 as rtc0
[    2.884203] rtc-m41t80 0-0068: HT bit was set!
[    2.888659] rtc-m41t80 0-0068: Power Down at 2000-00-00 03:50:53
[    2.894890] i2c /dev entries driver
[    2.898805] Synopsys Designware Multimedia Card Interface Driver
[    2.905109] dwmmc_socfpga ff704000.dwmmc0: No dw-mshc-ciu-div 
specified, assuming 1
[    2.912764] dwmmc_socfpga ff704000.dwmmc0: platform data not 
available
[    2.919296] dwmmc_socfpga: probe of ff704000.dwmmc0 failed with error 
-22
[    2.926485] ledtrig-cpu: registered to indicate activity on CPUs
[    2.932637] usbcore: registered new interface driver usbhid
[    2.938206] usbhid: USB HID core driver
[    2.942175] oprofile: using arm/armv7-ca9
[    2.946473] TCP: cubic registered
[    2.950392] NET: Registered protocol family 10
[    2.955824] sit: IPv6 over IPv4 tunneling driver
[    2.961065] NET: Registered protocol family 17
[    2.965514] NET: Registered protocol family 15
[    2.969963] can: controller area network core (rev 20120528 abi 9)
[    2.976178] NET: Registered protocol family 29
[    2.980631] can: raw protocol (rev 20120528)
[    2.984886] can: broadcast manager protocol (rev 20120528 t)
[    2.990541] can: netlink gateway (rev 20130117) max_hops=1
[    2.996230] 8021q: 802.1Q VLAN Support v1.8
[    3.000474] Key type dns_resolver registered
[    3.004840] ThumbEE CPU extension supported.
[    3.009125] Registering SWP/SWPB emulation handler
[    3.014839] rtc-m41t80 0-0068: hctosys: unable to read the hardware 
clock
[    3.023734] Waiting for root device /dev/mmcblk0p2...

… Danach passiert nichts mehr… In beiden Fällen habe ich das Root File 
System des Archivfiles verwendet. In einem weiteren Test habe ich das 
Root File System „core-image-qte-sdk-generic-armv7a-hf“ verwendet. 
Allerdings ändert dies nichts an der Ausgabe.

Kann mir irgendjemand weiterhelfen wieso das Linux nicht gestartet 
werden kann? Ist die Architektur armv7a-hf die Richtige? An was könnte 
es sonst noch liegen ?
Vielen Dank für eure Hilfe 

: Bearbeitet durch User
von Markus W. (dl8mby)


Lesenswert?

Hallo Micha,

jetzt nur so eine Vermutung, ohne es genau zu wissen.

Mir scheint, dass für Deinen zweiten Fall der mmc Treiber
ein Problem mit Deiner HW hat.

[    2.898805] Synopsys Designware Multimedia Card Interface Driver
[    2.905109] dwmmc_socfpga ff704000.dwmmc0: No dw-mshc-ciu-div 
specified, assuming 1
[    2.912764] dwmmc_socfpga ff704000.dwmmc0: platform data not 
available
[    2.919296] dwmmc_socfpga: probe of ff704000.dwmmc0 failed with error 
-22
...
[    3.023734] Waiting for root device /dev/mmcblk0p2...

Bitte korrigiert mich, wenn ich falsch liege.

Versuch mal in U-Boot
mmc info - display info of the current MMC device
ob das klappt.

Gruß
Markus


PS.: Was mir noch einfällt - wie ist Dein MMC clock in der
Konfiguration gesetzt?

: Bearbeitet durch User
von Micha K. (rumeniger)


Lesenswert?

Hallo Markus,
vielen dank für deine schnelle Antwort :)

Im U-Boot ergibt folgender Befehl:
" mmc part - lists available partition on current mmc device "
den Output:

Part    Start Sector    Num Sectors     UUID            Type
  1     2048            2048            7191bad1-01     a2
  2     4096            15273984        7191bad1-02     83

Der Output von
" ext2ls mmc 0:2" im U-Boot ergibt:

EBV SoCrates # ext2ls mmc 0:2
<DIR>       4096 .
<DIR>       4096 ..
<DIR>      16384 lost+found
<DIR>       4096 boot
<DIR>       4096 dev
<DIR>       4096 home
<DIR>       4096 bin
<DIR>       4096 lib
<DIR>       4096 etc
<DIR>       4096 tmp
<DIR>       4096 run
<DIR>       4096 sbin
<DIR>       4096 mnt
<DIR>       4096 usr
<DIR>       4096 var
<DIR>       4096 media
<DIR>       4096 proc
<DIR>       4096 sys

Wo finde ich Einstellung des MMC Clock´s ?

Viele Grüße
Micha

von Markus W. (dl8mby)


Lesenswert?

Hallo Micha,

genauer kann ich Dir das für deinen Anwendungsfall nicht sagen.
Da Du deinen Kernel selber compilierst, könntest Du über den u.g.
Link

http://processors.wiki.ti.com/index.php/AM335x_MMC/SD_Driver%27s_Guide

nachlesen, wie man das u.U. im Kernel definiert.

Bei den Fällen bei denen ich einen SBC (single board computer) verwendet
habe, sind mir unterschiedliche Methoden der Konfiguration unter 
gekommen.
Es gibt die statischen, die Du zur Compilzeit angibst, wie oben im
Link angegeben und es gibt die dynamischen Varianten, die Du beim
Bootvorgang benützt und sie vorher in einer ASCII lesbaren Datei
ablegst (z.B. /boot/uEnv.txt), oder eine ASCII Config-Datei mit den
gewünschten Parametern fütterst und diese dann mittels eines Tools in
eine binäre Datei wandelst, die dann in der Bootpartition liegen muss.
Beispiel dafür ist die script.txt, die nach Erstellung in eine
script.bin gewandelt werden muss, mit dem Tool fex2bin aus dem 
sunix-tools
Packet, siehe auch

http://linux-sunxi.org/Sunxi-tools.

Das ist aber jedes mal platformabhängig, und kann bei Dir anders
aussehen.

Mit Yacto z.B. wird es eventuell noch anders gemacht, Stichwort DBT

https://www.yoctoproject.org/documentation

http://www.informit.com/articles/article.aspx?p=1647051&seqNum=5
http://cache.freescale.com/files/soft_dev_tools/doc/user_guide/QCSHWDTUG.pdf

Tut mir leid, dass ich Dir nicht weiter helfen kann.
Hoffe jemand hier von den Embedded-Experten kann noch Sein Wissen
diesbezüglich mit dem Forum teilen.

Gruß
Markus

PS.: Ich habe auch ein DE-0 Nano SoC FPGA board daheim rumliegen, hab
mich aber noch nicht mit der eingebauten ARM CPU gespielt und ein Kernel
installiert.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.