Rivas
-
Постов
22 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Rivas
-
-
14 минут назад, jcxz сказал:
Я говорю не про Москву, а про Россию. Если вы жили в Москве, то у вас всё было. Но москвичи постоянно забывают, что РФ не ограничивается МКАДом.
6 минут назад, haker_fox сказал:В 2003 году мне было 17 лет, в Иркутске инет был. Да, диалап. 33400. Книга была только одна, до сих пор удивляюсь, как её завезли. Про PIC16F84. Посылку из Москвы с этими микроконтроллерами ждал около месяца...
Завязывайте. Если человеку нужен будет ответ на вопрос, по которому создавалась тема, он не сможет разобраться в этих спорах, и не найдет ответ.(если бы создатель темы мог её редактировать, то оставался бы вопрос и ответ, очень удобно для пользователя)
-
2 минуты назад, VladislavS сказал:
Разницу между arm-arm--none-eabi и gcc-arm-none-eabi не наблюдаем?
Избаловали народ кортексами. Раньше берёшь в руки ARM, даташит на него и первым делом flashloader на внешнюю флэшку пишешь. Сейчас уже большинство и не знает что это такое. Да что далеко холить, скрипт линкера поправить уже целая трагедия. А стартап изменить вообще табу даже для некоторых "профессионалов" стало.
Все, понял, разные компиляторы.
Стартап, это мой следующий пункт, потом тактирование. Ни каких готовых решений использовать не буду, так что ждите кучу "умных вопросов")))
-
Опубликовано · Изменено пользователем Rivas · Пожаловаться
40 минут назад, Obam сказал:"Ай, маладэсь тибэ..."
как на жалость-то надавил ;-)
У остальных, типа, не гранаты рвались ;-), прикинь, что было лет 17 назад, когда 7TDMI вдруг доступны стали (-8ЖНадо как-то находить подход к людям. Вот буду 17 лет в теме, тогда ко мне будут находить подход))) 7TDMI попроще МК, может с него и надо было начинать. Как тут принято, после того как вопрошающий получает ответ, он должен закрыть тему?
-
1 час назад, VladislavS сказал:
Не понял вопроса. Это для компилятора ARM v6 параметры. Он встроен в keil и в последних версиях даже по умолчанию включается.
Вот, верхняя строчка из скаттер файлы, который Вы опубликовали:
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m4 -xc
Я всегда думал, что это , open sourse, компилятор - gcc arm-none-eabi.
-
Опубликовано · Изменено пользователем Rivas · Пожаловаться
10 минут назад, Сергей Борщ сказал:А разве редактор связей (линкер) не умеет располагать секции последовательно, без лишней писанины "+ .bss size"?
Вот, моя полная цитата, в конце, в скобках, как раз то о чем Вы пишите:
"Так как: под .bss секцию выделяется памяти "сколько нужно", а секция heap начинается с адреса 0x24000060 и если под .bss секцию потребуется памяти больше, чем 96, то она перекроет секцию heap. Значит, секция heap должна начинаться с адреса 0x24000000 + .bss size(по умолчанию, линкер скрипт, так и делает, так что этот регион можно просто убрать)"
-
Спасибо Вам, за интересный шаблон. arm-arm-none-eabi можно прикрутить к Keil?
-
Опубликовано · Изменено пользователем Rivas · Пожаловаться
15 часов назад, Obam сказал:Вопросы (ваши?):
- да, в секции .bss с адреса 0x24000000 был положен объектный модуль libspace.o; 96 не означает, а обозначает его размер (столбец озаглавлен "Size" - "размер" по-нашему) и не "максимальный, который может занимать .bss секция", а тот, что получился (сколько переменных нужно проинициировать столько и потребуется);
- HEAP ("куча") - тоже секция (столбец озаглавлен "Type" - "тип", в смысле "разновидность"); почему начинается с 0x24000060 понятно, нет? Если области в памяти идут "без дырок" между ними, а предыдущая размером 96 байт начиналась с 0x24000000, то следующая с какого адреса начнётся? 96 это 0x60. 512 обозначает размер секции HEAP (столбец озаглавлен "Size" - "размер" по-нашему); секция закончится известно где: 0x24000060+0x(сам в hex преобразуешь, не барин, чай)-1;
- расмер в байтах;
- указатель стека это регистр SP (R13) в ядре, а это адрес верхушки стека.
PS: пока объяснил даже сам понял ;-)Спасибо Вам, за конструктивный ответ. Выходит, что в скаттер файле, секцию heap, я объявил не правильно. Так как: под .bss секцию выделяется памяти "сколько нужно", а секция heap начинается с адреса 0x24000060 и если под .bss секцию потребуется памяти больше, чем 96, то она перекроет секцию heap. Значит, секция heap должна начинаться с адреса 0x24000000 + .bss size(по умолчанию, линкер скрипт, так и делает, так что этот регион можно просто убрать)?
Так же спасибо всем остальным участникам консилиума: - дающем не полные ответы(что бы клиент имел возможность подумать самостоятельно..., но в большинстве случаев лучше дать явный ответ...), специалистам по грамматике и терминологии, в общем всем тем, кто так или иначе издевался(по доброму) на протяжении 4-5 дней, если с такой скоростью давать ответы на простые вопросы, то у желающих чего-то узнать, может пропасть интерес к освоению предмета.(у меня один референс мануална 3000стр., датащит - 300стр., программ мануал ARM - 250стр. и это не исчерпывающий список литературы и все это не легко. Я не жалуюсь, просто у людей которые узнают, с нуля, эту тему и так в голове как-будто гранату взорвали...)
Так же, если вдруг, в эту тему, зайдет такой же, как и я "специалист". Оставляю для него артефакт, в виде ссылки на литературу, на русском языке, она написана под ядра М4, но большинство утверждений справедливо и для М7. Так же, там имеется общая информация про Keil.
-
Опубликовано · Изменено пользователем Rivas · Пожаловаться
20 часов назад, Obam сказал:STACK - символическое имя
ВуалЯ: таблица с "шапкой"Symbol Name Value Ov Type Size Object(Section) .bss 0x24000000 Section 96 libspace.o(.bss) HEAP 0x24000060 Section 512 startup_stm32h743xx.o(HEAP) Heap_Mem 0x24000060 Data 512 startup_stm32h743xx.o(HEAP) STACK 0x2407fc00 Section 1024 startup_stm32h743xx.o(STACK) __initial_sp 0x24080000 Data 0 startup_stm32h743xx.o(STACK)
PS: и теперь по-китайски? Ж8-)
Блин, парни, Вы пишете обо всём..., кроме ответов на вопрос. Разжуйте таблицу, пожалуйста.
-
2 минуты назад, x893 сказал:
Процесс будет не быстрым.
Обучение, быстрым не бывает.
-
4 минуты назад, VladislavS сказал:
Ну раз не пользуетесь, то размещение, которое keil делает по умолчанию, использовать и не выпендриваться.
Где, что размещать, я разберусь сам. Здесь, я затем что бы разобраться, как размещать.
-
2 часа назад, uriy сказал:
Вот из вашего мап файла
.bss 0x24000000 Section 96 libspace.o(.bss) HEAP 0x24000060 Section 512 startup_stm32h743xx.o(HEAP) Heap_Mem 0x24000060 Data 512 startup_stm32h743xx.o(HEAP) STACK 0x2407fc00 Section 1024 startup_stm32h743xx.o(STACK) __initial_sp 0x24080000 Data 0 startup_stm32h743xx.o(STACK)
То есть:
-.bss секция начинается с адреса 0x24000000 и заканчивается по адресу 0x24000060, что означает 96 - это максимальный объем, который может занимать .bss секция?
-Heap и начинается с адреса 0x24000060, а где заканчивается не известно, что означает 512?
- Heap_mem - это из файла startup, зарезервированная область под кучу и она равна 0x00000200, значит что куча заканчивается по адресу 0x24000260? Что означает 512?
- STACK - это адрес конца стека(если к этому адресу, прибавить размер области под стек, то получится 0x24080000)?
- _initial_sp - это адрес указателя стека?
34 минуты назад, VladislavS сказал:Вообще, организация памяти у этого чипа несколько сложнее. Цитата с сайта производителя
По хорошему, все эти типы памяти надо описать и использовать по назначению.
Да, я в курсе, пока ими не пользуюсь, тут бы со стеком и кучей разобраться, а потом затактировать МК...)))
-
Опубликовано · Изменено пользователем Rivas · Пожаловаться
1 час назад, uriy сказал:Вот тут https://m.habr.com/ru/post/425071/ описано то что вам нужно.
У меня по этой инструкции все получилось.
Да, я уже создавал тему, с вопросом: - "как поместить указатель стека, в другое место?" И Вы, мне скидывали эту ссылку(спасибо Вам за это). Как раз, прочитав эту статью, я дописывал в scatter file дополнительные регионы. И теперь хочу узнать, достиг я чего хотел или нет? Там к вопросу прилагается scatter file и map, может кто из знающих взглянет и ответит. Пока что, появляются специалисты по грамматике...)))
2 часа назад, SII сказал:scatter fail -- отказ scatter. А файл scatter -- это scatter file.
Я понял, у меня в вопросе есть грамматическая ошибка, сейчас исправлю. Спасибо.
-
1 минуту назад, jcxz сказал:
Или не выёживайтесь и пишите по-русски раз английского не знаете или воспользуйтесь гугл-переводчиком хотя-бы. Чтоб вздор всякий не писать. Тогда может вас поймут...
Пишу на русскому: "Если Вы, прочитали мой вопрос и не поняли, что там написано, не пишите ответ, не надо отвечать."
-
5 минут назад, Obam сказал:
Править сбой\отказ scatter-файла (scatter file) никто не умеет ;-)Я, ни строчки не понял, из того что Вы написали. Мой вопрос был в самом начале темы, жду человека который может ответить на него или подсказать.... Ответы в стиле: " Я очень крутой специалист, и сейчас я расскажу много терминов и вообще, такими мелочами я не занимаюсь, а занимаюсь я серьезными вещами и появляюсь когда всему пи...ец, и тут же все налаживаю", вот такие ответы, как китайский язык. Про сбой\отказ, я вообще нечего не писал.
-
1 минуту назад, jcxz сказал:
Тогда потеряете часть ОЗУ впустую. Если уж что-то ловить через MPU, то тогда стек нужно в самом низу ОЗУ располагать.
Может и так. Только для того, что бы куда-то ставить стек, нужно уметь править scatter fail, вот я попробовал поправить его и теперь интересуюсь у знающих людей, правильно ли я все сделал?
-
12 минут назад, jcxz сказал:
Зачем?
bss и так в низу, куча и так после bss, а вот стек... я как понял лучше что бы он был вверху и рос вниз. С помощью MPU, можно установить зону в низу стека и тогда будет проще ловить ошибки переполнения стека. Я делаю для себя удобный шаблон, который будет мне понятен, что бы от него уже двигаться дальше, я не использую библиотеки типа HAL, LL и затактировать МК хочу сам, что бы во всем разобраться.(может это глупо, но другого выхода научиться я не вижу).
-
Здравствуйте. Обзавелся Stm32H743IITx. Это мой первый МК. В программировании я не ас(школьный уровень), всех терминов не знаю. Пытаюсь программировать в Keil. У Keil, есть особенность(по крайней мере, у меня она есть), он ставит: bss, кучу и стек, друг за другом(в том порядке в котором я написал). Я пытаюсь сделать так, что бы: в начале памяти был bss, за ним куча, а вверху был стек. Так как линкер скрипт, у Keil, не доступен для редактирования и к нему можно подобраться через scatter file, я отредактировал scatter file. Заглянул в map файл и вроде как все получилось, но с моими знаниями по данному вопросу, меня терзают смутные сомнения. И если я сейчас ошибусь в дальнейшем могут быть проблемы и их причину сложно будет отыскать, поэтому прошу взглянуть на все, что я написал и подвергнуть конструктивной критики, что-то посоветовать? Прилагаю scatter и map файлы.
Дано:
Начало оперативной памяти: 0x24000000
Конец оперативной памяти: 0x24080000
Размер стека: 0x00000400
Размер кучи: 0x00000200
-
5 часов назад, Forger сказал:
Спасибо. То есть, это можно сделать, только поправив scatter файл?
-
Опубликовано · Изменено пользователем Rivas · Пожаловаться
Здравствуйте. 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 0x00000400AREA 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_limitPRESERVE8
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 PROCEXPORT 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_IRQHandlerB .
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_stackheapLDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LRALIGN
ENDIF
END
-
7 минут назад, haker_fox сказал:
Скачайте лучший компилятор для армов. В нём есть примеры. Лучший компилятор это iar.
Не могли бы, Вы, дать ссылку на него?
-
Здравствуйте. Подскажите, кто-нибудь знает как запускать ядро Cortex®-M7, какая логика его запуска, какую переферию ядра обязательно включать, с чего вообще начать? В референсах, все расплывчато написано, типа: - "возможно перед запуском вы захотите запустить.... и если вы хотите то можете запустить FPU."
Указатель стека и scatter file
в Keil
Опубликовано · Изменено пользователем Rivas · Пожаловаться
Сейчас с Китая до СПб, плату, полтора месяца ждал, в интернете, 90 процентов примеров, как мигнуть светодиодом. Информация есть, но она разбросана по крупицам. Так что, не особо все и поменялось.