/** * FILE: main.s * * DESCRIPTION: * RP2350 Bare-Metal UART Main Application. * * BRIEF: * Main application entry point for RP2350 UART driver. Contains the * main loop that echoes UART input to output. * * AUTHOR: Kevin Thomas * CREATION DATE: November 2, 2025 * UPDATE DATE: November 27, 2025 */ .syntax unified // use unified assembly syntax .cpu cortex-m33 // target Cortex-M33 core .thumb // use Thumb instruction set .include "constants.s" /** * Initialize the .text section. * The .text section contains executable code. */ .section .text // code section .align 2 // align to 4-byte boundary /** * @brief Main application entry point. * * @details Implements the infinite echo loop. * * @param None * @retval None */ .global main // export main .type main, %function // mark as function main: .Push_Registers: push {r4-r12, lr} // push registers r4-r12, lr to the stack .Loop: bl UART0_In // call UART0_In bl UART0_Out // call UART0_Out b .Loop // loop forever .Pop_Registers: pop {r4-r12, lr} // pop registers r4-r12, lr from the stack bx lr // return to caller /** * Test data and constants. * The .rodata section is used for constants and static data. */ .section .rodata // read-only data section /** * Initialized global data. * The .data section is used for initialized global or static variables. */ .section .data // data section /** * Uninitialized global data. * The .bss section is used for uninitialized global or static variables. */ .section .bss // BSS section