Other Parts Discussed in Thread: C2000WARE, SYSBIOS
Hi
I have tried to run sys bios by create project from the following steps
1. Click "Project"
2. "New CCS project"
3. select "Sys bios" under project template and example
4. select "Minimal"
with the example of "Blinking LED" on CCS program, after debug the program, the LED on the launchpad is working okay but after board reboot (by pressed the reset button or unplug the power) the program is not working anymore... (Only red LED (D9) is on)
So I would like to ask if you have any suggestion to run sys bios pn flash memory after board has been reboot without any failure....?

main.c : https://pastebin.com/4V4TcK6G
TMS320F28377S.cmd : https://pastebin.com/TVAu20iQ
app.cfg : https://pastebin.com/Gy5kxAgH


CCS 8.3
sys/bios 6_76_00_08
xdctools 3_51_01_18
C2000Ware_3_04_00_00
/*
 *  ======== main.c ========
 */
#include <xdc/std.h>
#include <xdc/runtime/System.h>
#include <xdc/cfg/global.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/hal/Hwi.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Idle.h>
#include "F28x_Project.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
Void initComponent();
#define LED_BLUE    13
#define LED_RED     12
#define ON  0
#define OFF 1
/*
 *  ======== taskFxn2 ========
 */
Void taskFxn2(UArg a0, UArg a1)
{
    int i = 0;
    while(1)
    {
        System_printf("Task 2 LED on %d\n", i);
        GPIO_WritePin(LED_RED , ON);
        Task_sleep(200);
        System_printf("Task 2 LED off %d\n", i);
        GPIO_WritePin(LED_RED , OFF);
        Task_sleep(200);
        System_printf("Task 2 LED on %d\n", i);
        GPIO_WritePin(LED_RED , ON);
        Task_sleep(200);
        System_printf("Task 2 LED off %d\n", i);
        GPIO_WritePin(LED_RED , OFF);
        Task_sleep(500);
        System_flush();
        i++;
    }
}
/*
 *  ======== taskFxn1 ========
 */
Void taskFxn1(UArg a0, UArg a1)
{
    int i = 0;
    while(1)
    {
        System_printf("Task 1 LED on %d\n", i);
        GPIO_WritePin(LED_BLUE , ON);
        Task_sleep(1000);
        System_printf("Task 1 LED off %d\n", i);
        GPIO_WritePin(LED_BLUE , OFF);
        Task_sleep(1000);
        System_flush();
        i++;
    }
}
/*
 *  ======== myIdle ========
 */
Void myIdleFxn(Void){
    GPIO_WritePin(LED_RED , ON);
    Task_sleep(100);
    GPIO_WritePin(LED_RED , OFF);
    Task_sleep(100);
}
/*
 *  ======== main ========
 */
Int main(Int argc, Char* argv[])
{ 
    /*
     * use ROV->SysMin to view the characters in the circular buffer
     */
    System_printf("enter main()\n");
    initComponent();
    GPIO_WritePin(LED_RED , OFF);
    GPIO_WritePin(LED_BLUE , OFF);
    BIOS_start();    /* does not return */
    return(0);
}
Void initComponent(){
    InitGpio();
    GPIO_SetupPinMux(LED_BLUE, GPIO_MUX_CPU1, 0);
    GPIO_SetupPinOptions(LED_BLUE, GPIO_OUTPUT, GPIO_PUSHPULL);
    GPIO_SetupPinMux(LED_RED, GPIO_MUX_CPU1, 0);
    GPIO_SetupPinOptions(LED_RED, GPIO_OUTPUT, GPIO_PUSHPULL);
}
/*
 * Copyright (c) 2015-2017, Texas Instruments Incorporated
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * *  Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * *  Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * *  Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*
 *  ======== TMS320F28377S.cmd ========
 *  Define the memory block start/length for the TMS320F28377S
 */
