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.

DSP/BIOS migration to legacy SYS/BIOS with EDMA3_LLD and NDK 2.xx compatibility

Other Parts Discussed in Thread: SYSBIOS

Hello,

I am migrating a DSP/BIOS project to legacy SYS/BIOS and I need some guidelines about the tools and the packages versions for the libraries that I am allowed to use.

The final aim is to migrate to full SYS/BIOS project. Now, I am at the middle stage of migrating to legacy SYS/BIOS and I am facing some linking errors.

The initial DSP/BIOS project builds with Makefile (no CCS) and uses the following tools-packages:

DSP/BIOS 05.41.04.18, CGT 06.1.22

The output DSP/BIOS file links with the following libraries:

NDK 2.00.00 ndk/lib/C64plus libraries:

stack.lib, netctrl.lib, nettool.lib, os.lib, miniPrintf.lib, hal_ser_stub.lib, hal_userled_stub.lib, hal_timer_bios.lib

EDMA3_LLD 01.10.00.xx release libraries:

edma3_drv_bios_c674.lib, edma3_rm_bios.lib

For the migration to legacy SYS/BIOS, I am using the following tools:

CGT 7.4.8, bios_6_34_05_24, ipc_1_25_03_15, xdais_7_21_01_07, uia_1_03_00_02, xdctools_3_24_07_73


I have converted the initial tci configuration file to cfg file using conversion tool and also generated compiler.opt and linker.cmd, I compiled the source files but I get errors when linking the final object.

The linking command is like this:

/ti/c6000_7.4.8/bin/lnk6x.exe --abi=coffabi -reread_libs  -c -w -x -i/ti/c6000_7.4.8/lib -i/ti/bios_6_34_05_24/packages/ti/bios/lib -i/ti/cslc6000/lib -i/ti/c6000_7.4.8/include  -o project6746_legacy.symbols.out -m project6746_legacy.symbols.out.map -l/ti/ndk/lib/C64plus/stack.lib -l/ti/ndk/lib/C64plus/netctrl.lib -l/ti/ndk/lib/C64plus/nettool.lib -l/ti/ndk/lib/C64plus/os.lib -l/ti/ndk/lib/C64plus/miniPrintf.lib -l/ti/ndk/lib/C64plus/hal/hal_ser_stub.lib -l/ti/ndk/lib/C64plus/hal/hal_userled_stub.lib -l/ti/ndk/lib/C64plus/hal/hal_timer_bios.lib  -l/ti/sdo/edma3/drv/lib/Release/edma3_drv_bios_c674.lib -l/ti/sdo/edma3/rm/lib/c6748/Release/edma3_rm_bios.lib -lproject6746_legacy.cmd -llinker.cmd -l/ti/c6000_7.4.8/lib/libc.a  { .... obj files from other modules}

I get undefined symbols from project module files, some of them:
 _C64_enableIER,  _CLK_countspms,  _ECM_disableEvent,  _EDRAM,  _HOOK_getenv,  _HWI_D_inhwi,
 _LOGRAM,  _MBX_pend,  _PRD_tick,  _SDERAM,  _SEM_delete,  _SWI_D_inswi,  _SYS,  _TRC_R_mask,  _TSK_ATTRS,  _TSK_exit,  __HOOK_knlId       

I get undefined symbols from BIOS and XDCTOOLS packages, some of them:

_ti_bios_support_Sys_E_error__C, _ti_bios_support_Sys_errorFxn__C, _ti_sysbios_family_c64p_Cache_EMIFA_BASE__C, _ti_sysbios_family_c64p_Hwi_Object__create__S, _ti_sysbios_knl_Semaphore_LM_pend__C, _xdc_runtime_Main_Module__id__C, etc

and I get unresolved symbol in linker.cmd, some of them:

_xdc_runtime_LoggerBuf_Object__table__V, _ti_sysbios_knl_Swi_Object__table__V, etc

The complete list of linking errors is attached.

If you have any hint what I have set up wrong would be very useful.

Also, I have the following questions:

- Are the original ndk / edma3 packages compatible with legacy SYS/BIOS?

- Should they be replaced when I move on to pure SYS/BIOS?


Thank you in advance.

3531.linking_errors.txt

  • I have made some progress with this:

    I found that the conversion tool did not include the "project_legacy_p674.o674" file in the linker.cmd file!

    That means, when added manually the statement

    -l"\project_legacy\package\cfg\project_legacy_p674.o674"

    at the beginning of the linker.cmd all the unresolved symbols defined in this file were OK.

    However, I am still facing problems with many undefined BIOS symbols.

    undefined         
     symbol           
    ---------         
    _C64_enableIER    
    _CLK_countspms    
    _CLK_gethtime     
    _CLK_getltime     
    _CLK_getprd       
    _ECM_disableEvent
    _ECM_dispatchPlug
    _ECM_enableEvent  
    _EDRAM            
    _HOOK_getenv      
    _HOOK_setenv      
    _HWI_D_inhwi      
    _HWI_disable      
    _HWI_dispatchTab  
    _HWI_eventMap     
    _HWI_restore      
    _KNL_curtask      
    _LOGRAM           
    _LOGRAM_base      
    _LOG_D_system     
    _LOG_event        
    _MBX_pend         
    _MBX_post         
    _MEM_D_freelist   
    _PRD_tick         
    _SDERAM           
    _SEM_delete       
    _SEM_pend         
    _SEM_post         
    _SWI_D_inswi      
    _SWI_disable      
    _SWI_enable       
    _SYS              
    _TSK_exit         
    _TSK_setpri       
    _TSK_timerSem     
    _TSK_yield        
    __HOOK_NUMHOOKS   
    __HOOK_knlId      
    _undefined       

    The strange thing is that other similar BIOS symbols are recognized, eg: _MBX_create has no problem while _MBX_pend and _MBX_post have! 

    Do you have any hint what may go wrong?

  • It seems there are errors with the compilation: not right SYS/BIOS and CGTOOLS paths included.
    I am investigating the build process from the beginning.

  • Glad to see this was resolved.