This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Good day. I see syslink assertion error after loading xem3 hdvicp firmware on my custom board. Here's part of dmesg log:
notify_init : notify drivercreated for remote proc id 2 at physical Address 0xbf900000
SysLink version : 2.20.02.20
SysLink module created on Date:Oct 25 2016 Time:14:49:23
Assertion at Line no: 452 in /opt/ezsdk_clean/component-sources/syslink_2_20_02_20/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/Linux/SharedRegionDrv.c: (status >= 0) : failed
Here's the script sequence I use. Based on load-hd-firmware.sh:
./prcm_config_app s
insmod notifyk.ko vpssm3_sva=0xbf900000
insmod syslink.ko
./firmware_loader 1 dm816x_hdvicp.xem3 start -mmap mm_dm81xxbm.bin -i2c 0
EZSDK ver is 05.02.00.60. Syslink is built from ezsdk sources. Also I changed ezsdk memory map as my board has 512 MB RAM: reduced framebuffers size to give linux more memory. I set IPC_SR_FRAME_BUFFERS addr to 0xB1C00000 and size=80MB (0x05000000). The rest memory map is left unchanged. OMX library has been rebuilt. Also made new mm_dm81xxbm.bin. Followed this manual: processors.wiki.ti.com/.../EZSDK_Memory_Map
I got kernel panic when I put notify vpssm3_sva=0xbf900000 in the bootargs. Many messages saying that vpss is trying to communicate via notify_send. To fix it I built syslink with [M] flag and load notifyk.ko and syslink manually. This is quite weird for me as vpss video driver guide states that syslink must be built as [*]. Used this one - processors.wiki.ti.com/.../DM816X_AM389X_VPSS_Video_Driver_User_Guide_PSP_04.00.00.12
What am I doing wrong and how to resolve that error? I'm still able to run gstreamer pipelines with omx_h264enc. It works. Also sys_top shows hdvicp memory correctly.
Linux, syslink, omx, gstomx are built from sources coming with ezsdk package.
memtbl_cfg.h and memsegdef are attached.
/* * Copyright (c) 2010-2011, Texas Instruments Incorporated * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Contact information for paper mail: * Texas Instruments * Post Office Box 655303 * Dallas, Texas 75265 * Contact information: * http://www-k.ext.ti.com/sc/technical-support/product-information-centers.htm? * DCMP=TIHomeTracking&HQS=Other+OT+home_d_contact * ============================================================================ * */ /** * @file memsegdef.c * * @brief Memory map segment definitions, This is auto generated file * * * * @ver 0.1 * * ============================================================================ */ /*----------------------------- Memory Segment configuration -----------------*/ #include <ldr_memseg.h> uint32_t ldrmemcfg_ddrSize = LDR_DDR_SIZE_1G ; LDR_MemSeg sdk_memseg[] = { /* Segment 0 */ { 1, /* valid */ "IPC_SR_VIDEO_M3_VPSS_M3", /* name */ 0x00100000, /* size */ LDR_SEGMENT_TYPE_DYNAMIC_SHARED_HEAP, /* LDR_SEGMENT_TYPE_DYNAMIC_SHARED_HEAP, seg_type */ 0, /* flags */ 0x9A100000, /* system_addr */ 0x9A100000, /* slave_virtual_addr */ LDR_CORE_ID_VM3, /* master_core_id */ ((1 << LDR_CORE_ID_VM3) | (1 << LDR_CORE_ID_DM3) | (1 << LDR_CORE_ID_A8)), /* core_id_mask */ ((1 << LDR_CORE_ID_VM3) | (1 << LDR_CORE_ID_DM3)), /* cache_enable_mask */ 0, /* cache_operation_mask */ 1 /* shared_region_id */ }, /* Segment 1 , Temporarily used by VFPC internal buff heap */ { 1, /* valid */ "VPSS_M3_INT_HEAP_CACHED", /* name */ 0x01B00000, /* size */ LDR_SEGMENT_TYPE_DYNAMIC_LOCAL_HEAP, /* seg_type */ 0, /* flags */ 0x9A200000, /* system_addr */ 0x9A200000, /* slave_virtual_addr */ -1, /* master_core_id */ (1 << LDR_CORE_ID_DM3), /* core_id_mask */ 0, /* cache_enable_mask */ 0, /* cache_operation_mask */ -1 /* shared_region_id */ }, /* Segment 2 , Temporarily used by VFPC internal buff heap */ { 1, /* valid */ "VIDEO_M3_INT_HEAP_CACHED", /* name */ 0x01800000, /* size */ LDR_SEGMENT_TYPE_DYNAMIC_LOCAL_HEAP, /* seg_type */ 0, /* flags */ 0x9BD00000, /* system_addr */ 0x9BD00000, /* slave_virtual_addr */ -1, /* master_core_id */ (1 << LDR_CORE_ID_VM3), /* core_id_mask */ 1, /* cache_enable_mask */ 0, /* cache_operation_mask */ -1 /* shared_region_id */ }, /* Segment 3 */ { 1, /* valid */ "IPC_SR_FRAME_BUFFERS", /* name */ 0x05000000, /* size */ LDR_SEGMENT_TYPE_DYNAMIC_SHARED_HEAP, /* seg_type */ 0, /* flags */ 0xB1C00000, /* system_addr */ 0xB1C00000, /* slave_virtual_addr */ 1, /* master_core_id */ (1 << LDR_CORE_ID_VM3) | (1 << LDR_CORE_ID_DM3) | (1 << LDR_CORE_ID_A8), /* core_id_mask */ (1 << LDR_CORE_ID_VM3) | (1 << LDR_CORE_ID_DM3), /* cache_enable_mask */ (1 << LDR_CORE_ID_VM3) | (1 << LDR_CORE_ID_DM3), /* cache_operation_mask */ 2 /* shared_region_id */ }, /* Last Segment, Marked by valid flag to 0 */ { 0, }, }; /* End Of File */
Pavel Botev said:Can you test with the latest EZSDK 5.05.02.00?
I'm already using the latest one from here - http://software-dl.ti.com/dsps/dsps_public_sw/ezsdk/latest/index_FDS.html
Page says 5_05_02_00. Are the newer versions?
Pavel Botev said:Can you test on the DM816x TI EVM?
No. I have only 8148 kit. I will try new syslink version soon.
I also noticed that if i try to change encodingPreset or compression profile in the omx_h264encgstreamer element, I get wrong parameter error. Does dm8168_hdvicp.xem3 supports only baseline profile? Baseline is enough for my task though. Just asking.
Hello,
Andrei K said:I also noticed that if i try to change encodingPreset or compression profile in the omx_h264encgstreamer element, I get wrong parameter error. Does dm8168_hdvicp.xem3 supports only baseline profile? Baseline is enough for my task though. Just asking.
You could check the gstomx_h264enc.c file and try to change the encodingPreset there the default value is self->encodingPreset = OMX_Video_Enc_High_Speed_Med_Quality;
You could check the h264encoder user guide for available options.
BR
Margarita
Andrei,
Andrei K said:Pavel BotevCan you test with the latest EZSDK 5.05.02.00?I'm already using the latest one from here - http://software-dl.ti.com/dsps/dsps_public_sw/ezsdk/latest/index_FDS.html
Page says 5_05_02_00. Are the newer versions?
But in your first post you state:
"EZSDK ver is 05.02.00.60"
I am not sure how to understand this.
Regards,
Pavel
Pavel Botev said:"EZSDK ver is 05.02.00.60"
Typo. I use 5.05.02.00.
I get same error with another syslink ver. 2.21.03.11. Downloaded from here http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/index.html
Does syslink need any special magic? I build kernel, then cmem, then syslink. OMX and gst-openmax in the end.
I'm quite new in the IPC programming field. What does assertion mean? Does this message signal that I set shared regions wrong?
Margaritha, thank you for tip about gstreamer preset.
Andrei,
syslink 2.20.02.20 should work fine with DM816x EZSDK 5.05.02.00
Andrei K said:Here's the script sequence I use. Based on load-hd-firmware.sh:
./prcm_config_app s
insmod notifyk.ko vpssm3_sva=0xbf900000
insmod syslink.ko
./firmware_loader 1 dm816x_hdvicp.xem3 start -mmap mm_dm81xxbm.bin -i2c 0
The targetfs_dm816x/etc/init.d/load-hd-firmware.sh is kind of different:
echo "Loading HDVICP2 Firmware"
prcm_config_app s
modprobe syslink
until [[ -e /dev/syslinkipc_ProcMgr && -e /dev/syslinkipc_ClientNotifyMgr ]]
do
sleep 0.5
done
firmware_loader $HDVICP2_ID /usr/share/ti/ti-media-controller-utils/dm816x_hdvicp.xem3 start
Can you try with that sequence? Can you try with the default syslink.ko?
For syslink in EZSDK, you can also examine the below wiki pages:
DM816x_EZ_Software_Developers_Guide.pdf, 3.2 Running the SysLink examples
Regards,
Pavel
Pavel Botev said:Can you try with the default syslink.ko?
What is "default syslink.ko"? I don't get it clearly. Do you mean the prebuilt .ko file which comes with ezsdk targetfs installation?
I used 2.20.02.20 which is included in ezsdk package and 2.21.03.11.
Very late reply, but still. Maybe it would be helpful.
I solved problem: memsegdef._dm81xxbm_512M.c file in the mm_host_util directory doesn't contain definitions for DSP_ALG_HEAP and A8_DSP_CMEM. I compared with memsegdef_default in firmware_loader folder. Then I adjust IPC_FRAME_BUFFERS size and recompiled loader. After running load-v4l2-firmware.sh there was no syslink assertion error. I discovered it accidentally when mistyped --mmap instead of -mmap in the script and firmware loader used default map file. Typo leads to solution :)
Either way thx for replies, people.