Rivas 0 14 июля, 2020 Опубликовано 14 июля, 2020 (изменено) · Жалоба Здравствуйте. Keil как-то странно размещает стек, с начала идет .bss(0x2400 0000 - 0x2400 0060), потом куча (0x2400 0060 - 0x2400 0260), затем стек (0x2400 0260 - 0x2400 0460). Память ОЗУ, от 0x2400 0000 до 0x2408 0000 . Я так понимаю, .bss никуда не сдвинешь, куча там где надо, а вот стек хотелось бы поставить на верх, 0x2408 0000. Подскажите, как это сделать? Вот код startup, в котором, все это происходит: ;Имя файла : startup_stm32h743xx.s ;Описание : Векторная таблица устройств для набора инструментов MDK-ARM. ; Назначение файла: ; - Устанавливает начальное значение вершины стека SP, он же регистр R13 ; - Устанавливает начальное значение счетчика команд PC == Reset_Handler, он же регистр R15 ; - Записывает векторную таблицу, за исключением адреса ISR ; - Указывает путь к "main" в библиотеке C (которая в конечном итоге вызывает main()). ; После сброса процессор Cortex-M находится в потоковом режиме, приоритет привилегирован, ; а стек установлен в Main. ;Объем памяти (в байтах), выделенный для стека ;Адаптируйте это значение к потребностям вашего приложения ;<h> Stack Configuration ;<o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ;</h> Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ;<h> Heap Configuration ;<o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ;</h> Heap_Size EQU 0x00000200 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit PRESERVE8 THUMB ;Векторная таблица, при сбросе привязывается к нулевому адресу AREA RESET, DATA, READONLY EXPORT __Vectors EXPORT __Vectors_End EXPORT __Vectors_Size __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD SVC_Handler ; SVCall Handler DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler ;Внешние прерывания DCD WWDG_IRQHandler ; Window WatchDog interrupt ( wwdg1_it) DCD PVD_AVD_IRQHandler ; PVD/AVD through EXTI Line detection DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line DCD FLASH_IRQHandler ; FLASH DCD RCC_IRQHandler ; RCC DCD EXTI0_IRQHandler ; EXTI Line0 DCD EXTI1_IRQHandler ; EXTI Line1 DCD EXTI2_IRQHandler ; EXTI Line2 DCD EXTI3_IRQHandler ; EXTI Line3 DCD EXTI4_IRQHandler ; EXTI Line4 DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 DCD ADC_IRQHandler ; ADC1, ADC2 DCD FDCAN1_IT0_IRQHandler ; FDCAN1 interrupt line 0 DCD FDCAN2_IT0_IRQHandler ; FDCAN2 interrupt line 0 DCD FDCAN1_IT1_IRQHandler ; FDCAN1 interrupt line 1 DCD FDCAN2_IT1_IRQHandler ; FDCAN2 interrupt line 1 DCD EXTI9_5_IRQHandler ; External Line[9:5]s DCD TIM1_BRK_IRQHandler ; TIM1 Break interrupt DCD TIM1_UP_IRQHandler ; TIM1 Update Interrupt DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation Interrupt DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare DCD TIM2_IRQHandler ; TIM2 DCD TIM3_IRQHandler ; TIM3 DCD TIM4_IRQHandler ; TIM4 DCD I2C1_EV_IRQHandler ; I2C1 Event DCD I2C1_ER_IRQHandler ; I2C1 Error DCD I2C2_EV_IRQHandler ; I2C2 Event DCD I2C2_ER_IRQHandler ; I2C2 Error DCD SPI1_IRQHandler ; SPI1 DCD SPI2_IRQHandler ; SPI2 DCD USART1_IRQHandler ; USART1 DCD USART2_IRQHandler ; USART2 DCD USART3_IRQHandler ; USART3 DCD EXTI15_10_IRQHandler ; External Line[15:10] DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line DCD 0 ; Reserved DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break Interrupt and TIM12 global interrupt DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update Interrupt and TIM13 global interrupt DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare Interrupt DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 DCD FMC_IRQHandler ; FMC DCD SDMMC1_IRQHandler ; SDMMC1 DCD TIM5_IRQHandler ; TIM5 DCD SPI3_IRQHandler ; SPI3 DCD UART4_IRQHandler ; UART4 DCD UART5_IRQHandler ; UART5 DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors DCD TIM7_IRQHandler ; TIM7 DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 DCD ETH_IRQHandler ; Ethernet DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line DCD FDCAN_CAL_IRQHandler ; FDCAN calibration unit interrupt DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 DCD USART6_IRQHandler ; USART6 DCD I2C3_EV_IRQHandler ; I2C3 event DCD I2C3_ER_IRQHandler ; I2C3 error DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI DCD OTG_HS_IRQHandler ; USB OTG HS DCD DCMI_IRQHandler ; DCMI DCD 0 ; Reserved DCD RNG_IRQHandler ; Rng DCD FPU_IRQHandler ; FPU DCD UART7_IRQHandler ; UART7 DCD UART8_IRQHandler ; UART8 DCD SPI4_IRQHandler ; SPI4 DCD SPI5_IRQHandler ; SPI5 DCD SPI6_IRQHandler ; SPI6 DCD SAI1_IRQHandler ; SAI1 DCD LTDC_IRQHandler ; LTDC DCD LTDC_ER_IRQHandler ; LTDC error DCD DMA2D_IRQHandler ; DMA2D DCD SAI2_IRQHandler ; SAI2 DCD QUADSPI_IRQHandler ; QUADSPI DCD LPTIM1_IRQHandler ; LPTIM1 DCD CEC_IRQHandler ; HDMI_CEC DCD I2C4_EV_IRQHandler ; I2C4 Event DCD I2C4_ER_IRQHandler ; I2C4 Error DCD SPDIF_RX_IRQHandler ; SPDIF_RX DCD OTG_FS_EP1_OUT_IRQHandler ; USB OTG FS End Point 1 Out DCD OTG_FS_EP1_IN_IRQHandler ; USB OTG FS End Point 1 In DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI DCD OTG_FS_IRQHandler ; USB OTG FS DCD DMAMUX1_OVR_IRQHandler ; DMAMUX1 Overrun interrupt DCD HRTIM1_Master_IRQHandler ; HRTIM Master Timer global Interrupts DCD HRTIM1_TIMA_IRQHandler ; HRTIM Timer A global Interrupt DCD HRTIM1_TIMB_IRQHandler ; HRTIM Timer B global Interrupt DCD HRTIM1_TIMC_IRQHandler ; HRTIM Timer C global Interrupt DCD HRTIM1_TIMD_IRQHandler ; HRTIM Timer D global Interrupt DCD HRTIM1_TIME_IRQHandler ; HRTIM Timer E global Interrupt DCD HRTIM1_FLT_IRQHandler ; HRTIM Fault global Interrupt DCD DFSDM1_FLT0_IRQHandler ; DFSDM Filter0 Interrupt DCD DFSDM1_FLT1_IRQHandler ; DFSDM Filter1 Interrupt DCD DFSDM1_FLT2_IRQHandler ; DFSDM Filter2 Interrupt DCD DFSDM1_FLT3_IRQHandler ; DFSDM Filter3 Interrupt DCD SAI3_IRQHandler ; SAI3 global Interrupt DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt DCD TIM15_IRQHandler ; TIM15 global Interrupt DCD TIM16_IRQHandler ; TIM16 global Interrupt DCD TIM17_IRQHandler ; TIM17 global Interrupt DCD MDIOS_WKUP_IRQHandler ; MDIOS Wakeup Interrupt DCD MDIOS_IRQHandler ; MDIOS global Interrupt DCD JPEG_IRQHandler ; JPEG global Interrupt DCD MDMA_IRQHandler ; MDMA global Interrupt DCD 0 ; Reserved DCD SDMMC2_IRQHandler ; SDMMC2 global Interrupt DCD HSEM1_IRQHandler ; HSEM1 global Interrupt DCD 0 ; Reserved DCD ADC3_IRQHandler ; ADC3 global Interrupt DCD DMAMUX2_OVR_IRQHandler ; DMAMUX Overrun interrupt DCD BDMA_Channel0_IRQHandler ; BDMA Channel 0 global Interrupt DCD BDMA_Channel1_IRQHandler ; BDMA Channel 1 global Interrupt DCD BDMA_Channel2_IRQHandler ; BDMA Channel 2 global Interrupt DCD BDMA_Channel3_IRQHandler ; BDMA Channel 3 global Interrupt DCD BDMA_Channel4_IRQHandler ; BDMA Channel 4 global Interrupt DCD BDMA_Channel5_IRQHandler ; BDMA Channel 5 global Interrupt DCD BDMA_Channel6_IRQHandler ; BDMA Channel 6 global Interrupt DCD BDMA_Channel7_IRQHandler ; BDMA Channel 7 global Interrupt DCD COMP1_IRQHandler ; COMP1 global Interrupt DCD LPTIM2_IRQHandler ; LP TIM2 global interrupt DCD LPTIM3_IRQHandler ; LP TIM3 global interrupt DCD LPTIM4_IRQHandler ; LP TIM4 global interrupt DCD LPTIM5_IRQHandler ; LP TIM5 global interrupt DCD LPUART1_IRQHandler ; LP UART1 interrupt DCD 0 ; Reserved DCD CRS_IRQHandler ; Clock Recovery Global Interrupt DCD ECC_IRQHandler ; ECC diagnostic Global Interrupt DCD SAI4_IRQHandler ; SAI4 global interrupt DCD 0 ; Reserved DCD 0 ; Reserved DCD WAKEUP_PIN_IRQHandler ; Interrupt for all 6 wake-up pins __Vectors_End __Vectors_Size EQU __Vectors_End - __Vectors AREA |.text|, CODE, READONLY ;Обработчик сброса Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main LDR R0, =__main BX R0 ENDP ;Фиктивные обработчики исключений (бесконечные циклы, которые могут быть изменены) NMI_Handler PROC EXPORT NMI_Handler [WEAK] B . ENDP HardFault_Handler\ PROC EXPORT HardFault_Handler [WEAK] B . ENDP MemManage_Handler\ PROC EXPORT MemManage_Handler [WEAK] B . ENDP BusFault_Handler\ PROC EXPORT BusFault_Handler [WEAK] B . ENDP UsageFault_Handler\ PROC EXPORT UsageFault_Handler [WEAK] B . ENDP SVC_Handler PROC EXPORT SVC_Handler [WEAK] B . ENDP DebugMon_Handler\ PROC EXPORT DebugMon_Handler [WEAK] B . ENDP PendSV_Handler PROC EXPORT PendSV_Handler [WEAK] B . ENDP SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B . ENDP Default_Handler PROC EXPORT WWDG_IRQHandler [WEAK] EXPORT PVD_AVD_IRQHandler [WEAK] EXPORT TAMP_STAMP_IRQHandler [WEAK] EXPORT RTC_WKUP_IRQHandler [WEAK] EXPORT FLASH_IRQHandler [WEAK] EXPORT RCC_IRQHandler [WEAK] EXPORT EXTI0_IRQHandler [WEAK] EXPORT EXTI1_IRQHandler [WEAK] EXPORT EXTI2_IRQHandler [WEAK] EXPORT EXTI3_IRQHandler [WEAK] EXPORT EXTI4_IRQHandler [WEAK] EXPORT DMA1_Stream0_IRQHandler [WEAK] EXPORT DMA1_Stream1_IRQHandler [WEAK] EXPORT DMA1_Stream2_IRQHandler [WEAK] EXPORT DMA1_Stream3_IRQHandler [WEAK] EXPORT DMA1_Stream4_IRQHandler [WEAK] EXPORT DMA1_Stream5_IRQHandler [WEAK] EXPORT DMA1_Stream6_IRQHandler [WEAK] EXPORT DMA1_Stream7_IRQHandler [WEAK] EXPORT ADC_IRQHandler [WEAK] EXPORT FDCAN1_IT0_IRQHandler [WEAK] EXPORT FDCAN2_IT0_IRQHandler [WEAK] EXPORT FDCAN1_IT1_IRQHandler [WEAK] EXPORT FDCAN2_IT1_IRQHandler [WEAK] EXPORT EXTI9_5_IRQHandler [WEAK] EXPORT TIM1_BRK_IRQHandler [WEAK] EXPORT TIM1_UP_IRQHandler [WEAK] EXPORT TIM1_TRG_COM_IRQHandler [WEAK] EXPORT TIM1_CC_IRQHandler [WEAK] EXPORT TIM2_IRQHandler [WEAK] EXPORT TIM3_IRQHandler [WEAK] EXPORT TIM4_IRQHandler [WEAK] EXPORT I2C1_EV_IRQHandler [WEAK] EXPORT I2C1_ER_IRQHandler [WEAK] EXPORT I2C2_EV_IRQHandler [WEAK] EXPORT I2C2_ER_IRQHandler [WEAK] EXPORT SPI1_IRQHandler [WEAK] EXPORT SPI2_IRQHandler [WEAK] EXPORT USART1_IRQHandler [WEAK] EXPORT USART2_IRQHandler [WEAK] EXPORT USART3_IRQHandler [WEAK] EXPORT EXTI15_10_IRQHandler [WEAK] EXPORT RTC_Alarm_IRQHandler [WEAK] EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] EXPORT TIM8_CC_IRQHandler [WEAK] EXPORT DMA1_Stream7_IRQHandler [WEAK] EXPORT FMC_IRQHandler [WEAK] EXPORT SDMMC1_IRQHandler [WEAK] EXPORT TIM5_IRQHandler [WEAK] EXPORT SPI3_IRQHandler [WEAK] EXPORT UART4_IRQHandler [WEAK] EXPORT UART5_IRQHandler [WEAK] EXPORT TIM6_DAC_IRQHandler [WEAK] EXPORT TIM7_IRQHandler [WEAK] EXPORT DMA2_Stream0_IRQHandler [WEAK] EXPORT DMA2_Stream1_IRQHandler [WEAK] EXPORT DMA2_Stream2_IRQHandler [WEAK] EXPORT DMA2_Stream3_IRQHandler [WEAK] EXPORT DMA2_Stream4_IRQHandler [WEAK] EXPORT ETH_IRQHandler [WEAK] EXPORT ETH_WKUP_IRQHandler [WEAK] EXPORT FDCAN_CAL_IRQHandler [WEAK] EXPORT DMA2_Stream5_IRQHandler [WEAK] EXPORT DMA2_Stream6_IRQHandler [WEAK] EXPORT DMA2_Stream7_IRQHandler [WEAK] EXPORT USART6_IRQHandler [WEAK] EXPORT I2C3_EV_IRQHandler [WEAK] EXPORT I2C3_ER_IRQHandler [WEAK] EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] EXPORT OTG_HS_WKUP_IRQHandler [WEAK] EXPORT OTG_HS_IRQHandler [WEAK] EXPORT DCMI_IRQHandler [WEAK] EXPORT RNG_IRQHandler [WEAK] EXPORT FPU_IRQHandler [WEAK] EXPORT UART7_IRQHandler [WEAK] EXPORT UART8_IRQHandler [WEAK] EXPORT SPI4_IRQHandler [WEAK] EXPORT SPI5_IRQHandler [WEAK] EXPORT SPI6_IRQHandler [WEAK] EXPORT SAI1_IRQHandler [WEAK] EXPORT LTDC_IRQHandler [WEAK] EXPORT LTDC_ER_IRQHandler [WEAK] EXPORT DMA2D_IRQHandler [WEAK] EXPORT SAI2_IRQHandler [WEAK] EXPORT QUADSPI_IRQHandler [WEAK] EXPORT LPTIM1_IRQHandler [WEAK] EXPORT CEC_IRQHandler [WEAK] EXPORT I2C4_EV_IRQHandler [WEAK] EXPORT I2C4_ER_IRQHandler [WEAK] EXPORT SPDIF_RX_IRQHandler [WEAK] EXPORT OTG_FS_EP1_OUT_IRQHandler [WEAK] EXPORT OTG_FS_EP1_IN_IRQHandler [WEAK] EXPORT OTG_FS_WKUP_IRQHandler [WEAK] EXPORT OTG_FS_IRQHandler [WEAK] EXPORT DMAMUX1_OVR_IRQHandler [WEAK] EXPORT HRTIM1_Master_IRQHandler [WEAK] EXPORT HRTIM1_TIMA_IRQHandler [WEAK] EXPORT HRTIM1_TIMB_IRQHandler [WEAK] EXPORT HRTIM1_TIMC_IRQHandler [WEAK] EXPORT HRTIM1_TIMD_IRQHandler [WEAK] EXPORT HRTIM1_TIME_IRQHandler [WEAK] EXPORT HRTIM1_FLT_IRQHandler [WEAK] EXPORT DFSDM1_FLT0_IRQHandler [WEAK] EXPORT DFSDM1_FLT1_IRQHandler [WEAK] EXPORT DFSDM1_FLT2_IRQHandler [WEAK] EXPORT DFSDM1_FLT3_IRQHandler [WEAK] EXPORT SAI3_IRQHandler [WEAK] EXPORT SWPMI1_IRQHandler [WEAK] EXPORT TIM15_IRQHandler [WEAK] EXPORT TIM16_IRQHandler [WEAK] EXPORT TIM17_IRQHandler [WEAK] EXPORT MDIOS_WKUP_IRQHandler [WEAK] EXPORT MDIOS_IRQHandler [WEAK] EXPORT JPEG_IRQHandler [WEAK] EXPORT MDMA_IRQHandler [WEAK] EXPORT SDMMC2_IRQHandler [WEAK] EXPORT HSEM1_IRQHandler [WEAK] EXPORT ADC3_IRQHandler [WEAK] EXPORT DMAMUX2_OVR_IRQHandler [WEAK] EXPORT BDMA_Channel0_IRQHandler [WEAK] EXPORT BDMA_Channel1_IRQHandler [WEAK] EXPORT BDMA_Channel2_IRQHandler [WEAK] EXPORT BDMA_Channel3_IRQHandler [WEAK] EXPORT BDMA_Channel4_IRQHandler [WEAK] EXPORT BDMA_Channel5_IRQHandler [WEAK] EXPORT BDMA_Channel6_IRQHandler [WEAK] EXPORT BDMA_Channel7_IRQHandler [WEAK] EXPORT COMP1_IRQHandler [WEAK] EXPORT LPTIM2_IRQHandler [WEAK] EXPORT LPTIM3_IRQHandler [WEAK] EXPORT LPTIM4_IRQHandler [WEAK] EXPORT LPTIM5_IRQHandler [WEAK] EXPORT LPUART1_IRQHandler [WEAK] EXPORT CRS_IRQHandler [WEAK] EXPORT ECC_IRQHandler [WEAK] EXPORT SAI4_IRQHandler [WEAK] EXPORT WAKEUP_PIN_IRQHandler [WEAK] WWDG_IRQHandler PVD_AVD_IRQHandler TAMP_STAMP_IRQHandler RTC_WKUP_IRQHandler FLASH_IRQHandler RCC_IRQHandler EXTI0_IRQHandler EXTI1_IRQHandler EXTI2_IRQHandler EXTI3_IRQHandler EXTI4_IRQHandler DMA1_Stream0_IRQHandler DMA1_Stream1_IRQHandler DMA1_Stream2_IRQHandler DMA1_Stream3_IRQHandler DMA1_Stream4_IRQHandler DMA1_Stream5_IRQHandler DMA1_Stream6_IRQHandler ADC_IRQHandler FDCAN1_IT0_IRQHandler FDCAN2_IT0_IRQHandler FDCAN1_IT1_IRQHandler FDCAN2_IT1_IRQHandler EXTI9_5_IRQHandler TIM1_BRK_IRQHandler TIM1_UP_IRQHandler TIM1_TRG_COM_IRQHandler TIM1_CC_IRQHandler TIM2_IRQHandler TIM3_IRQHandler TIM4_IRQHandler I2C1_EV_IRQHandler I2C1_ER_IRQHandler I2C2_EV_IRQHandler I2C2_ER_IRQHandler SPI1_IRQHandler SPI2_IRQHandler USART1_IRQHandler USART2_IRQHandler USART3_IRQHandler EXTI15_10_IRQHandler RTC_Alarm_IRQHandler TIM8_BRK_TIM12_IRQHandler TIM8_UP_TIM13_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler TIM8_CC_IRQHandler DMA1_Stream7_IRQHandler FMC_IRQHandler SDMMC1_IRQHandler TIM5_IRQHandler SPI3_IRQHandler UART4_IRQHandler UART5_IRQHandler TIM6_DAC_IRQHandler TIM7_IRQHandler DMA2_Stream0_IRQHandler DMA2_Stream1_IRQHandler DMA2_Stream2_IRQHandler DMA2_Stream3_IRQHandler DMA2_Stream4_IRQHandler ETH_IRQHandler ETH_WKUP_IRQHandler FDCAN_CAL_IRQHandler DMA2_Stream5_IRQHandler DMA2_Stream6_IRQHandler DMA2_Stream7_IRQHandler USART6_IRQHandler I2C3_EV_IRQHandler I2C3_ER_IRQHandler OTG_HS_EP1_OUT_IRQHandler OTG_HS_EP1_IN_IRQHandler OTG_HS_WKUP_IRQHandler OTG_HS_IRQHandler DCMI_IRQHandler RNG_IRQHandler FPU_IRQHandler UART7_IRQHandler UART8_IRQHandler SPI4_IRQHandler SPI5_IRQHandler SPI6_IRQHandler SAI1_IRQHandler LTDC_IRQHandler LTDC_ER_IRQHandler DMA2D_IRQHandler SAI2_IRQHandler QUADSPI_IRQHandler LPTIM1_IRQHandler CEC_IRQHandler I2C4_EV_IRQHandler I2C4_ER_IRQHandler SPDIF_RX_IRQHandler OTG_FS_EP1_OUT_IRQHandler OTG_FS_EP1_IN_IRQHandler OTG_FS_WKUP_IRQHandler OTG_FS_IRQHandler DMAMUX1_OVR_IRQHandler HRTIM1_Master_IRQHandler HRTIM1_TIMA_IRQHandler HRTIM1_TIMB_IRQHandler HRTIM1_TIMC_IRQHandler HRTIM1_TIMD_IRQHandler HRTIM1_TIME_IRQHandler HRTIM1_FLT_IRQHandler DFSDM1_FLT0_IRQHandler DFSDM1_FLT1_IRQHandler DFSDM1_FLT2_IRQHandler DFSDM1_FLT3_IRQHandler SAI3_IRQHandler SWPMI1_IRQHandler TIM15_IRQHandler TIM16_IRQHandler TIM17_IRQHandler MDIOS_WKUP_IRQHandler MDIOS_IRQHandler JPEG_IRQHandler MDMA_IRQHandler SDMMC2_IRQHandler HSEM1_IRQHandler ADC3_IRQHandler DMAMUX2_OVR_IRQHandler BDMA_Channel0_IRQHandler BDMA_Channel1_IRQHandler BDMA_Channel2_IRQHandler BDMA_Channel3_IRQHandler BDMA_Channel4_IRQHandler BDMA_Channel5_IRQHandler BDMA_Channel6_IRQHandler BDMA_Channel7_IRQHandler COMP1_IRQHandler LPTIM2_IRQHandler LPTIM3_IRQHandler LPTIM4_IRQHandler LPTIM5_IRQHandler LPUART1_IRQHandler CRS_IRQHandler ECC_IRQHandler SAI4_IRQHandler WAKEUP_PIN_IRQHandler B . ENDP ALIGN ;Инициализация пользовательского стека и кучи IF :DEF:__MICROLIB EXPORT __initial_sp EXPORT __heap_base EXPORT __heap_limit ELSE IMPORT __use_two_region_memory EXPORT __user_initial_stackheap __user_initial_stackheap LDR R0, = Heap_Mem LDR R1, =(Stack_Mem + Stack_Size) LDR R2, = (Heap_Mem + Heap_Size) LDR R3, = Stack_Mem BX LR ALIGN ENDIF END Изменено 14 июля, 2020 пользователем Rivas Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 22 14 июля, 2020 Опубликовано 14 июля, 2020 · Жалоба http://www.keil.com/support/man/docs/armlink/armlink_pge1362065977713.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rivas 0 15 июля, 2020 Опубликовано 15 июля, 2020 · Жалоба 5 часов назад, Forger сказал: http://www.keil.com/support/man/docs/armlink/armlink_pge1362065977713.htm Спасибо. То есть, это можно сделать, только поправив scatter файл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 15 июля, 2020 Опубликовано 15 июля, 2020 (изменено) · Жалоба 8 часов назад, Rivas сказал: Keil как-то странно размещает стек Нормально размещает. Абсолютных адресов размещения секций вы ему не задали. Значит, линкер имеет право размещать секции как угодно по своему усмотрению внутри адресного пространства ОЗУ, лишь бы они не накладывались друг на друга и умещались там. Мог бы стек разместить в начале, потом кучу, потом bss. Или куча-стек-bss. Все варианты правильные и рабочие. Для изменения порядка размещения или задания привязки положения секций к фиксированным адресам надо явно указывать это линкеру в sct-файле. Изменено 15 июля, 2020 пользователем Darth Vader Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 15 июля, 2020 Опубликовано 15 июля, 2020 · Жалоба 1 час назад, Rivas сказал: То есть, это можно сделать, только поправив scatter файл? Распределение памяти - работа линкера. скатерфайл задаёт правила согласно которым линкер это делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 15 июля, 2020 Опубликовано 15 июля, 2020 · Жалоба Вот тут есть полезная статья https://habr.com/ru/post/425071/ Там стек размещают в начале ОЗУ. В свое время это мне помогло найти причину переполнения стека. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 222 15 июля, 2020 Опубликовано 15 июля, 2020 · Жалоба 11 часов назад, Rivas сказал: а вот стек хотелось бы поставить на верх, 0x2408 0000. А зачем? 11 часов назад, Rivas сказал: ;Имя файла : startup_stm32h743xx.s Имейте совесть! Такие портянки в текст сообщения постить неприлично! Их надо размещать под тэгами "Скрытый текст" и "Код". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться