remove unused coprocessor driver from all CBM projects

No project uses floating-point, so coprocessor_enable() was dead code.
Removes rp2350_coprocessor.c/.h and all references from reset handlers
and Makefiles across all 15 CBM drivers (0x01-0x0f).
This commit is contained in:
Kevin Thomas
2026-04-05 21:36:42 -04:00
parent e6d8ab4850
commit c6c3d4a045
60 changed files with 32 additions and 1101 deletions
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/main.c \ $(SRC_DIR)/main.c \
$(SRC_DIR)/image_def.c $(SRC_DIR)/image_def.c
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, and coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_gpio.c \ $(SRC_DIR)/rp2350_gpio.c \
$(SRC_DIR)/rp2350_led.c \ $(SRC_DIR)/rp2350_led.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_gpio.c \ $(SRC_DIR)/rp2350_gpio.c \
$(SRC_DIR)/rp2350_led.c \ $(SRC_DIR)/rp2350_led.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_pwm.c \ $(SRC_DIR)/rp2350_pwm.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,7 +5,7 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, PWM, coprocessor, then * stack, XOSC, subsystem resets, UART, PWM, then
* branches to main(). * branches to main().
* *
****************************************************************************** ******************************************************************************
@@ -27,19 +27,17 @@
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_pwm.h" #include "rp2350_pwm.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
/** /**
* @brief Initialize late peripherals (PWM and coprocessor). * @brief Initialize late peripherals (PWM release and init).
* @retval None * @retval None
*/ */
void _late_init(void) void _late_init(void)
{ {
pwm_release_reset(); pwm_release_reset();
pwm_init(); pwm_init();
coprocessor_enable();
} }
void __attribute__((naked, noreturn)) Reset_Handler(void) void __attribute__((naked, noreturn)) Reset_Handler(void)
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_servo.c \ $(SRC_DIR)/rp2350_servo.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, servo, coprocessor, * stack, XOSC, subsystem resets, UART, servo, then
* then branches to main(). * branches to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -27,19 +27,17 @@
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_servo.h" #include "rp2350_servo.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
/** /**
* @brief Initialize late peripherals (servo and coprocessor). * @brief Initialize late peripherals (servo release and init).
* @retval None * @retval None
*/ */
void _late_init(void) void _late_init(void)
{ {
servo_release_reset(); servo_release_reset();
servo_init(); servo_init();
coprocessor_enable();
} }
void __attribute__((naked, noreturn)) Reset_Handler(void) void __attribute__((naked, noreturn)) Reset_Handler(void)
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_adc.c \ $(SRC_DIR)/rp2350_adc.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, ADC, coprocessor, * stack, XOSC, subsystem resets, UART, ADC, then
* then branches to main(). * branches to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -27,7 +27,6 @@
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_adc.h" #include "rp2350_adc.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -40,7 +39,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_i2c.c \ $(SRC_DIR)/rp2350_i2c.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_i2c.c \ $(SRC_DIR)/rp2350_i2c.c \
$(SRC_DIR)/rp2350_lcd1602.c \ $(SRC_DIR)/rp2350_lcd1602.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_dht11.c \ $(SRC_DIR)/rp2350_dht11.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_ir.c \ $(SRC_DIR)/rp2350_ir.c \
$(SRC_DIR)/main.c \ $(SRC_DIR)/main.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_spi.c \ $(SRC_DIR)/rp2350_spi.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,7 +5,7 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, SPI, UART, then
* branches to main(). * branches to main().
* *
****************************************************************************** ******************************************************************************
@@ -27,20 +27,9 @@
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_spi.h" #include "rp2350_spi.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
/**
* @brief Initialize late peripherals (SPI reset and coprocessor).
* @retval None
*/
void _late_init(void)
{
spi_release_reset();
coprocessor_enable();
}
void __attribute__((naked, noreturn)) Reset_Handler(void) void __attribute__((naked, noreturn)) Reset_Handler(void)
{ {
__asm__ volatile ( __asm__ volatile (
@@ -48,9 +37,9 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl xosc_init\n\t" "bl xosc_init\n\t"
"bl xosc_enable_peri_clk\n\t" "bl xosc_enable_peri_clk\n\t"
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl spi_release_reset\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl _late_init\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_multicore.c \ $(SRC_DIR)/rp2350_multicore.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, coprocessor, then * stack, XOSC, subsystem resets, UART, then branches
* branches to main(). * to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -26,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -39,7 +38,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
$(SRC_DIR)/rp2350_timer.c \ $(SRC_DIR)/rp2350_timer.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, TIMER0 tick generator, * stack, XOSC, subsystem resets, UART, TIMER0 tick
* coprocessor, then branches to main(). * generator, then branches to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -27,19 +27,17 @@
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_timer.h" #include "rp2350_timer.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
/** /**
* @brief Initialize late peripherals (timer tick and coprocessor). * @brief Initialize late peripherals (timer release and tick init).
* @retval None * @retval None
*/ */
void _late_init(void) void _late_init(void)
{ {
timer_release_reset(); timer_release_reset();
timer_tick_init(); timer_tick_init();
coprocessor_enable();
} }
void __attribute__((naked, noreturn)) Reset_Handler(void) void __attribute__((naked, noreturn)) Reset_Handler(void)
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_delay.c \ $(SRC_DIR)/rp2350_delay.c \
$(SRC_DIR)/rp2350_watchdog.c \ $(SRC_DIR)/rp2350_watchdog.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -5,8 +5,8 @@
* @brief Reset handler implementation for RP2350. * @brief Reset handler implementation for RP2350.
* *
* Entry point after power-on or system reset. Initializes the * Entry point after power-on or system reset. Initializes the
* stack, XOSC, subsystem resets, UART, watchdog tick generator, * stack, XOSC, subsystem resets, UART, watchdog tick
* coprocessor, then branches to main(). * generator, then branches to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -27,20 +27,9 @@
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_watchdog.h" #include "rp2350_watchdog.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
/**
* @brief Initialize late peripherals (watchdog tick and coprocessor).
* @retval None
*/
void _late_init(void)
{
watchdog_tick_init();
coprocessor_enable();
}
void __attribute__((naked, noreturn)) Reset_Handler(void) void __attribute__((naked, noreturn)) Reset_Handler(void)
{ {
__asm__ volatile ( __asm__ volatile (
@@ -50,7 +39,7 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl _late_init\n\t" "bl watchdog_tick_init\n\t"
"b main\n\t" "b main\n\t"
); );
} }
@@ -1,33 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.h
* @author Kevin Thomas
* @brief Coprocessor access control driver header for RP2350.
*
* Enables coprocessor access via the CPACR register.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#ifndef __RP2350_COPROCESSOR_H
#define __RP2350_COPROCESSOR_H
#include "rp2350.h"
/**
* @brief Enable coprocessor access via CPACR with DSB/ISB barriers.
* @retval None
*/
void coprocessor_enable(void);
#endif /* __RP2350_COPROCESSOR_H */
-1
View File
@@ -36,7 +36,6 @@ SRCS = $(SRC_DIR)/vector_table.c \
$(SRC_DIR)/rp2350_stack.c \ $(SRC_DIR)/rp2350_stack.c \
$(SRC_DIR)/rp2350_xosc.c \ $(SRC_DIR)/rp2350_xosc.c \
$(SRC_DIR)/rp2350_reset.c \ $(SRC_DIR)/rp2350_reset.c \
$(SRC_DIR)/rp2350_coprocessor.c \
$(SRC_DIR)/rp2350_uart.c \ $(SRC_DIR)/rp2350_uart.c \
$(SRC_DIR)/rp2350_flash.c \ $(SRC_DIR)/rp2350_flash.c \
$(SRC_DIR)/main.c \ $(SRC_DIR)/main.c \
@@ -1,34 +0,0 @@
/**
******************************************************************************
* @file rp2350_coprocessor.c
* @author Kevin Thomas
* @brief Coprocessor access control driver implementation for RP2350.
*
* Grants access to coprocessors 0 and 1 by setting the
* corresponding bits in CPACR with DSB/ISB barriers.
*
******************************************************************************
* @attention
*
* Copyright (c) 2026 Kevin Thomas.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include "rp2350_coprocessor.h"
void coprocessor_enable(void)
{
uint32_t value;
value = *CPACR;
value |= (1U << CPACR_CP1_SHIFT);
value |= (1U << CPACR_CP0_SHIFT);
*CPACR = value;
__asm__ volatile ("dsb");
__asm__ volatile ("isb");
}
@@ -6,8 +6,7 @@
* *
* Entry point after power-on or system reset. Copies the * Entry point after power-on or system reset. Copies the
* .data section from flash to RAM, initializes the stack, * .data section from flash to RAM, initializes the stack,
* XOSC, subsystem resets, UART, coprocessor, then branches * XOSC, subsystem resets, UART, then branches to main().
* to main().
* *
****************************************************************************** ******************************************************************************
* @attention * @attention
@@ -27,7 +26,6 @@
#include "rp2350_xosc.h" #include "rp2350_xosc.h"
#include "rp2350_reset.h" #include "rp2350_reset.h"
#include "rp2350_uart.h" #include "rp2350_uart.h"
#include "rp2350_coprocessor.h"
extern int main(void); extern int main(void);
@@ -77,7 +75,6 @@ void __attribute__((naked, noreturn)) Reset_Handler(void)
"bl reset_init_subsystem\n\t" "bl reset_init_subsystem\n\t"
"bl uart_release_reset\n\t" "bl uart_release_reset\n\t"
"bl uart_init\n\t" "bl uart_init\n\t"
"bl coprocessor_enable\n\t"
"b main\n\t" "b main\n\t"
); );
} }