Hi All,
I'm working with the following hw and sw components:
Hardware: Z3-DM8168-APP-02 (RPS), DRAM: 1 GiB (http://www.z3technology.com/Z3-DM8168-MOD.htm)
Software: EZSDK 5.02.00.57: (http://software-dl.ti.com/dsps/dsps_public_sw/ezsdk/5_02_00_57/index_FDS.html )
Problem:
I have been able to built and install properly the whole EZSDK in the DM8168-Z3 module, including OpenMax demos to encode and display H264. However, when I try to load the VPSS firmware called dm816x_hdvpss.xem3 using the EZSDK media-controller utility called firmware_loader, it hangs for a while (5 to 10minutes) and then it shows a message saying that the VPSS has started successfully. I have tested the same kernel image on the DM8168-EVM and it loads the firmware in less than 10 seconds, I was wondering what might be causing this problem in the Z3 module. Moreover, there is not time difference between the EVM and the Z3 loading the firmware into the HDVICP2.
According with other post (http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/98209.aspx) I suspect that I might be due to differences between the daughter card and the Z3-DM8168-RPS hw. If so, does anybody know how to modify the dm816x_hdvpss.xem3 firmware to reduce the load time in the Z3 hw?
I have set the memory map according with the EZSDK memory map webpage (
http://processors.wiki.ti.com/index.php/EZSDK_Memory_Map)
These are my bootargs:
console=ttyO2,115200n8 notifyk.vpssm3_sva=0xBF900000 root=/dev/nfs nfsroot=<myIPAddress>:<pathOfMyNFS> rw ip=dhcp mem=256M
These are the steps that I'm following to load the firmware into the VPSS M3:
modprobe syslink TRACE=1 TRACEFAILURE=1
firmware_loader 2 /lib/firmware/dm816x_hdvpss.xem3 start /lib/firmware/mm_dm81xxbm.bin (5 to 10minutes to load the firmware)
firmware_loader 1 /lib/firmware/dm816x_hdvicp.xem3 start /lib/firmware/mm_dm81xxbm.bin (less than 10sec to load the firmware)
modprobe vpss sbufaddr=0xBFB00000 i2c_mode=1
modprobe ti81xxfb
modprobe ti81xxhdmi
rmmod ti81xxvo
Once this has been done, the decode_display demo provided in the EZSDK runs without errors, however I'm not able to run the encode demo:
/ # echo 0 > /sys/devices/platform/vpss/graphics0/enabled
/ # echo 0 > /sys/devices/platform/vpss/graphics1/enabled
/ # echo 0 > /sys/devices/platform/vpss/graphics2/enabled
/ # ./omx/capture_encode_a8host_debug.xv5T -o sample.h264 -m 720 -f 60 -b 1000000 -n 1000
output file: sample.h264
bit_rate: 1000000
frame_rate: 60
num_frames: 1000
mode: 720
Capture-Encode example
===============================
OMX_Init completed
UIAClient is ready to send a UIA configuration command
UIAClient received UIA_CONFIGURE_ACK
UIAClient is done sending requests
UIAClient is ready to send a UIA configuration command
UIAClient received UIA_CONFIGURE_ACK
UIAClient is done sending requests
openeing file
capture compoenent is created
control TVP compoenent is created
Buffer Size computed: 0
set input port params (width = 0, height = 0)enable capture output port
got eventEnable/Disable Event
dei compoenent is created
set input port params (width = 0, height = 0)
set output port params (width = 0, height = 0)set output port params (width = 0, height = 0)set number of channelsset input resolutionset output resolutionenable dei input port
got eventEnable/Disable Event
enable dei output port 0
got eventEnable/Disable Event
enable dei output port 1
got eventEnable/Disable Event
encoder compoenent is created
found handle 0x122048 for component OMX.TI.VPSSM3.VFDC
got display handle
found handle 0x125b50 for component OMX.TI.VPSSM3.CTRL.DC
Buffer Size computed: 0
set input port params (width = 0, height = 0)setting input and output memory type to defaultenable input port
got eventEnable/Disable Event
connect call for capture-Dei
connect call for dei- encoder
connect call for dei-display
<No more output>
This is the output when I load the firmware into the VPSS:
MemCfg: DCMM (Dynamically ConfigNameServer Module already initialized!
urable Memory MaSharedRegion Module already initialized!
p) Version : 2.GateMP Module already initialized!
1.1.1
MessageQ Module already initialized!
HeapBufMP Module already initialized!
HeapMemMP Module already initialized!
ListMP Module already initialized!
ClientNotifyMgr Module already initialized!
FrameQBufMgr Module already initialized!
FrameQ Module already initialized!
ProcMgr_getProcInfo: bootMode: [0]
MemoryOS_map: pa=0x48180000, va=0xfa180000, sz=0x2fff
MemoryOS_map: pa=0x55080000, va=0xf9080000, sz=0xfff
MemoryOS_map: pa=0x55020000, va=0xf9020000, sz=0x8
DM8168VPSSM3PROC_attach: Mapping memory regions
MemoryOS_map: pa=0x55020004, va=0xf9020004, sz=0x4
MemoryOS_map: entry already exists
mapInfo->src [0x48180000]
mapInfo->dst [0xfa180000]
mapInfo->size [0x2fff]
DM8168VPSSM3PROC_attach: slave is now in reset
MemoryOS_map: entry already exists
mapInfo->src [0x55020000]
mapInfo->dst [0xf9020000]
mapInfo->size [0x4000]
MemoryOS_map: pa=0x55024000, va=0xf9024000, sz=0x3c000
MemoryOS_map: pa=0x40300000, va=0xd4e80000, sz=0x40000
_ProcMgr_map for SlaveVirt:
dstAddr [0x300000]
sgList.paddr [0x40300000]
sgList.offset [0x0]
sgList.size [0x40000]
DM8168VPSSM3PROC_map: found static entry: [2] sva=0x300000, mpa=0x40300000 size=0x40000
MemoryOS_map: pa=0x40400000, va=0xd4f00000, sz=0x40000
_ProcMgr_map for SlaveVirt:
dstAddr [0x400000]
sgList.paddr [0x40400000]
sgList.offset [0x0]
sgList.size [0x40000]
DM8168VPSSM3PROC_map: found static entry: [3] sva=0x400000, mpa=0x40400000 size=0x40000
ProcMgr_getProcInfo: bootMode: [0]
DLOAD: ELF: ELF
DLOAD: ELF file header entry point: 9f5ce2c5
DM8168VPSSM3PROC_translate: translated [0] srcAddr=0x0 --> dstAddr=0x55020000
ElfLoaderTrgWrite_copy: translated 0x0 (sva) --> 0x55020000 (mpa)
MemoryOS_map: entry already exists
mapInfo->src [0x55020000]
mapInfo->dst [0xf9020000]
mapInfo->size [0x3c]
_ProcMgr_map for SlaveVirt:
dstAddr [0x0]
sgList.paddr [0x55020000]
sgList.offset [0x0]
sgList.size [0x3c]
DM8168VPSSM3PROC_map: found static entry: [0] sva=0x0, mpa=0x55020000 size=0x4000
DM8168VPSSM3PROC_translate: translated [0] srcAddr=0x7f0 --> dstAddr=0x550207f0
ElfLoaderTrgWrite_copy: translated 0x7f0 (sva) --> 0x550207f0 (mpa)
MemoryOS_map: pa=0x550207f0, va=0xf90207f0, sz=0x10
_ProcMgr_map for SlaveVirt:
dstAddr [0x0]
sgList.paddr [0x55020000]
sgList.offset [0x7f0]
sgList.size [0x800]
DM8168VPSSM3PROC_map: found static entry: [0] sva=0x0, mpa=0x55020000 size=0x4000
DM8168VPSSM3PROC_translate: translated [0] srcAddr=0x800 --> dstAddr=0x55020800
ElfLoaderTrgWrite_copy: translated 0x800 (sva) --> 0x55020800 (mpa)
MemoryOS_map: pa=0x55020800, va=0xf9020800, sz=0x140
_ProcMgr_map for SlaveVirt:
dstAddr [0x0]
sgList.paddr [0x55020000]
sgList.offset [0x800]
sgList.size [0x940]
DM8168VPSSM3PROC_map: found static entry: [0] sva=0x0, mpa=0x55020000 size=0x4000
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9e700000 --> dstAddr=0x9e700000
ElfLoaderTrgWrite_copy: translated 0x9e700000 (sva) --> 0x9e700000 (mpa)
MemoryOS_map: pa=0x9e700000, va=0xd7000000, sz=0xa1e0c8
_ProcMgr_map for SlaveVirt:
dstAddr [0x9e700000]
sgList.paddr [0x9e700000]
sgList.offset [0x0]
sgList.size [0xa1e0c8]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f11e0c8 --> dstAddr=0x9f11e0c8
ElfLoaderTrgWrite_copy: translated 0x9f11e0c8 (sva) --> 0x9f11e0c8 (mpa)
MemoryOS_map: pa=0x9f11e0c8, va=0xd4ec80c8, sz=0x1f38
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f11e000]
sgList.paddr [0x9f11e000]
sgList.offset [0xc8]
sgList.size [0x2000]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f120000 --> dstAddr=0x9f120000
ElfLoaderTrgWrite_copy: translated 0x9f120000 (sva) --> 0x9f120000 (mpa)
MemoryOS_map: pa=0x9f120000, va=0xd6600000, sz=0x17ea0e
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f120000]
sgList.paddr [0x9f120000]
sgList.offset [0x0]
sgList.size [0x17ea0e]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f29ea10 --> dstAddr=0x9f29ea10
ElfLoaderTrgWrite_copy: translated 0x9f29ea10 (sva) --> 0x9f29ea10 (mpa)
MemoryOS_map: pa=0x9f29ea10, va=0xd4ed0a10, sz=0x30
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f29e000]
sgList.paddr [0x9f29e000]
sgList.offset [0xa10]
sgList.size [0xa40]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f29ea40 --> dstAddr=0x9f29ea40
ElfLoaderTrgWrite_copy: translated 0x9f29ea40 (sva) --> 0x9f29ea40 (mpa)
MemoryOS_map: pa=0x9f29ea40, va=0xd6500a40, sz=0xc1800
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f29e000]
sgList.paddr [0x9f29e000]
sgList.offset [0xa40]
sgList.size [0xc2240]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f360240 --> dstAddr=0x9f360240
ElfLoaderTrgWrite_copy: translated 0x9f360240 (sva) --> 0x9f360240 (mpa)
MemoryOS_map: pa=0x9f360240, va=0xd4ee0240, sz=0xd079
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f360000]
sgList.paddr [0x9f360000]
sgList.offset [0x240]
sgList.size [0xd2b9]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f36d2bc --> dstAddr=0x9f36d2bc
ElfLoaderTrgWrite_copy: translated 0x9f36d2bc (sva) --> 0x9f36d2bc (mpa)
MemoryOS_map: pa=0x9f36d2bc, va=0xd4ef02bc, sz=0x4000
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f36d000]
sgList.paddr [0x9f36d000]
sgList.offset [0x2bc]
sgList.size [0x42bc]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f371300 --> dstAddr=0x9f371300
ElfLoaderTrgWrite_copy: translated 0x9f371300 (sva) --> 0x9f371300 (mpa)
MemoryOS_map: pa=0x9f371300, va=0xd4ef8300, sz=0x34
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f371000]
sgList.paddr [0x9f371000]
sgList.offset [0x300]
sgList.size [0x334]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f500000 --> dstAddr=0x9f500000
ElfLoaderTrgWrite_copy: translated 0x9f500000 (sva) --> 0x9f500000 (mpa)
MemoryOS_map: pa=0x9f500000, va=0xd6800000, sz=0xd3afa
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f500000]
sgList.paddr [0x9f500000]
sgList.offset [0x0]
sgList.size [0xd3afa]
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f5d3afc --> dstAddr=0x9f5d3afc
ElfLoaderTrgWrite_copy: translated 0x9f5d3afc (sva) --> 0x9f5d3afc (mpa)
MemoryOS_map: pa=0x9f5d3afc, va=0xd4f42afc, sz=0x200
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f5d3000]
sgList.paddr [0x9f5d3000]
sgList.offset [0xafc]
sgList.size [0xcfc]
DM8168VPSSM3PROC_translate: (default) srcAddr=0xbfd00000 --> dstAddr=0xbfd00000
ElfLoaderTrgWrite_copy: translated 0xbfd00000 (sva) --> 0xbfd00000 (mpa)
MemoryOS_map: pa=0xbfd00000, va=0xd6a00000, sz=0x168ec0
_ProcMgr_map for SlaveVirt:
dstAddr [0xbfd00000]
sgList.paddr [0xbfd00000]
sgList.offset [0x0]
sgList.size [0x168ec0]
DM8168VPSSM3PROC_translate: (default) srcAddr=0xbfe69000 --> dstAddr=0xbfe69000
ElfLoaderTrgWrite_copy: translated 0xbfe69000 (sva) --> 0xbfe69000 (mpa)
MemoryOS_map: pa=0xbfe69000, va=0xd4f60000, sz=0xf060
_ProcMgr_map for SlaveVirt:
dstAddr [0xbfe69000]
sgList.paddr [0xbfe69000]
sgList.offset [0x0]
sgList.size [0xf060]
DM8168VPSSM3PROC_translate: (default) srcAddr=0xbfe78200 --> dstAddr=0xbfe78200
ElfLoaderTrgWrite_copy: translated 0xbfe78200 (sva) --> 0xbfe78200 (mpa)
MemoryOS_map: pa=0xbfe78200, va=0xd4f80200, sz=0x16c20
_ProcMgr_map for SlaveVirt:
dstAddr [0xbfe78000]
sgList.paddr [0xbfe78000]
sgList.offset [0x200]
sgList.size [0x16e20]
ElfLoader_getSymbolAddress: symName [_Ipc_ResetVector]
ProcMgr_translateAddr: srcAddr [0x9f371300] dstAddr [0x9f371300]
ProcMgr_translateAddr: srcAddr [0x9f371300] dstAddr [0xd4ef8300]
ProcMgr_translateAddr: srcAddr [0x9f37131c] dstAddr [0x9f37131c]
ProcMgr_translateAddr: srcAddr [0x9f37131c] dstAddr [0xd4ef831c]
handle->slaveSRCfg [0].entryBase 9f700000
DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f700000 --> dstAddr=0x9f700000
Platform_loadCallback:
No SharedRegion.entry[0].cacheEnable configuration value found, using default FALSE
Platform_loadCallback:
Mapping SharedRegion 0
addr [ProcMgr_AddrType_MasterPhys] [0x9f700000]
addr [ProcMgr_AddrType_SlaveVirt] [0x9f700000]
size [0x200000]
isCached [0]
MemoryOS_map: pa=0x9f700000, va=0xd6c00000, sz=0x200000
_ProcMgr_map for SlaveVirt:
dstAddr [0x9f700000]
sgList.paddr [0x9f700000]
sgList.offset [0x0]
sgList.size [0x200000]
ProcMgr_translateAddr: srcAddr [0x9f371300] dstAddr [0x9f371300]
ProcMgr_translateAddr: srcAddr [0x9f371300] dstAddr [0xd4ef8300]
DM8168VPSSM3PROC_start: Configuring boot register
Reset vector [0x9f5ce2c5]!
DM8168VPSSM3PROC_start: Slave successfully started!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
Ipc_attach: Ipc_procSyncStart failed!
..... More of these messages
Ipc_attach: Ipc_procSyncStart failed!
NameServer_getLocal name [uiaMaster]
NameServer_getLocal: Entry not found!
Notify: Termination packet
FIRMWARE: 2 start Successful
If you have some ideas about what could be wrong with this they will be really appreciated...
Thanks