MEMORY
{
PAGE 0 :  /* Program Memory */
          /* BEGIN is used for the "boot to FLASH" bootloader mode   */
    D01SARAM   : origin = 0x00B000, length = 0x001000
    /* Flash boot address */
    BEGIN   : origin = 0x080000, length = 0x000002
    M01SARAM : origin = 0x000122, length = 0x0006DE
    LS05SARAM : origin = 0x008000, length = 0x003000
    RAMGS0  : origin = 0x00C000, length = 0x001000
    RAMGS1  : origin = 0x00D000, length = 0x001000
    /* Flash sectors */
    FLASHA  : origin = 0x080002, length = 0x001FFE  /* on-chip Flash */
    FLASHB  : origin = 0x082000, length = 0x002000  /* on-chip Flash */
    FLASHC  : origin = 0x084000, length = 0x002000  /* on-chip Flash */
    FLASHD  : origin = 0x086000, length = 0x002000  /* on-chip Flash */
    FLASHE  : origin = 0x088000, length = 0x008000  /* on-chip Flash */
    FLASHF  : origin = 0x090000, length = 0x008000  /* on-chip Flash */
    FLASHG  : origin = 0x098000, length = 0x008000  /* on-chip Flash */
    FLASHH  : origin = 0x0A0000, length = 0x008000  /* on-chip Flash */
    FLASHI  : origin = 0x0A8000, length = 0x008000  /* on-chip Flash */
    FLASHJ  : origin = 0x0B0000, length = 0x008000  /* on-chip Flash */
    FLASHK  : origin = 0x0B8000, length = 0x002000  /* on-chip Flash */
    FLASHL  : origin = 0x0BA000, length = 0x002000  /* on-chip Flash */
    FLASHM  : origin = 0x0BC000, length = 0x002000  /* on-chip Flash */
    FLASHN  : origin = 0x0BE000, length = 0x002000  /* on-chip Flash */
    FLASHO  : origin = 0x0C0000, length = 0x002000	/* on-chip Flash */
    FLASHP  : origin = 0x0C2000, length = 0x002000	/* on-chip Flash */
    FLASHQ  : origin = 0x0C4000, length = 0x002000	/* on-chip Flash */
    FLASHR  : origin = 0x0C6000, length = 0x002000	/* on-chip Flash */
    FLASHS  : origin = 0x0C8000, length = 0x008000	/* on-chip Flash */
    FLASHT  : origin = 0x0D0000, length = 0x008000	/* on-chip Flash */
    FLASHU  : origin = 0x0D8000, length = 0x008000	/* on-chip Flash */
    FLASHV  : origin = 0x0E0000, length = 0x008000	/* on-chip Flash */
    FLASHW  : origin = 0x0E8000, length = 0x008000	/* on-chip Flash */
    FLASHX  : origin = 0x0F0000, length = 0x008000	/* on-chip Flash */
    FLASHY  : origin = 0x0F8000, length = 0x002000	/* on-chip Flash */
    FLASHZ  : origin = 0x0FA000, length = 0x002000	/* on-chip Flash */
    FLASHAA : origin = 0x0FC000, length = 0x002000	/* on-chip Flash */
    FLASHAB : origin = 0x0FE000, length = 0x002000	/* on-chip Flash */
    RESET   : origin = 0x3FFFC0, length = 0x000002
PAGE 1 : /* Data Memory */
    BOOT_RSVD : origin = 0x000002, length = 0x000120 /* Part of M0, BOOT rom
                                                        will use this for
                                                        stack */
    /* M01SARAM : origin = 0x000122, length = 0x0006DE  /* on-chip RAM */
    /* LS05SARAM : origin = 0x008000, length = 0x003000 /* on-chip RAM */
    /* on-chip Global shared RAMs */
    RAMGS2  : origin = 0x00E000, length = 0x001000
    RAMGS3  : origin = 0x00F000, length = 0x001000
    RAMGS4  : origin = 0x010000, length = 0x001000
    RAMGS5  : origin = 0x011000, length = 0x001000
    RAMGS6  : origin = 0x012000, length = 0x001000
    RAMGS7  : origin = 0x013000, length = 0x001000
    RAMGS8  : origin = 0x014000, length = 0x001000
    RAMGS9  : origin = 0x015000, length = 0x001000
    RAMGS10 : origin = 0x016000, length = 0x001000
    RAMGS11 : origin = 0x017000, length = 0x001000
    RAMGS12 : origin = 0x018000, length = 0x001000
    RAMGS13 : origin = 0x019000, length = 0x001000
    RAMGS14 : origin = 0x01A000, length = 0x001000
    RAMGS15 : origin = 0x01B000, length = 0x001000
}
SECTIONS
{
    /* Allocate program areas: */
    .cinit              : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
    .binit              : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
#ifdef __TI_EABI__
    .init_array         : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
#else
    .pinit              : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
#endif
    .text               : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
    codestart           : > BEGIN   PAGE = 0
    ramfuncs            : LOAD = FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                                 FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                                 FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                                 FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                                 FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                                 FLASHZ | FLASHAA | FLASHAB PAGE = 0
                          RUN  = LS05SARAM  PAGE = 0
                          LOAD_START(_RamfuncsLoadStart),
                          LOAD_SIZE(_RamfuncsLoadSize),
                          LOAD_END(_RamfuncsLoadEnd),
                          RUN_START(_RamfuncsRunStart),
                          RUN_SIZE(_RamfuncsRunSize),
                          RUN_END(_RamfuncsRunEnd)
#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
    .TI.ramfunc : {} LOAD = FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0,
                     RUN  = LS05SARAM PAGE = 0,
                     table(BINIT)
#endif
#endif
    /* Allocate uninitalized data sections: */
    .stack              : > M01SARAM | LS05SARAM    PAGE = 0
#ifdef __TI_EABI__
    .bss                : >> M01SARAM | LS05SARAM | RAMGS0 | RAMGS1 PAGE = 1
    .sysmem             : > LS05SARAM | M01SARAM    PAGE = 1
    .data               : >> M01SARAM | LS05SARAM | RAMGS0 | RAMGS1 PAGE = 1
#else
    .ebss               : >> M01SARAM | LS05SARAM | RAMGS0 | RAMGS1 PAGE = 0
    .esysmem            : > LS05SARAM | M01SARAM    PAGE = 0
#endif
    .cio                : > LS05SARAM | M01SARAM    PAGE = 0
    /* Initalized sections go in Flash */
#ifdef __TI_EABI__
    .const             : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
#else
    .econst             : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
#endif
    .switch             : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
    .args               : > FLASHA | FLASHB | FLASHC | FLASHD | FLASHE |
                            FLASHF | FLASHG | FLASHH | FLASHI | FLASHJ |
                            FLASHK | FLASHL | FLASHM | FLASHN | FLASHO |
                            FLASHP | FLASHQ | FLASHR | FLASHS | FLASHT |
                            FLASHU | FLASHV | FLASHW | FLASHX | FLASHY |
                            FLASHZ | FLASHAA | FLASHAB PAGE = 0
    .reset              : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
}
var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Diags = xdc.useModule('xdc.runtime.Diags');
var Error = xdc.useModule('xdc.runtime.Error');
var Log = xdc.useModule('xdc.runtime.Log');
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
var Main = xdc.useModule('xdc.runtime.Main');
var SysMin = xdc.useModule('xdc.runtime.SysMin');
var System = xdc.useModule('xdc.runtime.System');
var Text = xdc.useModule('xdc.runtime.Text');
var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Hwi = xdc.useModule('ti.sysbios.family.c28.Hwi');
var Boot = xdc.useModule('ti.catalog.c2800.initF2837x.Boot');
var Idle = xdc.useModule('ti.sysbios.knl.Idle');
/*
 * Uncomment this line to globally disable Asserts.
 * All modules inherit the default from the 'Defaults' module. You
 * can override these defaults on a per-module basis using Module.common$. 
 * Disabling Asserts will save code space and improve runtime performance.
Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;
 */
