I'm using EZSDK for DM814x EVM 5_03_01_15. I ran "load-hd-firmware.sh start", export gstreamer environment variables, and then ran the following gst pipeline:
# gst-launch -v filesrc location=boat.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! 'video/x-raw-yuv,width=800,height=480' ! omx_ctrl display-device=LCD ! omx_videosink sync=false display-device=LCD
The video can be displayed on the LCD correctly. However, when I ran "load-hd-firmware.sh stop", the following kernel error occurred:
Unloading HDVICP2 Firmware
FIRMWARE: Memory map bin file not passed
Usage : firmware_loader <Processor Id> <Location of Firmware> <start|stop> [Location of Mem map bin file]
FIRMWARE: Default memory configuration is used
MemCfg: DCMM (Dynamically Configurable Memory Map) Version : 2.1.1.1
FIRMWARE: Memory Configuration status : In Progress
FIRMWARE: 1 stop Successful
Unloading HDVPSS Firmware
FIRMWARE: Memory map bin file not passed
Usage : firmware_loader <Processor Id> <Location of Firmware> <start|stop> [Location of Mem map bin file]
FIRMWARE: Default memory configuration is used
MemCfg: DCMM (Dynamically Configurable Memory Map) Version : 2.1.1.1
FIRMWARE: Memory Configuration status : In Progress
FIRMWARE: 2 stop Successful
Unable to handle kernel paging request at virtual address d09d101c
pgd = c72cc000
[d09d101c] *pgd=870cd011, *pte=00000000, *ppte=00000000
Internal error: Oops: 7 [#1]
last sysfs file: /sys/devices/platform/ti81xxfb/graphics/fb0/dev
Modules linked in: syslink(-) [last unloaded: vpss]
CPU: 0 Not tainted (2.6.37 #3)
PC is at GateMP_close+0x38/0xbc [syslink]
LR is at GateMP_close+0x34/0xbc [syslink]
pc : [<bf15cbd4>] lr : [<bf15cbd0>] psr: 80000013
sp : c65e1e60 ip : 00000000 fp : c65e1e7c
r10: 00000000 r9 : c65e0000 r8 : 00000000
r7 : d1a38000 r6 : d1a3b030 r5 : d1a3b00c r4 : 0000ffff
r3 : d09d1000 r2 : d1a3b00c r1 : 00050000 r0 : bf1c16e5
Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c5387d Table: 872cc019 DAC: 00000015
Process rmmod (pid: 658, stack limit = 0xc65e02e8)
Stack: (0xc65e1e60 to 0xc65e2000)
1e60: d1a3b000 d09d1000 0000ffff d1a3b000 c65e1eac c65e1e80 bf1617a4 bf15cba8
1e80: bf147144 bf13b5e8 00000000 0000ffff d1a3b000 00000000 00000880 c0044f48
1ea0: c65e1ed4 c65e1eb0 bf162b3c bf1615cc bf20be98 bf20c0d4 00000880 00000224
1ec0: bf20be98 bf20c0d4 c65e1efc c65e1ed8 bf12cc78 bf162a48 c04dc5a8 00000007
1ee0: c65e1fb0 bf20c0d4 bf20bcac c65e1f3c c65e1f1c c65e1f00 bf15e254 bf12c954
1f00: 00000000 c7028948 bf20bdd0 bf20bcac c65e1f34 c65e1f20 bf198794 bf15e1ec
1f20: 00000000 bf20bcac c65e1fa4 c65e1f38 c00978cc bf19878c c00b822c 6c737973
1f40: 006b6e69 c65e1f50 c008728c c71a0a84 00000000 c71a0ab4 00000ff6 4009f000
1f60: c0044f48 00000000 c65e1f84 c65e1f78 c008728c 001b39c4 bf20bcac 00000880
1f80: c65e1f84 00000000 0001979c 6c737973 006b6e69 00000081 00000000 c65e1fa8
1fa0: c0044da0 c0097708 0001979c 6c737973 be9c6a48 00000880 00000000 00000000
1fc0: 0001979c 6c737973 006b6e69 00000081 000000a5 00000000 4010e000 00000000
1fe0: be9c6a40 be9c6a30 0001951c 401f3740 60000010 be9c6a48 e59fc07c e58dc004
Backtrace:
[<bf15cb9c>] (GateMP_close+0x0/0xbc [syslink]) from [<bf1617a4>] (HeapMemMP_close+0x1e4/0x2d4 [syslink])
r5:d1a3b000 r4:0000ffff
[<bf1615c0>] (HeapMemMP_close+0x0/0x2d4 [syslink]) from [<bf162b3c>] (HeapMemMP_destroy+0x100/0x20c [syslink])
r8:c0044f48 r7:00000880 r6:00000000 r5:d1a3b000 r4:0000ffff
[<bf162a3c>] (HeapMemMP_destroy+0x0/0x20c [syslink]) from [<bf12cc78>] (Platform_destroy+0x330/0x788 [syslink])
r6:bf20c0d4 r5:bf20be98 r4:00000224
[<bf12c948>] (Platform_destroy+0x0/0x788 [syslink]) from [<bf15e254>] (Ipc_destroy+0x74/0xf4 [syslink])
r6:c65e1f3c r5:bf20bcac r4:bf20c0d4
[<bf15e1e0>] (Ipc_destroy+0x0/0xf4 [syslink]) from [<bf198794>] (KnlUtilsDrv_finalizeModule+0x14/0xb8 [syslink])
r5:bf20bcac r4:bf20bdd0
[<bf198780>] (KnlUtilsDrv_finalizeModule+0x0/0xb8 [syslink]) from [<c00978cc>] (sys_delete_module+0x1d0/0x23c)
r5:bf20bcac r4:00000000
[<c00976fc>] (sys_delete_module+0x0/0x23c) from [<c0044da0>] (ret_fast_syscall+0x0/0x30)
r7:00000081 r6:006b6e69 r5:6c737973 r4:0001979c
Code: e50bc018 e5900000 ebff7a82 e51b3018 (e593301c)
---[ end trace eb3be8e08c5fb8fa ]---
Segmentation fault
The content of load-hd-firmware.sh is as follow:
#!/bin/sh
#
# manage HDVICP2 and HDVPSS Engine firmware
PATH=$PATH:/opt/target
HDVICP2_ID=1
HDVPSS_ID=2
configure_lcd()
{
echo "Configuring fb0 to LCD"
echo 1:dvo2 > /sys/devices/platform/vpss/graphics0/nodes
echo 0 > /sys/devices/platform/vpss/display1/enabled
echo 33500,800/164/89/10,480/10/23/10,1 > /sys/devices/platform/vpss/display1/timings
echo triplediscrete,rgb888 > /sys/devices/platform/vpss/display1/output
echo 1 > /sys/devices/platform/vpss/display1/enabled
fbset.real -xres 800 -yres 480 -vxres 800 -vyres 480
}
case "$1" in
start)
echo "Loading HDVICP2 Firmware"
prcm_config_app s
insmod syslink.ko
until [[ -e /dev/syslinkipc_ProcMgr && -e /dev/syslinkipc_ClientNotifyMgr ]]
do
sleep 0.5
done
firmware_loader $HDVICP2_ID dm814x_hdvicp.xem3 start
echo "Loading HDVPSS Firmware"
firmware_loader $HDVPSS_ID dm814x_hdvpss.xem3 start
insmod vpss.ko sbufaddr=0xBFB00000 i2c_mode=1
insmod ti81xxfb.ko
configure_lcd
;;
stop)
echo "Unloading HDVICP2 Firmware"
firmware_loader $HDVICP2_ID dm814x_hdvicp.xem3 stop
echo "Unloading HDVPSS Firmware"
rmmod ti81xxfb
rmmod vpss
firmware_loader $HDVPSS_ID dm814x_hdvpss.xem3 stop
rm /tmp/firmware.$HDVPSS_ID
rmmod syslink
;;
*)
echo "Usage: /etc/init.d/load-hd-firmware.sh {start|stop}"
exit 1
;;
esac
exit 0
My bootargs is setenv bootargs 'root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttyO0,115200n8 init=linuxrc vram=50M notifyk.vpssm3_sva=0xBF900000 mem=176M earlyprintk', which is referenced from the memory map wiki page. The DDR I use is 512M.
I think the problem is related to gst-openmax implementation. If I run "load-hd-firmware.sh start" and run "load-hd-firmware.sh stop" just right after the previous command, there is no error occurs.
I have run "load-hd-firmware.sh start" and "38xx-demo" to install OpenGL ES2 related modules and libraries. I successfully executed the OpenGLES2 demos and when I ran "load-hd-firmware.sh stop", there is no error.
Could someone point me the key reason of the problem? It does not affect the execution of the demos, but there may be issues if we provide it to customer.
Thanks in advance.