https://youtu.be/hyIEUCIVhQQ?si=tczopU-CYL0JYOTp&t=492

image.png

#include <msp430.h>

int a[5] = { 0xAAAA, 0xBBBB, 0xCCCC, 0xDDDD, 0xEEEE }; // Global variable initialized (.data + .const) RAM + FLASH
const int b[5] = { 0xBBBB, 0xCCCC, 0xDDDD, 0xEEEE, 0xAAAA }; // Constant variable (.const) FLASH
int c[5]; // Global variable not initialized (.bss) RAM

/**
 * blink.c
 */
void main(void)
{
    int d[5] = { 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDD }; // Local variable initialized (.stack + .const) RAM + FLASH
    static int e[5] = { 0xBCAA, 0xBCDA, 0xEFAA, 0xEFEA, 0xEFEA }; // Static variable initialized (.data + .const) RAM + FLASH
    WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
    P1DIR |= 0x01; // configure P1.0 as output

    volatile unsigned int i; // volatile to prevent optimization

    int sum = 0; // Local variable initialized (.stack) RAM
    for (i = 0; i < 5; i++) { // Program code (.text) FLASH
        sum += a[i] + b[i] + c[i] + d[i] + e[i]; // Program code (.text) FLASH
    }

    while(1)
    {
        P1OUT ^= 0x01; // toggle P1.0
        for(i=sum; i>0; i--); // delay

image.png

Memory Organization

image.png