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.

Recompile syslink.ko module with different configuration

Other Parts Discussed in Thread: AM3874

Hello all

I'm developing on a custom board derived from a Beaglebone that uses an AM3874.
In order to use the video HDMI output, we compiled the syslink and framebuffer dirver using the ti-ezsdk_dm814x-evm_5_04_00_11 SDK.

We found a problem that sometimes occurs during firmware loading that seems the same described here http://processors.wiki.ti.com/index.php/SysLink_FAQs in "Ipc_control(STARTCALLBACK) timeouts on TI81XX device when only the VPSS-M3 is used" section.

What I do not understand is which cfg file should we modify, there are dozens of them in the syslink source directory and also it is not clear how they affect the compilation (I did not find any link between cfg files and build options)

Does anyone know the answer?

Thanks!

  • Can you provided more detail on the method and what is being loaded on the other cores that the GPP-side SysLink is trying to communicate with?

    The EZSDK's for the Ti814X, provides a pre-compiled version of SysLink.  You can re-build SysLink but what may not be re-buildable are some of the binaries that run on the graphic accelerators (M3).  These may need to be modified, if you plan on developing on a custom board.  You may need to contact you local TI FAE to get access to these sources.

    As for SysLink itself, it does provided stand-alone examples for all the cores on some TI81XX device.  You can find them in the SYSLINK_INSTALL_DIR/examples/archive directory.  You can simply follow the SysLink Install Guide build section, this step will extract the examples and build them for you based on the Platform selected.  In these example you'll find all the necessary Platform configuration files (*.cfg, config.bld) needed to customize for you board.

  • Hi Arnie,
    Sorry to answer so late and thanks for your reply.

    What I'm trying to do is to load all the graphic modules and firmware as in board-support/media-controller-utils_2_05_00_17/src/linux/ti814x-evm/load-hd-firmware.sh (my SDK version is ti-ezsdk_dm814x-evm_5_04_00_11).
    My script is (checks and echos are omitted):
    insmod /lib/modules/2.6.37/kernel/drivers/dsp/syslink.ko
    firmware_loader 2 /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss.xem3 start
    insmod /lib/modules/2.6.37/kernel/drivers/video/ti81xx/vpss/vpss.ko mode=hdmi:800x480@60
    insmod /lib/modules/2.6.37/kernel/drivers/video/ti81xx/ti81xxfb/ti81xxfb.ko
    insmod /lib/modules/2.6.37/kernel/drivers/video/ti81xx/ti81xxhdmi/ti81xxhdmi.ko

    The problem appears sometimes during firmware loading.

    These are my bootargs in uBoot (we have 2GB of RAM):
    "console=ttyO0,115200n8 noinitrd root=/dev/mtdblock5 ro rootfstype=jffs2 notifyk.vpssm3_sva=0xBF900000 sbufaddr=0xBFB00000 vram=50M ti814xfb.vram=0:16M,1:16M,2:6M mem=364M mem=320M@0x9FC00000 mem=960M@0xC0000000"

    If you need more informations, please tell me.
    In the meantime I'll check your suggestions and I'll try the examples.

    Thanks.

  • I could recompile the syslink.ko driver followiong the instructions you suggested, but the problem described in Syslink FAQ (http://processors.wiki.ti.com/index.php/SysLink_FAQs "Ipc_control(STARTCALLBACK) timeouts on TI81XX device when only the VPSS-M3 is used"), persists, as this log shows (syslink is loaded with TRACE=1 TRACEFAILURE=1 TRACECLASS=1 options)

    [   45.120000] SysLink version : 2.10.03.20
    [   45.120000] SysLink module created on Date:Jun 24 2013 Time:15:14:07
    [   45.130000] Trace enabled
    [   45.130000] Trace SetFailureReason enabled
    [   45.140000] Trace class 1
    [   45.140000] MemoryOS_map: pa=0x480ca800, va=0xfa0ca800, sz=0x1000
    [   50.170000] MemoryOS_map: pa=0x48180000, va=0xfa180000, sz=0x2fff
    [   50.180000] MemoryOS_map: pa=0x55080000, va=0xf9080000, sz=0xfff
    [   50.180000] MemoryOS_map: pa=0x55020000, va=0xf9020000, sz=0x8
    [   50.190000] DM8168VPSSM3PROC_attach: Mapping memory regions
    [   50.200000] MemoryOS_map: pa=0x55020004, va=0xf9020004, sz=0x4
    [   50.200000] MemoryOS_map: entry already exists
    [   50.200000]     mapInfo->src  [0x48180000]
    [   50.200000]     mapInfo->dst  [0xfa180000]
    [   50.200000]     mapInfo->size [0x2fff]
    [   50.220000] DM8168VPSSM3PROC_attach: slave is now in reset
    [   50.230000] MemoryOS_map: pa=0x55020000, va=0xf9020000, sz=0x4000
    [   50.230000] MemoryOS_map: pa=0x55024000, va=0xf9024000, sz=0x3c000
    [   50.240000] MemoryOS_map: pa=0x40300000, va=0xf0380000, sz=0x40000
    [   50.250000] _ProcMgr_map for SlaveVirt:
    [   50.250000]     dstAddr       [0x300000]
    [   50.250000]     sgList.paddr  [0x40300000]
    [   50.250000]     sgList.offset [0x0]
    [   50.250000]     sgList.size [0x40000]
    [   50.250000]
    [   50.270000] DM8168VPSSM3PROC_map: found static entry: [2] sva=0x300000, mpa=0x40300000 size=0x40000
    [   50.280000] MemoryOS_map: pa=0x40400000, va=0xf0400000, sz=0x40000
    [   50.280000] _ProcMgr_map for SlaveVirt:
    [   50.280000]     dstAddr       [0x400000]
    [   50.280000]     sgList.paddr  [0x40400000]
    [   50.280000]     sgList.offset [0x0]
    [   50.280000]     sgList.size [0x40000]
    [   50.280000]
    [   50.310000] DM8168VPSSM3PROC_map: found static entry: [3] sva=0x400000, mpa=0x40400000 size=0x40000
    [   50.320000] OsalDrv_mmap(): setting cache disabled for physical address 55020000
    [   50.320000]
    [   50.330000] OsalDrv_mmap(): setting cache disabled for physical address 55024000
    [   50.330000]
    [   50.340000] OsalDrv_mmap(): setting cache disabled for physical address 40300000
    [   50.340000]
    [   50.350000] OsalDrv_mmap(): setting cache disabled for physical address 40400000
    [   50.350000]
    [   50.360000] DLOAD: ELF: ELF
    [   50.370000] DLOAD: ELF file header entry point: 9f5d0665
    [   50.380000] DM8168VPSSM3PROC_translate: translated [0] srcAddr=0x0 --> dstAddr=0x55020000
    [   50.390000] ElfLoaderTrgWrite_copy: translated 0x0 (sva) --> 0x55020000 (mpa)
    [   50.400000] MemoryOS_map: pa=0x55020000, va=0xf9020000, sz=0x3c
    [   50.410000] _ProcMgr_map for SlaveVirt:
    [   50.410000]     dstAddr       [0x0]
    [   50.410000]     sgList.paddr  [0x55020000]
    [   50.410000]     sgList.offset [0x0]
    [   50.410000]     sgList.size [0x3c]
    [   50.410000]
    [   50.430000] DM8168VPSSM3PROC_map: found static entry: [0] sva=0x0, mpa=0x55020000 size=0x4000
    [   50.440000] DM8168VPSSM3PROC_translate: translated [0] srcAddr=0x7f0 --> dstAddr=0x550207f0
    [   50.450000] ElfLoaderTrgWrite_copy: translated 0x7f0 (sva) --> 0x550207f0 (mpa)
    [   50.460000] MemoryOS_map: pa=0x550207f0, va=0xf90207f0, sz=0x10
    [   50.460000] _ProcMgr_map for SlaveVirt:
    [   50.460000]     dstAddr       [0x0]
    [   50.460000]     sgList.paddr  [0x55020000]
    [   50.460000]     sgList.offset [0x7f0]
    [   50.460000]     sgList.size [0x800]
    [   50.460000]
    [   50.490000] DM8168VPSSM3PROC_map: found static entry: [0] sva=0x0, mpa=0x55020000 size=0x4000
    [   50.490000] DM8168VPSSM3PROC_translate: translated [0] srcAddr=0x800 --> dstAddr=0x55020800
    [   50.500000] ElfLoaderTrgWrite_copy: translated 0x800 (sva) --> 0x55020800 (mpa)
    [   50.510000] MemoryOS_map: pa=0x55020800, va=0xf9020800, sz=0x140
    [   50.520000] _ProcMgr_map for SlaveVirt:
    [   50.520000]     dstAddr       [0x0]
    [   50.520000]     sgList.paddr  [0x55020000]
    [   50.520000]     sgList.offset [0x800]
    [   50.520000]     sgList.size [0x940]
    [   50.520000]
    [   50.540000] DM8168VPSSM3PROC_map: found static entry: [0] sva=0x0, mpa=0x55020000 size=0x4000
    [   50.550000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9e700000 --> dstAddr=0x9e700000
    [   50.560000] ElfLoaderTrgWrite_copy: translated 0x9e700000 (sva) --> 0x9e700000 (mpa)
    [   50.570000] MemoryOS_map: pa=0x9e700000, va=0xf1000000, sz=0xcd7de8
    [   50.580000] _ProcMgr_map for SlaveVirt:
    [   50.580000]     dstAddr       [0x9e700000]
    [   50.580000]     sgList.paddr  [0x9e700000]
    [   50.580000]     sgList.offset [0x0]
    [   50.580000]     sgList.size [0xcd7de8]
    [   50.580000]
    [   50.900000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f3d7de8 --> dstAddr=0x9f3d7de8
    [   50.910000] ElfLoaderTrgWrite_copy: translated 0x9f3d7de8 (sva) --> 0x9f3d7de8 (mpa)
    [   50.920000] MemoryOS_map: pa=0x9f3d7de8, va=0xf03f2de8, sz=0x18
    [   50.930000] _ProcMgr_map for SlaveVirt:
    [   50.930000]     dstAddr       [0x9f3d7000]
    [   50.930000]     sgList.paddr  [0x9f3d7000]
    [   50.930000]     sgList.offset [0xde8]
    [   50.930000]     sgList.size [0xe00]
    [   50.930000]
    [   50.950000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f3d7e00 --> dstAddr=0x9f3d7e00
    [   50.960000] ElfLoaderTrgWrite_copy: translated 0x9f3d7e00 (sva) --> 0x9f3d7e00 (mpa)
    [   50.970000] MemoryOS_map: pa=0x9f3d7e00, va=0xf0500e00, sz=0xae800
    [   50.970000] _ProcMgr_map for SlaveVirt:
    [   50.970000]     dstAddr       [0x9f3d7000]
    [   50.970000]     sgList.paddr  [0x9f3d7000]
    [   50.970000]     sgList.offset [0xe00]
    [   50.970000]     sgList.size [0xaf600]
    [   50.970000]
    [   51.000000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f486600 --> dstAddr=0x9f486600
    [   51.010000] ElfLoaderTrgWrite_copy: translated 0x9f486600 (sva) --> 0x9f486600 (mpa)
    [   51.020000] MemoryOS_map: pa=0x9f486600, va=0xf0460600, sz=0x15509
    [   51.020000] _ProcMgr_map for SlaveVirt:
    [   51.020000]     dstAddr       [0x9f486000]
    [   51.020000]     sgList.paddr  [0x9f486000]
    [   51.020000]     sgList.offset [0x600]
    [   51.020000]     sgList.size [0x15b09]
    [   51.020000]
    [   51.050000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f49bb20 --> dstAddr=0x9f49bb20
    [   51.050000] ElfLoaderTrgWrite_copy: translated 0x9f49bb20 (sva) --> 0x9f49bb20 (mpa)
    [   51.060000] MemoryOS_map: pa=0x9f49bb20, va=0xf0480b20, sz=0x17000
    [   51.070000] _ProcMgr_map for SlaveVirt:
    [   51.070000]     dstAddr       [0x9f49b000]
    [   51.070000]     sgList.paddr  [0x9f49b000]
    [   51.070000]     sgList.offset [0xb20]
    [   51.070000]     sgList.size [0x17b20]
    [   51.070000]
    [   51.090000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f4b2b80 --> dstAddr=0x9f4b2b80
    [   51.100000] ElfLoaderTrgWrite_copy: translated 0x9f4b2b80 (sva) --> 0x9f4b2b80 (mpa)
    [   51.110000] MemoryOS_map: pa=0x9f4b2b80, va=0xf0442b80, sz=0x34
    [   51.120000] _ProcMgr_map for SlaveVirt:
    [   51.120000]     dstAddr       [0x9f4b2000]
    [   51.120000]     sgList.paddr  [0x9f4b2000]
    [   51.120000]     sgList.offset [0xb80]
    [   51.120000]     sgList.size [0xbb4]
    [   51.120000]
    [   51.150000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f500000 --> dstAddr=0x9f500000
    [   51.160000] ElfLoaderTrgWrite_copy: translated 0x9f500000 (sva) --> 0x9f500000 (mpa)
    [   51.170000] MemoryOS_map: pa=0x9f500000, va=0xf0600000, sz=0xd5ed6
    [   51.170000] _ProcMgr_map for SlaveVirt:
    [   51.170000]     dstAddr       [0x9f500000]
    [   51.170000]     sgList.paddr  [0x9f500000]
    [   51.170000]     sgList.offset [0x0]
    [   51.170000]     sgList.size [0xd5ed6]
    [   51.170000]
    [   51.410000] DM8168VPSSM3PROC_translate: (default) srcAddr=0xbfd00000 --> dstAddr=0xbfd00000
    [   51.420000] ElfLoaderTrgWrite_copy: translated 0xbfd00000 (sva) --> 0xbfd00000 (mpa)
    [   51.430000] MemoryOS_map: pa=0xbfd00000, va=0xf0800000, sz=0x1ff060
    [   51.440000] _ProcMgr_map for SlaveVirt:
    [   51.440000]     dstAddr       [0xbfd00000]
    [   51.440000]     sgList.paddr  [0xbfd00000]
    [   51.440000]     sgList.offset [0x0]
    [   51.440000]     sgList.size [0x1ff060]
    [   51.440000]
    [   51.460000] DLOAD: write_arguments_to_args_section: c_args=ffffffff
    [   51.470000] DLOAD: WARNING - .args section not properly aligned
    [   51.470000] DLOAD: ERROR : Couldn't write to .args section
    [   51.480000] *** ElfLoader_load: Failed to write args! (ensure .args section is big enough)
    [   51.480000]  Error [0x0] at Line no: 1938 in file /home/ameliota/projects/beaglebone/TcmBoardSupport/ti-ezsdk_dm814x-evm_5_04_00_11/component-sources/syslink_2_10_03_20/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/procMgr/common/loaders/Elf/ElfLoader.c
    [   51.520000] ElfLoader_getSymbolAddress: symName [_Ipc_ResetVector]
    [   51.520000]
    [   51.530000]     ProcMgr_translateAddr: srcAddr [0x9f4b2b80] dstAddr [0x9f4b2b80]
    [   51.530000]
    [   51.540000]     ProcMgr_translateAddr: srcAddr [0x9f4b2b80] dstAddr [0xf0442b80]
    [   51.540000]
    [   51.550000]     ProcMgr_translateAddr: srcAddr [0x9f4b2b9c] dstAddr [0x9f4b2b9c]
    [   51.550000]
    [   51.560000]     ProcMgr_translateAddr: srcAddr [0x9f4b2b9c] dstAddr [0xf0442b9c]
    [   51.560000]
    [   51.570000] handle->slaveSRCfg[0].entryBase 9f700000
    [   51.570000]
    [   51.570000] DM8168VPSSM3PROC_translate: (default) srcAddr=0x9f700000 --> dstAddr=0x9f700000
    [   51.580000] Platform_loadCallback:
    [   51.580000]     No SharedRegion.entry[0].cacheEnable configuration value found, using default FALSE
    [   51.580000]
    [   51.600000] Platform_loadCallback:
    [   51.600000]     Mapping SharedRegion 0
    [   51.600000]     addr[ProcMgr_AddrType_MasterPhys] [0x9f700000]
    [   51.600000]     addr[ProcMgr_AddrType_SlaveVirt]  [0x9f700000]
    [   51.600000]     size                              [0x200000]
    [   51.600000]     isCached                          [0]
    [   51.600000]
    [   51.630000] MemoryOS_map: pa=0x9f700000, va=0xf0c00000, sz=0x200000
    [   51.640000] _ProcMgr_map for SlaveVirt:
    [   51.640000]     dstAddr       [0x9f700000]
    [   51.640000]     sgList.paddr  [0x9f700000]
    [   51.640000]     sgList.offset [0x0]
    [   51.640000]     sgList.size [0x200000]
    [   51.640000]
    [   51.660000]     ProcMgr_translateAddr: srcAddr [0x9f4b2b80] dstAddr [0x9f4b2b80]
    [   51.660000]
    [   51.670000]     ProcMgr_translateAddr: srcAddr [0x9f4b2b80] dstAddr [0xf0442b80]
    [   51.670000]
    [   51.690000]     DM8168VPSSM3PROC_start: Slave successfully started!
    [   51.690000]
    [   51.690000] Ipc_attach: Ipc_procSyncStart failed!
    [   51.720000] Ipc_attach: Ipc_procSyncStart failed!
    [   51.740000] Ipc_attach: Ipc_procSyncStart failed!

    ...

    [   73.990000] Ipc_attach: Ipc_procSyncStart failed!
    [   74.010000] Ipc_attach: Ipc_procSyncStart failed!
    [   74.010000] *** Platform_startCallback: Ipc_attach timeout
    [   74.010000]  Error [0xffffffff] at Line no: 2828 in file /home/ameliota/projects/beaglebone/TcmBoardSupport/ti-ezsdk_dm814x-evm_5_04_00_11/component-sources/syslink_2_10_03_20/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/family/hlos/knl/ti81xx/Platform.c
    [   74.040000] *** Ipc_control: Platform_startCallback failed!
    [   74.040000]  Error [0xffffffff] at Line no: 852 in file /home/ameliota/projects/beaglebone/TcmBoardSupport/ti-ezsdk_dm814x-evm_5_04_00_11/component-sources/syslink_2_10_03_20/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/Ipc.c
    [   74.070000] Assertion at Line no: 301 in /home/ameliota/projects/beaglebone/TcmBoardSupport/ti-ezsdk_dm814x-evm_5_04_00_11/component-sources/syslink_2_10_03_20/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/Linux/IpcDrv.c: (status >= 0) : failed
    [   74.100000] OsalSemaphore_pend:    Semaphore pend interrupted
    [   74.100000]     Handle [0xf0319000]
    [   74.100000]

    At [   51.480000] I have a first error that I do not understand: how can I resize .argcs? Anyway, when all goes well, this error is present, so I think it does not affect the other operations.
    Then the Ipc_procSyncStart timeouts.

    I'm still not sure if changing the Notify_ti81xx_vpssm3.cfg file as described in the FAQ page, then the modification is used by the make. Should I use code composer studio? or is there another way to compile syslink with proper configuration using only makefile?

    Thanks

  • Hi Alessandro,

    As Arnie mentions, you might have to rebuild some of the pre-built M3 binaries provided with the EZSDK (in particular, dm814x_hdvpss.xem3).

    Do you have a local TI FAE contact ?

    Meanwhile, I will try and find out how we might rebuild this binary, I couldn't find the sources in EZSDK, that might allow us to rebuild it.

    Thanks,

    Gunjan.

  • Thanks Gunjan,
    I'll try to find out if we have a FAE contact.

    Meanwhile, if you have some news, please let me know.

    As update, with the recompiled sislink.ko module I have a different behaviour: it works quite well if I make a cold reset on the PORx pin but if I make a warm reset on the RESETx pin the firmware loading hangs with the same log of my previous post. Another difference is that it seems to do so always and not randomly as before.
    I'm suspecting that the driver does not work well if the VPSS peripheral has not been completely reset.
    Is there a way to do so? I found some posts on this topic but I did not find any suitable solution till now.

    Thanks again,

    Alessandro