/*
 * Uncomment this line to keep module names from being loaded on the target.
 * The module name strings are placed in the .const section. Setting this
 * parameter to false will save space in the .const section. Error and
 * Assert messages will contain an "unknown module" prefix instead
 * of the actual module name.
 */
Defaults.common$.namedModule = false;
/*
 * Minimize exit handler array in System. The System module includes
 * an array of functions that are registered with System_atexit() to be
 * called by System_exit().
 */
System.maxAtexitHandlers = 4;
/* 
 * Uncomment this line to disable the Error print function. 
 * We lose error information when this is disabled since the errors are
 * not printed. Disabling the raiseHook will save some code space if
 * your app is not using System_printf() since the Error_print() function
 * calls System_printf().
Error.raiseHook = null;
 */
/* 
 * Uncomment this line to keep Error, Assert, and Log strings from being
 * loaded on the target. These strings are placed in the .const section.
 * Setting this parameter to false will save space in the .const section.
 * Error, Assert and Log message will print raw ids and args instead of
 * a formatted message.
 */
Text.isLoaded = false;
/*
 * Uncomment this line to disable the output of characters by SysMin
 * when the program exits. SysMin writes characters to a circular buffer.
 * This buffer can be viewed using the SysMin Output view in ROV.
 */
SysMin.flushAtExit = false;
/* 
 * The BIOS module will create the default heap for the system.
 * Specify the size of this default heap.
 */
