/**
 * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
 * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
 * @cliArgs --device "AM243x_ALX_beta" --part "ALX" --package "ALX" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM243x@10.01.00"
 * @v2CliArgs --device "AM2434" --package "FCCSP (ALX)" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM243x@10.01.00"
 * @versions {"tool":"1.21.2+3837"}
 */

/**
 * Import the modules used in this configuration.
 */
const flash           = scripting.addModule("/board/flash/flash", {}, false);
const flash1          = flash.addInstance();
const bootloader      = scripting.addModule("/drivers/bootloader/bootloader", {}, false);
const bootloader1     = bootloader.addInstance();
const bootloader2     = bootloader.addInstance();
const bootloader3     = bootloader.addInstance();
const gpio            = scripting.addModule("/drivers/gpio/gpio", {}, false);
const gpio1           = gpio.addInstance();
const debug_log       = scripting.addModule("/kernel/dpl/debug_log");
const dpl_cfg         = scripting.addModule("/kernel/dpl/dpl_cfg");
const mpu_armv7       = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
const mpu_armv71      = mpu_armv7.addInstance();
const mpu_armv72      = mpu_armv7.addInstance();
const mpu_armv73      = mpu_armv7.addInstance();
const mpu_armv74      = mpu_armv7.addInstance();
const mpu_armv75      = mpu_armv7.addInstance();
const default_linker  = scripting.addModule("/memory_configurator/default_linker", {}, false);
const default_linker1 = default_linker.addInstance();
const general         = scripting.addModule("/memory_configurator/general", {}, false);
const general1        = general.addInstance();
const region          = scripting.addModule("/memory_configurator/region", {}, false);
const region1         = region.addInstance();
const section         = scripting.addModule("/memory_configurator/section", {}, false);
const section1        = section.addInstance();
const section2        = section.addInstance();
const section3        = section.addInstance();
const section4        = section.addInstance();
const section5        = section.addInstance();

/**
 * Write custom configuration values to the imported modules.
 */
bootloader1.appImageOffset      = "0x80000";
bootloader1.appImageBaseAddress = "0x60080000";
bootloader1.$name               = "BOOTLOADER_FLASH_APPLICATION_POS0";

bootloader2.$name          = "BOOTLOADER_FLASH_APPLICATION_POS1";
bootloader2.appImageOffset = "0x280000";

flash1.$name                         = "CONFIG_FLASH0";
bootloader1.flashDriver              = flash1;
bootloader2.flashDriver              = flash1;
flash1.peripheralDriver.$name        = "CONFIG_OSPI0";
flash1.peripheralDriver.dmaEnable    = true;
flash1.peripheralDriver.inputClkFreq = 100000000;
flash1.peripheralDriver.phyEnable    = true;
flash1.peripheralDriver.child.$name  = "drivers_ospi_v0_ospi_v0_template0";

bootloader3.$name     = "BOOTLOADER_FLASH_UPDATE";
bootloader3.bootMedia = "MEM";

gpio1.$name          = "CONFIG_GPIO0";
gpio1.pinDir         = "OUTPUT";
gpio1.defaultValue   = "1";
gpio1.GPIO_n.$assign = "OSPI0_CSn1";

const udma                         = scripting.addModule("/drivers/udma/udma", {}, false);
const udma1                        = udma.addInstance({}, false);
udma1.$name                        = "CONFIG_UDMA0";
flash1.peripheralDriver.udmaDriver = udma1;

debug_log.enableUartLog        = true;
debug_log.enableCssLog         = false;
debug_log.uartLog.$name        = "CONFIG_UART0";
debug_log.uartLog.intrEnable   = "DISABLE";
debug_log.uartLog.UART.$assign = "USART0";

const uart_v0_template  = scripting.addModule("/drivers/uart/v0/uart_v0_template", {}, false);
const uart_v0_template1 = uart_v0_template.addInstance({}, false);
uart_v0_template1.$name = "drivers_uart_v0_uart_v0_template0";
debug_log.uartLog.child = uart_v0_template1;

mpu_armv71.$name             = "CONFIG_MPU_REGION0";
mpu_armv71.size              = 31;
mpu_armv71.attributes        = "Device";
mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv71.allowExecute      = false;

mpu_armv72.$name             = "CONFIG_MPU_REGION1";
mpu_armv72.size              = 15;
mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";

mpu_armv73.$name             = "CONFIG_MPU_REGION2";
mpu_armv73.baseAddr          = 0x41010000;
mpu_armv73.size              = 15;
mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";

mpu_armv74.$name             = "CONFIG_MPU_REGION3";
mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv74.baseAddr          = 0x70000000;
mpu_armv74.size              = 21;

mpu_armv75.$name        = "CONFIG_MPU_REGION4";
mpu_armv75.baseAddr     = 0x60000000;
mpu_armv75.size         = 27;
mpu_armv75.allowExecute = false;
mpu_armv75.attributes   = "NonCached";

default_linker1.$name = "memory_configurator_default_linker0";

general1.$name          = "CONFIG_GENERAL0";
general1.irq_stack_size = 4096;
general1.svc_stack_size = 256;
general1.entry_point    = "-e_vectors_sbl";
general1.linker.$name   = "TIARMCLANG0";

