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.

"no matching section" warning in RM48L952HDK and HALCoGen RM48L950_FREERTOS project

Other Parts Discussed in Thread: HALCOGEN

Hi,
we use the RM48L952 HDK but used HALCoGen RM48L920ZWT_FREERTOS device project (since this is the only option with FreeRTOS support). 

I get warnings on the bolded lines below. The first warning may concern the line with os_tasks because the highlighting starts with .kernel... and goes down to the beginning of the next line. I don't know. 

Are these warnings due to the HDK has a 952 and not a 950? 

SECTIONS
{
.intvecs : {} > VECTORS
/* FreeRTOS Kernel in protected region of Flash */
.kernelTEXT : { sys_startup.obj(.const)
os_tasks.obj (.const:.string)
-l=rtsv7R4_T_le_v3D16_eabi.lib<auto_init.obj> (.text)
-l=rtsv7R4_T_le_v3D16_eabi.lib<copy_decompress_rle.obj> (*)
-l=rtsv7R4_T_le_v3D16_eabi.lib<cpy_tbl.obj> (*)
-l=rtsv7R4_T_le_v3D16_eabi.lib<copy_zero_init.obj> (*)
-l=rtsv7R4_T_le_v3D16_eabi.lib<copy_decompress_none.obj> (*)
-l=rtsv7R4_T_le_v3D16_eabi.lib<icall32.obj> (.text)
-l=rtsv7R4_T_le_v3D16_eabi.lib<memset32.obj> (.text)
-l=rtsv7R4_T_le_v3D16_eabi.lib<memcpy32.obj> (.text)

Another question, will the HALCoGen team come up with a FreeRTOS version for the HDK (RM48L952ZWT) and the RM48L952PGE (which is the MCU we will use in our project)? 


Kind regards,
Lars von Wachenfeldt
Bombardier Transportation

  • Lars,

    I don't think this has to do with 952 vs. 950.   I believe those two parts are exactly the same but the 952 is rated for a higher frequency.

    The warning means that the linker didn't find a section called  .const in the file sys_startup.obj.

    Whether this is correct or not is hard to say without more research and I'd probably defer the question to the HalCoGen team.   Same goes for your question about development plans.   But since the 950/952 in the ZWT are basically the same I think you could use the 950ZWT / FreeRTOS configuration on the 952 and just increase the PLL frequency.   The same goes for the PGE,  you can probably start w. the 950ZWT / FreeRTOS configuration and adjust things like pinmux and frequency to the 952 PGE.     If these were not just different speed grades/packages of the same silicon it would be more complicated but that's not the case here.

  • Hi Lars,

    ( Hope you have Insalled HALCoGen 4.02.00.. Auto update would have poped when opening 4.01.00. )

    We will be removing the present Lib file, sys_startup.c and os_tasks.c placement forcing under kernelTEXT in future releases from the linker command file. Please ignore these warnings, it should not affect your code since these forced codes are used only during startup, which is really shouldn't affect anything.

    Steps to Use FreeRTOS project on a PGE device or Any device that does not have native support. ( I have taken example of RM952 FreeRTOS support taking RM950 FreeRTOS Port)

    Step 1: Create a HALCoGen project for RM950 FreeRTOS port, change the PLL frequency to meet your device requirements. Any OS releated checks can also be done here.

    Step 2: Generate the Code.

    Step 3: Create the HALCoGen project for your device ( RM952xx), Do the necessary configurations as per the FreeRTOS example steps provided in the user guide ( Help -> Help Topics) . Important configurations are
    a) Interrupt Tab have vPortSWI for SVC and Enable it.
    b) Under VIM Channel 0-31, Enable Channel 2 ( RTI Compare 0) and Channel 21 ( SSI)
    c) In Driver Enable Tab uncheck RTI driver ( or do not use RTI driver in the application, make sure OS tick ( RTI compare 0 ) is unaffected.)
    d) Make sure in RAM tab the stacks are configured properly as per FreeRTOS project ( Else copy sys_core.asm file from FreeRTOS project)
    e) Make sure in VIM RAM tab for channel 02 ( vPortPreemptiveTick ) and 21 ( vPortYeildWithinAPI) is filled. (Refer FreeRTOS project VIM RAM tab for reference).

    Step 4 : Copy all os_xx.c and and Linlker commad file to source folder and os_xx.h, FreeRTOS.h, FreeRTOSConfig.h to Include folder from FreeRTOS project.

     Step 5 : Your files are ready, create a CCS project and work..

  • Great instruction! 

    Thanks very much Prathap!

    Kind regards,
    Lars

  • Hi again Prathap,
    I followed the instructions and it almost worked: 

    I used the FreeRTOS xTimerCreate function. This function will eventually call another function in list.c: vListInitialiseItem, see below. The program then gets an exception and the prefetchEntry (in sys_intvecs.asm) is called. When debugging I could see that the address for the function was 0x0000CC0(!). 

    When analyzing the code which HALCoGen produces, I found the following #pragma in list.c

    list.c

    <snip>

    #include <stdlib.h>
    #include "FreeRTOS.h"
    #include "os_list.h"

    #pragma SET_CODE_SECTION(".kernelTEXT")
    /*-----------------------------------------------------------
    * PUBLIC LIST API documented in list.h
    *----------------------------------------------------------*/

    void vListInitialise( List_t * const pxList )
    {
    <snip>
    }

    /*-----------------------------------------------------------*/

    void vListInitialiseItem( ListItem_t * const pxItem )
    {
    /* Make sure the list item is not recorded as being on a list. */
    pxItem->pvContainer = NULL;
    }
    /*-----------------------------------------------------------*/

    I removed the #pragma and the exception disappeared. 

    Kind regards,
    Lars

  • Hi Lars,

    4.02.00 Release has this Pragma's removed.. Note: GCC extentions must be enabled in the Compiler Options. ( -gcc)

  • Hi Prathap,
    I uninstalled the 4.02.00 version when I got the compilation errors. Then I read in another thread about the GCC extensions, as you say above. I will download 4.02.00 again and install. :)

    Thanks for your help Prathap.
    Kind regards,
    Lars
  • And I will read the readme.txt more thoroughly next time. ;)