fix: stack, ldscript

This commit is contained in:
2024-12-07 04:03:16 +06:00
parent 9e48697f3d
commit a724a940a6
4 changed files with 8 additions and 21 deletions

View File

@@ -904,22 +904,13 @@ typedef struct {
#define PAD_DRV_STRENGTH_6 (0x00000006 << 9)
#define PAD_DRV_STRENGTH_7 (0x00000007 << 9)
static inline void PINMUX_Config_BL(uint32_t pin, uint32_t func) {
static inline void PINMUX_Config(uint32_t pin, uint32_t func) {
volatile uint32_t *reg = &PERI_ON->GPIO_PINMUX_CTRL[pin >> 1];
uint32_t shift = (pin & 1) << 4;
uint32_t mask = 0xFFFF << shift;
*reg = (*reg & ~mask) | (func << shift);
}
static inline void PINMUX_Config(uint32_t pin, uint32_t func) {
volatile uint32_t *reg = &PERI_ON->GPIO_PINMUX_CTRL[pin >> 1];
if (pin & 1) {
*reg = (*reg & 0x0000FFFF) | (func << 16);
} else {
*reg = (*reg & 0xFFFF0000) | func;
}
}
static inline void PINMUX_ConfigPadPull(uint8_t pin, uint8_t pull_type) {
uint32_t reg_index = pin >> 1;
uint32_t bit_pos = (pin & 1) << 4;

View File

@@ -8,7 +8,7 @@ MEMORY
SECTIONS
{
_stack_top = ORIGIN(RAM) + LENGTH(RAM) - (4 * 1024) - 4;
_stack_top = ORIGIN(RAM) + LENGTH(RAM) - 0x4000;
.rom_header : {
LONG(0x96969999) LONG(0xFC66CC3F)

View File

@@ -4,24 +4,23 @@
.section .text
.thumb_func
_startup:
// zero .bss section
/* zero .bss section */
ldr r0, =_bss_start
ldr r1, =_bss_end
movs r2, #0
1: cmp r0, r1
beq 2f
str r2, [r0], #4
b 1b
itt lt
strlt r2, [r0], #4
blt 1b
2:
bl main
1: b 1b
.section .text
.global _init
/* cold boot from ROM */
_init:
ldr r0, =0x1003E000
mov sp, r0
ldr sp, =_stack_top
ldr r0, =_vector_table
ldr r1, =0xE000ED08
str r0, [r1]

View File

@@ -26,9 +26,6 @@ int main(void) {
PERI_ON->SOC_PERI_FUNC1_EN |= BIT_PERI_GPIO_EN;
PERI_ON->PESOC_CLK_CTRL |= APBPeriph_GPIO_CLOCK;
// branchless
PINMUX_Config_BL(_PA_0, PINMUX_FN_GPIO);
//
PINMUX_Config(_PA_0, PINMUX_FN_GPIO);
PINMUX_ConfigPadPull(_PA_0, GPIO_PuPd_DOWN);
GPIOA->DDR |= (1 << 0);