region1.$name                               = "MEMORY_REGION_CONFIGURATION0";
region1.memory_region.create(7);
region1.memory_region[0].type               = "TCMA_R5F";
region1.memory_region[0].$name              = "R5F_VECS";
region1.memory_region[0].size               = 0x40;
region1.memory_region[0].auto               = false;
region1.memory_region[1].type               = "TCMA_R5F";
region1.memory_region[1].$name              = "R5F_TCMA";
region1.memory_region[1].size               = 0x7FC0;
region1.memory_region[2].type               = "TCMB_R5F";
region1.memory_region[2].$name              = "R5F_TCMB0";
region1.memory_region[2].size               = 0x8000;
region1.memory_region[3].$name              = "MSRAM_VECS";
region1.memory_region[3].auto               = false;
region1.memory_region[3].size               = 0x100;
region1.memory_region[4].$name              = "MSRAM_0";
region1.memory_region[4].auto               = false;
region1.memory_region[4].manualStartAddress = 0x70000100;
region1.memory_region[4].size               = 0x70F00;
region1.memory_region[5].$name              = "MSRAM_1";
region1.memory_region[5].auto               = false;
region1.memory_region[5].manualStartAddress = 0x70090000;
region1.memory_region[5].size               = 0x100000;
region1.memory_region[6].$name              = "APPIMAGE";
region1.memory_region[6].size               = 0x40000;

section1.$name                        = "Vector Table";
section1.group                        = false;
section1.load_memory                  = "MSRAM_VECS";
section1.output_section.create(1);
section1.output_section[0].$name      = ".vectors";
section1.output_section[0].palignment = true;

section2.$name                        = "Text Segments";
section2.load_memory                  = "MSRAM_0";
section2.output_section.create(7);
section2.output_section[0].palignment = true;
section2.output_section[0].$name      = ".text";
section2.output_section[1].palignment = true;
section2.output_section[1].$name      = ".text.hwi";
section2.output_section[2].palignment = true;
section2.output_section[2].$name      = ".text.cache";
section2.output_section[3].palignment = true;
section2.output_section[3].$name      = ".text.mpu";
section2.output_section[4].palignment = true;
section2.output_section[4].$name      = ".text.boot";
section2.output_section[5].$name      = ".data";
section2.output_section[5].palignment = true;
section2.output_section[6].$name      = ".rodata";
section2.output_section[6].palignment = true;

section3.$name                                   = "Memory Segments";
section3.group                                   = false;
section3.load_memory                             = "MSRAM_1";
section3.output_section.create(3);
section3.output_section[0].$name                 = ".bss";
section3.output_section[0].palignment            = true;
section3.output_section[0].output_sections_start = "__BSS_START";
section3.output_section[0].output_sections_end   = "__BSS_END";
section3.output_section[1].$name                 = ".sysmem";
section3.output_section[1].palignment            = true;
section3.output_section[2].$name                 = ".stack";
section3.output_section[2].palignment            = true;

section4.$name                                    = "Stack Segments";
section4.load_memory                              = "MSRAM_1";
section4.output_section.create(5);
section4.output_section[0].$name                  = ".irqstack";
section4.output_section[0].output_sections_start  = "__IRQ_STACK_START";
section4.output_section[0].output_sections_end    = "__IRQ_STACK_END";
section4.output_section[0].input_section.create(1);
section4.output_section[0].input_section[0].$name = ". = . + __IRQ_STACK_SIZE;";
section4.output_section[1].$name                  = ".fiqstack";
section4.output_section[1].output_sections_start  = "__FIQ_STACK_START";
section4.output_section[1].output_sections_end    = "__FIQ_STACK_END";
section4.output_section[1].input_section.create(1);
section4.output_section[1].input_section[0].$name = ". = . + __FIQ_STACK_SIZE;";
section4.output_section[2].$name                  = ".svcstack";
section4.output_section[2].output_sections_start  = "__SVC_STACK_START";
section4.output_section[2].output_sections_end    = "__SVC_STACK_END";
section4.output_section[2].input_section.create(1);
section4.output_section[2].input_section[0].$name = ". = . + __SVC_STACK_SIZE;";
section4.output_section[3].$name                  = ".abortstack";
section4.output_section[3].output_sections_start  = "__ABORT_STACK_START";
section4.output_section[3].output_sections_end    = "__ABORT_STACK_END";
section4.output_section[3].input_section.create(1);
section4.output_section[3].input_section[0].$name = ". = . + __ABORT_STACK_SIZE;";
section4.output_section[4].$name                  = ".undefinedstack";
section4.output_section[4].output_sections_start  = "__UNDEFINED_STACK_START";
section4.output_section[4].output_sections_end    = "__UNDEFINED_STACK_END";
section4.output_section[4].input_section.create(1);
section4.output_section[4].input_section[0].$name = ". = . + __UNDEFINED_STACK_SIZE;";

section5.group                       = false;
section5.type                        = "NOLOAD";
section5.load_memory                 = "APPIMAGE";
section5.$name                       = "Application Image ";
section5.output_section.create(1);
section5.output_section[0].$name     = ".bss.app";
section5.output_section[0].alignment = 0;

/**
 * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
 * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
 * re-solve from scratch.
 */
flash1.peripheralDriver.OSPI.$suggestSolution      = "OSPI0";
flash1.peripheralDriver.OSPI.CLK.$suggestSolution  = "OSPI0_CLK";
flash1.peripheralDriver.OSPI.CSn0.$suggestSolution = "OSPI0_CSn0";
flash1.peripheralDriver.OSPI.D3.$suggestSolution   = "OSPI0_D3";
flash1.peripheralDriver.OSPI.D2.$suggestSolution   = "OSPI0_D2";
flash1.peripheralDriver.OSPI.D1.$suggestSolution   = "OSPI0_D1";
flash1.peripheralDriver.OSPI.D0.$suggestSolution   = "OSPI0_D0";
debug_log.uartLog.UART.RXD.$suggestSolution        = "UART0_RXD";
debug_log.uartLog.UART.TXD.$suggestSolution        = "UART0_TXD";
