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.

MSP432E411Y: Adding an NDK Interface/Stack and SlNet in SysConfig seems to cause the BIOS_start() call to go in to a loop in the kernel

Part Number: MSP432E411Y
Other Parts Discussed in Thread: SYSCONFIG, SYSBIOS

In an attempt to make some more progress on bring-up of my custom board with a MSP432E411Y as discussed in post 1026601, I took a different route and started with the MSP432E411Y example project "gpiointerrupt_MSP432E411Y_BGAEVM_tirtos_ccs". I found that this project would run on my device (I simplified it to remove the GPIO calls and just run to an infinite while loop gpiointerrupt.c). So I began to make modifications to that project to mimic the udpecho example project. I went in to SysConfig and added in the NDK Interface/Stack and SlNet mimicking how it is done in the udpecho project. I also, copied in the C source code file to the project and then added all of the same references in the Properties Build->Arm Linker->File Search Path to get the project to build. After doing this I found that I was seeing the same loop through the kernel functions as I was seeing in my referenced post.

I see at the very end of the "cfg Script" in the tirtos project (viewed with XGCONF) the following code:

/*
 * ================ NDK configuration ================
 * Create a Task hook set and configure its register function in order to
 * enable Thread Local Storage (required by the NDK).
 */
var Task = xdc.useModule('ti.sysbios.knl.Task');
var ndkHooks = new Task.HookSet();
ndkHooks.registerFxn = '&NDK_hookInit';
Task.addHookSet(ndkHooks);

Is there some other SysBIOS/Kernel configuration needed in the TIRTOS project to use the NDK Stack? Somewhere else perhaps? Or is this a potential issue with the SDK code while using the NDK Stack  with the MSP432E411Y?

I have attached my projects for reference.

udpecho_from_gpiointerrupt_MSP432E411Y_BGAEVM_tirtos_ccs.zip

Thank You

  • Hi Steve,

    I an not the expert of NDKK, I will try to understand your question and touch NDK experts to help you.

    Thanks!

    Best Regards

    Johnson

  • I wanted to provide an update as I am still actively working and debugging this issue daily. In addition to my previous info I should add that my board hardware provides a single ended 25 MHz clock to the OSC0 pin and there is not an oscillator connected to the XOSC0/1 pins (not supporting Hibernation mode). 

    I have adjusted the main function to the following but when I perform a Hardware Watchpoint on the MOSCCTL register in the Debug view, I see it gets altered and most likely all the clocking all configured before reaching the first function in main() (i.e. Debug view opens the file kernel/tirtos/packages/ti/sysbios/family/arm/msp432e4/init/Boot_sysctl.c in function Boot_sysCtlClockFreqSetI() when the watchpoint occurs).

    /* RTOS header files */
    #include <ti/sysbios/BIOS.h>
    // #include <ti/display/Display.h>
    
    #include <ti/drivers/Board.h>
    
    extern void ti_ndk_config_Global_startupFxn();
    
    #include <ti/devices/msp432e4/driverlib/sysctl.h>
    //#include <ti/devices/msp432e4/inc/msp.h>
    
    static uint32_t OSC_CONFIG = SYSCTL_MOSC_HIGHFREQ | SYSCTL_MOSC_PWR_DIS;    // SYSCTL_MOSC_SESRC |  Use this too??? Found in header but not defined in register description
    
    
    // Display_Handle display;
    
    /*
     *  ======== main ========
     */
    int main(void)
    {
        SysCtlMOSCConfigSet(OSC_CONFIG);
        Board_init();
    #if 0
        Display_init();
    
        display = Display_open(Display_Type_UART, NULL);
        if (display == NULL) {
            /* Failed to open display driver */
            while(1);
        }
    #endif
    
        ti_ndk_config_Global_startupFxn();
    
        /* Start BIOS */
        BIOS_start();
    
        return (0);
    }

    I have started investigating using the ROV using the Debug view and see the following on the working 401YE4 dev board after stepping past the "BIOS_start();" call in main(): (see attached file ROV_401_UDPecho.jpg)

    While seeing the following on the 411 custom board (right after the "ti_ndk_config_Global_startupFxn();" call): (see attached file ROV_411_UDPecho_ndkStackThread.jpg)

    And right after the "BIOS_start();" call and hitting the Pause button in the Debug view: (see attached file ROV_411_UDPecho.jpg)

    I have gone to the trouble to configure all 9 of the 432401E4 Network Services example projects to the MSP432411YE4 chip in SysConfig on the off chance that one of them might behave differently. They did however all show the same undesirable behavior in the ROV views.

    We have in the meantime also now purchased a 411YE4 dev board to verify the behavior seen on it. I was really hoping for some good assistance troubleshooting this issue if any at all could be provided.

    Thank you

    ROV_udpecho.zip

  • I found that my project ran fine on the 411YE4 dev board. After some more debugging I finally realized that the MAC address needed to be set to something other than all FFs (I did this in SysConfig) for my custom board. The Dev boards have a MAC address programmed in NV flash memory already which is why they worked.