UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
9,336 Views
Registered: ‎03-15-2011

HDMI access from linux

Jump to solution

Hi all

 

I've got a question, I'm running an AMP Zynq platform (zybo). 

I'm implementing a HDMI input from a camera of which I want to store one frame. If I run this Bare metal it's working but once I try to implement it in a AMP configuration (Archlinux, boots Bare metal core) I get some problems:

1) The code runs, but the Hardware is not responding well, I get an error that one of the VDMA registers can't be written and so it doens't start transmission...

2) If I try to stop the code, I can't return to my Linux so I think that the bare metal code (or the VDMA?) is killing my linux core

Is this possible? Anybody has any experience?

Thanks in any way!

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Adventurer
Adventurer
16,521 Views
Registered: ‎03-15-2011

Re: HDMI access from linux

Jump to solution

Hi all

 

I found out it was a combination of things:

Device tree was locking my clocks (all but main clock)

Device tree had some issues with interrupts

My linux core was handling all interrupts although I wanted the bare-metal core to handle some of them. (had to alter the GIC on the bare metal core).

Tags (4)
3 Replies
Xilinx Employee
Xilinx Employee
9,319 Views
Registered: ‎08-02-2011

Re: HDMI access from linux

Jump to solution

What error do you get?

 

Are you trying to run your code with baremetal BSP directly on Linux (i.e. trying to access VDMA physical addresses directly)? That won't work.

www.xilinx.com
0 Kudos
Adventurer
Adventurer
9,272 Views
Registered: ‎03-15-2011

Re: HDMI access from linux

Jump to solution

Hi

I try to keep both cores separated:

Core0 gets Linux, core 1 gets Bare-metal

The HDMI input code is run on the bare-metal core (pure standalone it works), but if I go to AMP configuration and start core1 by writing its starting address to 0xfffffff0 I get an error:

I get an error back that the "Status = XAxiVdma_DmaStart(dispPtr->vdma, XAXIVDMA_READ); " fails

When I debug, apparantly I write a 1 to CrBits to start the VDMA transfer, but if I read it out I get a 0...

