mirror of
https://github.com/mytechnotalent/Embedded-Hacking.git
synced 2026-04-02 01:20:17 +02:00
67 lines
2.0 KiB
ArmAsm
67 lines
2.0 KiB
ArmAsm
/**
|
|
* 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
|