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.

Rebuilt BIOS having issues building CortexM3 executable

Other Parts Discussed in Thread: SYSBIOS

Hello,

I have rebuilt BIOS with my own cross compiled version of GCC. All of the BIOS libraries claim to have built without errors, but the end executable has a problem with one (at least) of the HWI symbols:

package/cfg/core0_pm3g.xdl:136: undefined symbol `ti_sysbios_family_arm_m3_Hwi_getStackInfo__F' referenced in expression

I built using GCC 4.7.2

xdctools 3.24.03.33

bios 6.34.01.14

ipc 1.25.00.04

Also what is the difference between the _E and _F names in the XDC world? it is not completely clear to me.

Thanks!

  • There should be a library ti.sysbios.family.arm.m3.am3g or similar referenced in package/cfg/core0_pm3g.xdl. If it's not there, check if you have any useModule() calls for any Hwi module in your CFG script.
    If the library is in the xdl file, check if the symbol is in the library. If not, something went wrong in the rebuild process. Check if there is the object file Hwi.om3g in the library.

    When an app calls a function, getStackInfo for example, the call is replaced with getStackInfo__E. The name of the function that is actually implemented is getStackInfo__F. At the config time, the function __E, which calls __F, is generated. If you turn on logging for function calls, __E will contain logging calls in addition to calling __F. If the call just forwards __E to __F and if the linker supports it, __E is simply defined as an alias for __F.

  • There were actually no libraries related to BIOS in the xdl file at all. I started digging through the various getLibs, and it stemmed from the BIOS Build module. I needed to add the following to my cfg file: BIOS.libType = BIOD.LibType_Debug.

    It seems without that BIOS's getLibs automatically return null? Is there no support for "release" BIOS Libs?

    At any rate, once I added that BIOS line, I was able to build successfully. We shall see how it runs.

  • We don't support release libs for each package.   We build "debug" libs for each package.   We build 3 different forms of release libs across all the packages.  These libs are stored in the top-level ti.sysbios package and selected using "instrumented", "non-inst", or "custom" build option.   We use the compiler's -o3 option and build with all .c files on a single command line so that the optimizer can see all the sources and do cross-file optimizations. 

    See the SYS/BIOS User's Guide sect 2.3 for more info.

    -Karl-