BIOS.heapSize = 0x0;
/* System stack size (used by ISRs and Swis) */
Program.stack = 0x100;
/* Circular buffer size for System_printf() */
SysMin.bufSize = 128;
/* 
 * Create and install logger for the whole system
 */
var loggerBufParams = new LoggerBuf.Params();
loggerBufParams.numEntries = 4;
var logger0 = LoggerBuf.create(loggerBufParams);
Defaults.common$.logger = logger0;
Main.common$.diags_INFO = Diags.ALWAYS_ON;
Boot.configureFlashWaitStates = true;
Boot.enableFlashDataCache = true;
Boot.configureClocks = true;
Boot.SPLLIMULT = 40;
Boot.OSCCLKSRCSEL = Boot.OscClk_INTOSC2;
Boot.SYSCLKDIVSEL = 1;
System.SupportProxy = SysMin;
/*
 * Build a custom BIOS library. The custom library will be smaller than the 
 * pre-built "instrumented" (default) and "non-instrumented" libraries.
 *
 * The BIOS.logsEnabled parameter specifies whether the Logging is enabled
 * within BIOS for this custom build. These logs are used by the RTA and
 * UIA analysis tools.
 *
 * The BIOS.assertsEnabled parameter specifies whether BIOS code will
 * include Assert() checks. Setting this parameter to 'false' will generate
 * smaller and faster code, but having asserts enabled is recommended for
 * early development as the Assert() checks will catch lots of programming
 * errors (invalid parameters, etc.)
 */
BIOS.libType = BIOS.LibType_Custom;
BIOS.logsEnabled = false;
BIOS.assertsEnabled = true;
BIOS.cpuFreq.lo = 200000000;
/*
 * Create a task. The 'taskFxn' function can be found in main.c.
 */
var task0Params = new Task.Params();
task0Params.instance.name = "task0";
task0Params.stackSize = 256;
task0Params.priority = 2;
Program.global.task0 = Task.create("&taskFxn1", task0Params);
var task1Params = new Task.Params();
task1Params.instance.name = "task1";
task1Params.stackSize = 256;
task1Params.priority = 2;
Program.global.task1 = Task.create("&taskFxn2", task1Params);
// Idle.addFunc("&myIdleFxn");
Idle.idleFxns[0] = "&myIdleFxn";
Regards
 
				 
		 
					 
                           
				