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 */