Also it kills my linux. I attach the code where I check what is going wrong (all parts before this don't produce a XST_FAILURE or different 'bad' message)

 

 

/*****************************************************************************/
/**
 * Start one DMA channel
 *
 * @param Channel is the pointer to the channel to work on
 *
 * @return
 * - XST_SUCCESS if successful
 * - XST_FAILURE if channel is not initialized
 * - XST_DMA_ERROR if:
 *   . The DMA channel fails to stop
 *   . The DMA channel fails to start
 * - XST_DEVICE_BUSY is the channel is doing transfers
 *
 *****************************************************************************/
int XAxiVdma_ChannelStart(XAxiVdma_Channel *Channel)
{
	u32 CrBits;

	if (!Channel->IsValid) {
		xdbg_printf(XDBG_DEBUG_ERROR, "Channel not initialized\r\n");

		return XST_FAILURE;
	}

	if (Channel->HasSG && XAxiVdma_ChannelIsBusy(Channel)) {

		xdbg_printf(XDBG_DEBUG_ERROR,
		    "Start DMA channel while channel is busy\r\n");

		return XST_DEVICE_BUSY;
	}

	/* If channel is not running, setup the CDESC register and
	 * set the channel to run
	 */
	if (!XAxiVdma_ChannelIsRunning(Channel)) {

		if (Channel->HasSG) {
			/* Set up the current bd register
			 *
			 * Can only setup current bd register when channel is halted
			 */
			XAxiVdma_WriteReg(Channel->ChanBase, XAXIVDMA_CDESC_OFFSET,
			    Channel->HeadBdPhysAddr);
		}

		/* Start DMA hardware
		 */
		CrBits = XAxiVdma_ReadReg(Channel->ChanBase,
		     XAXIVDMA_CR_OFFSET);

		CrBits = XAxiVdma_ReadReg(Channel->ChanBase, XAXIVDMA_CR_OFFSET) | XAXIVDMA_CR_RUNSTOP_MASK;
xil_printf("CrBits=%x\r\n",CrBits);
XAxiVdma_WriteReg(Channel->ChanBase, XAXIVDMA_CR_OFFSET, CrBits);
u32 test=XAxiVdma_ReadReg(Channel->ChanBase,XAXIVDMA_CR_OFFSET);
xil_printf("Is CrBits correct? %x",test); } if (XAxiVdma_ChannelIsRunning(Channel)) { /* Start DMA transfers * */ if (Channel->HasSG) { /* SG mode: * Update the tail pointer so that hardware will start * fetching BDs */ XAxiVdma_WriteReg(Channel->ChanBase, XAXIVDMA_TDESC_OFFSET, Channel->TailBdPhysAddr); } else { /* Direct register mode: * Update vsize to start the channel */ XAxiVdma_WriteReg(Channel->StartAddrBase, XAXIVDMA_VSIZE_OFFSET, Channel->Vsize); } return XST_SUCCESS; } else { xdbg_printf(XDBG_DEBUG_ERROR, "Failed to start channel %x\r\n", (unsigned int)Channel->ChanBase); return XST_DMA_ERROR; } }

Output from UART:

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: 3.7 GiB
Bus Width: 4-bit
reading uEnv.txt
** Unable to read file uEnv.txt **
Copying Linux from SD to RAM...
reading uImage
3522552 bytes read in 338 ms (9.9 MiB/s)
reading devicetree.dtb
15145 bytes read in 16 ms (923.8 KiB/s)
## Booting kernel from Legacy Image at 02080000 ...
   Image Name:   Linux-4.0.0-zybo-quadcopter-0000
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3522488 Bytes = 3.4 MiB
   Load Address: 02080000
   Entry Point:  02080000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 02000000
   Booting using the fdt blob at 0x2000000
   Loading Kernel Image ... OK
   Loading Device Tree to 1733f000, end 17345b28 ... OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.0.0-zybo-quadcopter-00007-g5dab41c-dirty (rtheunis@dione.esat.kuleuven.be) (gcc version 4.9.1 (Sourcery CodeBench Lite 2014.11-30) ) #2 SMP PREEMPT Wed Feb 3 17:15:38 CET 2016
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: xlnx,zynq-7000
cma: Reserved 16 MiB at 0x16000000
Memory policy: Data cache writealloc
PERCPU: Embedded 11 pages/cpu @d7ccd000 s12672 r8192 d24192 u45056
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 97536
Kernel command line: mem=384M console=ttyPS1,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0 maxcpus=1
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 366012K/393216K available (4754K kernel code, 221K rwdata, 1704K rodata, 220K init, 208K bss, 10820K reserved, 16384K cma-reserved, 0K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xd8800000 - 0xff000000   ( 616 MB)
    lowmem  : 0xc0000000 - 0xd8000000   ( 384 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0656d7c   (6460 kB)
      .init : 0xc0657000 - 0xc068e000   ( 220 kB)
      .data : 0xc068e000 - 0xc06c57e0   ( 222 kB)
       .bss : 0xc06c57e0 - 0xc06f9af4   ( 209 kB)
Preemptible hierarchical RCU implementation.
        Additional per-CPU info printed with stalls.
        RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
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
slcr mapped to d8804000
zynq_clock_init: clkc starts at d8804100
Zynq clock init
sched_clock: 64 bits at 325MHz, resolution 3ns, wraps every 3383112499200ns
timer #0 at d8808000, irq=17
Console: colour dummy device 80x30
Calibrating delay loop... 1292.69 BogoMIPS (lpj=6463488)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x4802f8 - 0x480350
Brought up 1 CPUs
SMP: Total of 1 processors activated (1292.69 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
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
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 @ 0xd8880000
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 <giometti@linux.it>
PTP clock support registered
EDAC MC: Ver: 3.0.0
Advanced Linux Sound Architecture Driver Initialized.
Switched to clocksource arm_global_timer
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
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.
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
futex hash table entries: 512 (order: 3, 32768 bytes)
jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
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
xilinx-vdma 43000000.dma: Xilinx AXI VDMA Engine Driver Probed!!
e0001000.serial: ttyPS1 at MMIO 0xe0001000 (irq = 142, base_baud = 6009615) is a xuartps
console [ttyPS1] enabled
xdevcfg f8007000.devcfg: ioremap 0xf8007000 to d886c000
[drm] Initialized drm 1.1.0 20060810
brd: module loaded
loop: module loaded
CAN device driver interface
e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
e1000e: Copyright(c) 1999 - 2014 Intel Corporation.
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-pci: EHCI PCI platform driver
usbcore: registered new interface driver usb-storage
e0002000.usb supply vbus not found, using dummy regulator
ULPI transceiver vendor/product ID 0x0424/0x0007
Found SMSC USB3320 ULPI transceiver.
ULPI integrity check: passed.
ci_hdrc ci_hdrc.0: EHCI Host Controller
ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
mousedev: PS/2 mouse device common for all mice
i2c /dev entries driver
cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 140
xilinx-vtc: probe of 43c00000.v_tc failed with error -2
xilinx-vtc: probe of 43c20000.v_tc failed with error -2
Xilinx Zynq CpuIdle Driver started
Driver 'mmcblk' needs updating - please use bus_type methods
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
sdhci-arasan e0100000.sdhci: No vmmc regulator found
sdhci-arasan e0100000.sdhci: No vqmmc regulator found
mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP: cubic registered
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 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
Registering SWP/SWPB emulation handler
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
ALSA device list:
  No soundcards found.
Waiting for root device /dev/mmcblk0p2...
mmc0: new high speed SDHC card at address 59b4
mmcblk0: mmc0:59b4 USD   3.74 GiB
 mmcblk0: p1 p2
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:2.
Freeing unused kernel memory: 220K (c0657000 - c068e000)
Failed to insert module 'autofs4': No such file or directory
random: systemd urandom read with 7 bits of entropy available
systemd[1]: systemd 228 running in system mode. (+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
systemd[1]: Detected architecture arm.

Welcome to Arch Linux ARM!

systemd[1]: Set hostname to <alarm>.
systemd[1]: display-manager.service: Cannot add dependency job, ignoring: Unit display-manager.service failed to load: No such file or directory.
systemd[1]: Listening on LVM2 metadata daemon socket.
[  OK  ] Listening on LVM2 metadata daemon socket.
systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Started Dispatch Password Requests to Consolesystemd[1]: Listening on Device-mapper event daemon FIFOs.
 Directory Watch.
[  OK  ] Listening on Device-mapper systemd[1]: Listening on udev Kernel Socket.
event daemon FIFOs.
[  OK  ] Listening on udev Kernelsystemd[1]: Reached target Remote File Systems.
 Socket.
[  OK  ] Reached target Remote File Systems.systemd[1]: Listening on Network Service Netlink Socket.

[  OK  ] Listening on Network Service Netlink Socket.systemd[1]: Created slice User and Session Slice.

[  OK  ] Created slice User and Session Slice.
systemd[1]: Reached target Swap.
[  OK  ] Reached target Swap.
systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
systemd[1]: Created slice System Slice.
[  OK  ] Created slice System Slice.
systemd[1]: Starting Remount Root and Kernel File Systems...
         Starting Remount Root and Kernel File Systems...
systemd[1]: Starting Setup Virtual Console...
         Starting Setup Virtual Console...
systemd[1]: Reached target Slices.
[  OK  ] Reached target Slices.
systemd[1]: Created slice system-serial\x2dgetty.slice.
[  OK  ] Created slice system-serial\x2dgetty.slice.
systemd[1]: Starting Apply Kernel Variables...
         Starting Apply Kernel Variables...
systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
systemd[1]: Reached target Encrypted Volumes.
[  OK  ] Reached target Encrypted Volumes.
systemd[1]: Created slice system-getty.slice.
[  OK  ] Created slice system-getty.slice.
systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[  OK  ] Listening on /dev/initctl Compatibility Namedsystemd[1]: Listening on Journal Socket (/dev/log).
 Pipe.
[  OK  ] Listening on Journal Socket (/dev/log).systemd[1]: Starting Journal Service...

         Starting Journal Service...
systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  OK  ] Started Forward Password Requests to Wall Dirsystemd[1]: Reached target Paths.
ectory Watch.
[  OK  ] Reached target Paths.
systemd[1]: Mounting Temporary Directory...
         Mounting Temporary Directory...
systemd[1]: Started Remount Root and Kernel File Systems.
[  OK  ] Started Remount Root and Kernel File Systems.systemd[1]: Started Setup Virtual Console.

[  OK  ] Started Setup Virtual Console.
systemd[1]: Started Apply Kernel Variables.
[  OK  ] Started Apply Kernel Variables.
systemd[1]: Mounted Temporary Directory.
[  OK  ] Mounted Temporary Directory.
systemd[1]: Starting udev Coldplug all Devices...
systemd-journald[600]: File /var/log/journal/79b6dfff248e4ff09258691468357737/system.journal corrupted or uncleanly shut down, renaming and replacing.
         Starting udev Coldplug all Devices...
systemd[1]: Starting Create Static Device Nodes in /dev...
         Starting Create Static Device Nodes in /dev...
systemd[1]: Starting Load/Save Random Seed...
         Starting Load/Save Random Seed...
systemd[1]: Started Load/Save Random Seed.
[  OK  ] Started Load/Save Random Seed.
systemd[1]: Started Create Static Device Nodes in /dev.
[  OK  ] Started Create Static Device Nodes in /dev.
systemd[1]: Started Journal Service.
[  OK  ] Started Journal Service.
         Starting Flush Journal to Persistent Storage...
         Starting udev Kernel Device Manager...
[  OK  ] Reached target Local File Systems (Pre).
systemd-journald[600]: Received request to flush runtime journal from PID 1
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started udev Coldplug all Devices.
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Found device /dev/ttyPS1.
[  OK  ] Found device /dev/mmcblk0p1.
         Mounting /boot...
FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[  OK  ] Mounted /boot.
[  OK  ] Reached target Local File Systems.
         Starting Create Volatile Files and Directories...
[  OK  ] Started Create Volatile Files and Directories.
         Starting Update UTMP about System Boot/Shutdown...
         Starting Network Time Synchronization...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Initialization.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Basic System.
         Starting SSH Key Generation...
         Starting Login Service...
         Starting Permit User Sessions...
[  OK  ] Started Entropy Harvesting Daemon.
[  OK  ] Started D-Bus System Message Bus.
         Starting Network Service...
[  OK  ] Reached target System Time Synchronized.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Started Daily verification of password and group files.
[  OK  ] Started Daily man-db cache update.
[  OK  ] Reached target Timers.
[  OK  ] Started SSH Key Generation.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started Network Service.
[  OK  ] Started Login Service.
[  OK  ] Reached target Network.
         Starting Network Name Resolution...
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttyPS1.
[  OK  ] Reached target Login Prompts.
[  OK  ] Started OpenSSH Daemon.
[  OK  ] Started Network Name Resolution.
[  OK  ] Reache
Arch Linux 4.0.0-zybo-quadcopter-00007-g5dab41c-dirty (ttyPS1)

alarm login: root
Password:
Last login: Thu Jan 28 14:11:42 on ttyPS1
[root@alarm ~]# mount /dev/mmcblk0p1 /mnt/
[root@alarm ~]# cd /mnt/devmem/
[root@alarm devmem]# ./devmem 0xfffffff0 w 0x18000000 &
[1] 1090
/dev/mem opened.
Memory mapped at address 0xb6f5f000.
Value at aUnable to handle kernel NULL pointer dereference astart
Display init success.
display start entered
CrBits=1
Is CrBits correct? 04th error
Couldn't start display during demo initialization1

**************************************************
*                ZYBO Video Demo                 *
**************************************************
*Display Resolution:                 640x480@60Hz*
*Display Pixel Clock Freq. (MHz):          25.000*
*Display Frame Index:                           0*
*Video Capture Resolution:       !HDMI UNPLUGGED!*
*Video Frame Index:                             0*
**************************************************

1 - Change Display Resolution
2 - Change Display Framebuffer Index
3 - Print Blended Test Pattern to Display Framebuffer
4 - Print Color Bar Test Pattern to Display Framebuffer
5 - Start/Stop Video stream into Video Framebuffer
6 - Change Video Framebuffer Index
7 - Grab Video Frame and invert colors
8 - Grab Video Frame and scale to Display resolution
q - Quit


Enter a selection:t virtual address 00000000
m  OK  ] ed.
Memory mapped at address 0xb6f5f000.
Value atpgd = c0004000
 address 0xFFFFFFF0 (0xb6f5fff0): 0xFFFFFF2C
Written 0x18000000[00000000] *pgd=00000000; readback 0x18000000

Internal error: Oops - BUG: 17 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 1090 Comm: bash Not tainted 4.0.0-zybo-quadcopter-00007-g5dab41c-dirty #2
Hardware name: Xilinx Zynq Platform
task: d79d5580 ti: d5ed6000 task.ti: d5ed6000
PC is at unlink_anon_vmas+0x34/0x170
LR is at unlink_anon_vmas+0xa8/0x170
pc : [<c00a7ccc>]    lr : [<c00a7d40>]    psr: 800d0013
sp : d5ed7e90  ip : 000b6f70  fp : 00200200
r10: d5d5d058  r9 : d5ecd500  r8 : 00000000
r7 : d5ecd53c  r6 : d5ef4a00  r5 : d5d5d058  r4 : d5ecd694
r3 : d5ecd69c  r2 : 00000041  r1 : 00000040  r0 : d7800ec0
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 18c5387d  Table: 15fe804a  DAC: 00000015
Process bash (pid: 1090, stack limit = 0xd5ed6210)
Stack: (0xd5ed7e90 to 0xd5ed8000)
7e80:                                     b6f30000 d5ecd500 d5ecd3f8 d5ed7ee8
7ea0: 00002000 00000000 b6df4000 d5ecd768 00000000 c009e618 b6df4000 d5ecd818
7ec0: d5ecd818 d5ed7f10 d79d5998 d5ed7f60 00000001 d7ac85bc 00000000 c00a46d0
7ee0: 00000000 d5ecd450 d7ac8580 00000001 00000000 00000000 ffffffff 18c5387d
7f00: 00000000 00000104 00000400 d787b000 00000000 00000000 00000400 d787b000
7f20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7f40: 00000000 00000000 d5ed6000 00000000 bef9dcac c00973a4 00000022 000b6f5a
7f60: 00000020 00000000 d79d5988 d7bd9700 00000000 00000000 000000f8 c000de24
7f80: d5ed6000 00000000 00000000 c00230a0 00000001 00000000 b6f2d75c c00230dc
7fa0: 00000000 c000dca0 00000001 00000000 00000000 00000000 00000000 00000000
7fc0: 00000001 00000000 b6f2d75c 000000f8 b6f300ac 00000000 b6f62fb4 00000000
7fe0: 00000000 bef29848 b6db8d34 b6db7664 80010010 ffffffff 00000000 00000000
[<c00a7ccc>] (unlink_anon_vmas) from [<c009e618>] (free_pgtables+0x5c/0xa4)
[<c009e618>] (free_pgtables) from [<c00a46d0>] (exit_mmap+0xd4/0x1b8)
[<c00a46d0>] (exit_mmap) from [<00000000>] (  (null))
Code: e2843008 e1570003 0a000021 e5948004 (e598a000)
---[ end trace 1de97e60af27e59b ]---
Fixing recursive fault but reboot is needed!
Unable to handle kernel NULL pointer dereference at virtual address 00000028
pgd = c0004000
[00000028] *pgd=00000000
Internal error: Oops - BUG: 17 [#2] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 1090 Comm: bash Tainted: G      D         4.0.0-zybo-quadcopter-00007-g5dab41c-dirty #2
Hardware name: Xilinx Zynq Platform
task: d79d5580 ti: d5ed6000 task.ti: d5ed6000
PC is at __schedule+0x248/0x484
LR is at __schedule+0x1d4/0x484
pc : [<c047c8e0>]    lr : [<c047c86c>]    psr: 600d0193
sp : d5ed7c60  ip : 00000000  fp : d5ed7c8c
r10: c00a7ccc  r9 : c06939ec  r8 : 00000000
r7 : 00000000  r6 : d78e79c0  r5 : c0693730  r4 : d7ccf740
r3 : 00000028  r2 : 000032d5  r1 : c068e000  r0 : 00000000
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 18c5387d  Table: 15fe804a  DAC: 00000015
Process bash (pid: 1090, stack limit = 0xd5ed6210)
Stack: (0xd5ed7c60 to 0xd5ed8000)
7c60: c0694844 c00a7ccc d5ed7cfb c004f29c d5ed6000 0000000b c00a7cce 00000000
7c80: d5ed7d2a c0694844 d5ed7c9c c047cbbc d79d5580 d79d5580 d5ed7cfb c0021b88
7ca0: d5ed7cfb c004f29c c05a3ece d5ed7ccc 00000000 c0479e54 00000002 c06c5ac4
7cc0: 0000000b c00a7cce 00000000 d5ed7d2a c0694844 c00a7ccc d5ed7cfb c001100c
7ce0: d5ed6210 0000000b bf000000 00000008 600d0113 00000000 65000000 33343832
7d00: 20383030 37353165 33303030 30613020 32303030 35652031 30383439 28203430
7d20: 38393565 30303061 c0002029 d5ed7d4c 00000000 00000000 00000017 d5ed7e48
7d40: 00000000 d79d5580 00000000 00000017 00200200 c0479bb4 d5ed7e48 c0019918
7d60: ffffffff 00000000 c06c4a80 c0087fa4 000001c1 00014449 c06c4a80 c0089e94
7d80: 15789e7e 00000017 00000000 c0694d64 d5ed7e48 00000000 d5ecd500 d5d5d058
7da0: 00200200 c000847c 00000000 00000000 00000000 00000000 00000000 00000000
7dc0: d5ed7dec 170d459f 000170d4 c00ad0ec 00000012 c001a19c 00000103 170d459f
7de0: d7cef4d8 d7fd1a80 00000000 00000000 c06c4a80 c0087fa4 00000141 00014449
7e00: c06c4a80 c0089e94 00000141 00000000 c06c5744 00000000 00000000 0000009b
7e20: 00000001 d7cd2180 00020200 d7fe0f74 ffffffff c00a7ccc 800d0013 ffffffff
7e40: d5ed7e7c c0011698 d7800ec0 00000040 00000041 d5ecd69c d5ecd694 d5d5d058
7e60: d5ef4a00 d5ecd53c 00000000 d5ecd500 d5d5d058 00200200 000b6f70 d5ed7e90
7e80: c00a7d40 c00a7ccc 800d0013 ffffffff b6f30000 d5ecd500 d5ecd3f8 d5ed7ee8
7ea0: 00002000 00000000 b6df4000 d5ecd768 00000000 c009e618 b6df4000 d5ecd818
7ec0: d5ecd818 d5ed7f10 d79d5998 d5ed7f60 00000001 d7ac85bc 00000000 c00a46d0
7ee0: 00000000 d5ecd450 d7ac8580 00000001 00000000 00000000 ffffffff 18c5387d
7f00: 00000000 00000104 00000400 d787b000 00000000 00000000 00000400 d787b000
7f20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
7f40: 00000000 00000000 d5ed6000 00000000 bef9dcac c00973a4 00000022 000b6f5a
7f60: 00000020 00000000 d79d5988 d7bd9700 00000000 00000000 000000f8 c000de24
7f80: d5ed6000 00000000 00000000 c00230a0 00000001 00000000 b6f2d75c c00230dc
7fa0: 00000000 c000dca0 00000001 00000000 00000000 00000000 00000000 00000000
7fc0: 00000001 00000000 b6f2d75c 000000f8 b6f300ac 00000000 b6f62fb4 00000000
7fe0: 00000000 bef29848 b6db8d34 b6db7664 80010010 ffffffff 00000000 00000000
[<c047c8e0>] (__schedule) from [<c047cbbc>] (schedule+0xa0/0xb0)
[<c047cbbc>] (schedule) from [<c0021b88>] (do_exit+0xa8/0x7d8)
[<c0021b88>] (do_exit) from [<c001100c>] (die+0x2ac/0x3a4)
[<c001100c>] (die) from [<c0479bb4>] (__do_kernel_fault.part.10+0x54/0x74)
[<c0479bb4>] (__do_kernel_fault.part.10) from [<c0019918>] (do_page_fault+0x2a8/0x320)
[<c0019918>] (do_page_fault) from [<c000847c>] (do_DataAbort+0x34/0xb4)
[<c000847c>] (do_DataAbort) from [<c0011698>] (__dabt_svc+0x38/0x60)
Exception stack(0xd5ed7e48 to 0xd5ed7e90)
7e40:                   d7800ec0 00000040 00000041 d5ecd69c d5ecd694 d5d5d058
7e60: d5ef4a00 d5ecd53c 00000000 d5ecd500 d5d5d058 00200200 000b6f70 d5ed7e90
7e80: c00a7d40 c00a7ccc 800d0013 ffffffff
[<c0011698>] (__dabt_svc) from [<c00a7ccc>] (unlink_anon_vmas+0x34/0x170)
[<c00a7ccc>] (unlink_anon_vmas) from [<c009e618>] (free_pgtables+0x5c/0xa4)
[<c009e618>] (free_pgtables) from [<c00a46d0>] (exit_mmap+0xd4/0x1b8)
[<c00a46d0>] (exit_mmap) from [<00000000>] (  (null))
Code: 1a000008 e58671b4 e2873028 f593f000 (e1932f9f)
---[ end trace 1de97e60af27e59c ]---
Fixing recursive fault but reboot is needed!

Also the entire platform can be found at: Dropbox-link

 

Thanks for any help...

 

0 Kudos
Highlighted
Adventurer
Adventurer
16,522 Views
Registered: ‎03-15-2011

Re: HDMI access from linux

Jump to solution

Hi all

 

I found out it was a combination of things:

Device tree was locking my clocks (all but main clock)

Device tree had some issues with interrupts

My linux core was handling all interrupts although I wanted the bare-metal core to handle some of them. (had to alter the GIC on the bare metal core).

Tags (4)