Например TDA7294

Форум РадиоКот • Просмотр темы - Зачем stm32 требует самостоятельно настраивать startup.s ?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 12:57:24

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 118 ]    , 2, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 16:33:38 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Это повод лично для вас углубить свои знания и потратить время более продуктивно, чем спорить тут о том, о чем вас вообще не спрашивали.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 17:07:46 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
Все ясно - слив засчитан. Можете возвращаться в палату с Наполеоном.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 17:13:27 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
в чем практический смысл записать 0 или любое другое значение в нулевой элемент массива g_pfnVectors, а после в коде присвоить регистру SP адрес стека?

В записи 0 смысла никакого, в коде SP присваивается адрес стека при выполнении кода из RAM, т.к. в этом случае флеш может быть чистым.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 17:39:54 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
Reflector писал(а):
В записи 0 смысла никакого
Я про тоже.
Тем более что ТС на данном этапе менять адрес стека нет необходимости.

Reflector писал(а):
при выполнении кода из RAM, т.к. в этом случае флеш может быть чистым.
Но ведь при этом таблицу векторов прерываний тоже нужно перенести в ОЗУ записью в регистр VTOR.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 18:56:00 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
Спасибо STM за прогрессивную архитектуру. )
STM то тут причём? Архитектуру ядер разработала (или скупила, не знаю) ARM. А вообще, странное желание иметь в поекте код, который непонятно что там делает. А стартап никто не заставляет писать самому, в 99% случаев он уже есть либо в IDE, либо на сайте производителя чипа.

Сейчас плотненько сижу на Microblaze. Компилятор GCC, в стандартной библиотеке стартовый код есть и конфигурируется в среде разработки в зависимости от того какие модули процессора имплементированы. А хотелось бы как для ARM в исходниках. Чисто теоретически, можно самому написать, но времени желко.

Добавлено after 1 minute 8 seconds:
нужно перенести в ОЗУ записью в регистр VTOR.
Не у всех ядер есть VTOR.

Добавлено after 2 minutes 1 second:
в коде SP присваивается адрес стека при выполнении кода из RAM
Это самое простое решение, если отладчик сам этого не делает. Многие сами это деелают, а остальные можно научить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 19:07:00 
Потрогал лапой паяльник
Аватар пользователя

Карма: -14
Рейтинг сообщений: -43
Зарегистрирован: Ср дек 30, 2020 23:05:29
Сообщений: 352
Рейтинг сообщения: 0
Стартап от задачи и типа МК зависит, так что - не проканает общее сделать. Кстати, советую стартап на С (или С++ если у вас второе) написать, зачем с этим асмом сношаться?

Да Си мне нравится больше, чем ассемблер :) .
Да в Эклипсе в блинк-проекте есть "startup.c", лежит в папке newlib, пишут что "Следующие файлы расширяют или заменяют некоторые функции библиотеки newlib". Сама newlib как я понимаю, присутствует как стандартная библиотека компилятора arm-none-eabi-gcc.
Допустим startup.c создаёт некую стандартную структуру исполняемого файла, но непонятно, зачем в startup.c присутствуют функции инициализации hardware, неужели инициализировать устройства нельзя в коде программы, а также инициализация статических констукторов и деструкторов, зачем мне дестукторы если я пишу на Си?

Как я понял в sections.ld
ENTRY(_start) - это запуск функции _start из startup.c. Почему линкер сразу не может указать вход как ENTRY(main) ? Также _exit в микроконтроллера не вызывается, так как МК постоянно работает в цикле, то зачем он вообще? Не ставят же return 0; в AVR main().

То есть startup только очищает память в стандартных секциях, копирует код программы из Flash в RAM и передаёт управление на main() ?

Наверное всё это попытка дать программисту больше контроля, но это пугает после AVR )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 19:33:54 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
Да Си мне нравится больше, чем ассемблер :) .
Ну так пользуйтесь, кто запрещает.

Да в Эклипсе в блинк-проекте есть "startup.c"
Посмотрите VisualGDB. Там под весь STM32 есть неплохие стартапы на С. Если назовёте камень, с которым работаете, могу собственного изготовления подкинуть прикольный.


но непонятно, зачем в startup.c присутствуют функции инициализации hardware, неужели инициализировать устройства нельзя в коде программы,
А теперь представьте, что у вас сегмегты данных, стек или куча находятся в области RAM, которая при включении питания выключена? Или код выполняется из QSPI, которую ещё надо инициализировать для этого.

а также инициализация статических констукторов и деструкторов, зачем мне дестукторы если я пишу на Си?
В том то и прелесть иметь стартап в исходном коде, что вы можете убрать то что вам не надо. Уверены, что нет конструкторов - del. Хотя, ходят слухи, что они и на православном С бывают :)

Почему линкер сразу не может указать вход как ENTRY(main) ?
Потому что перед переходом на main надо сделать много разного колдунства, чтобы всё правильно работало.

Так как _exit в микроконтроллера не вызывается, так как МК постоянно работает в цикле, то зачем он вообще?
А в чём проблема? Кто-то запрещает убрать её вызов? А пустышку линкер и сам выкинет.

То есть startup только очищает память в стандартных секциях, копирует код программы в RAM и передаёт управление на main() и больше ничего?
Ну почему же. Для кортексов в стартапе определяется таблица векторов прерываний, адрес стека, вызов функции инициализации железа. А уже в зависимости от стандартной библиотеки может быть ручная инициализация сегментов данных (занулением и копированием), вызов конструкторов, как это сделано в GCC.

В IAR и Keil, например, инициализацию данных, вызов конструкторов и переход на main делает стандартная библиотека. Такой себе почти AVR-вариант, но таблица векторов прерываний в стартапе.

но это пугает после AVR )
Возьмите готовый и не парьтесь. Какая разница, скомпилирован он заранее в стандартной библиотеке или при сборке проекта.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 21:22:56 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
VladislavS писал(а):
Не у всех ядер есть VTOR.
Тогда не получится запустить программу из ОЗУ использующую прерывания.
Насколько помню VTOR нет в M0 (в них много чего нет), а в остальных должен быть.

VladislavS писал(а):
Возьмите готовый и не парьтесь.
Да я уже дал ссылку на бесплатную IDE где все настроено и необходимые файлы добавляются при создании проекта. Но ТС непонятно что ждет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 21:34:56 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
VladislavS писал(а):
Не у всех ядер есть VTOR.
Тогда не получится запустить программу из ОЗУ использующую прерывания.
А мужики то не знают. Ремапят память и отлаживают.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 21:54:20 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
Адрес начала таблицы векторов прерываний находится в VTOR.
Если регистра нет, то как сообщить МК где таблица прерываний?
Или предлагаете в ОЗУ размещать только код, а таблицу держать вначале флеша?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 22:23:24 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
Таблица векторов при включении находится и работает по адресу 0. Можете посмотреть содержимое VTOR при старте из флэш. Никаких 0х08000000 там, внезапно, не будет. При старте из флэш адреса 0х08000000 отражаются на 0. Именно поэтому прерывания работают из флэш. А теперь делаем финт ушами - ремапим SRAM 0х20000000 на 0 и получаем работающую из SRAM таблицу векторов. Без всяких VTOR. Без VTOR нельзя сдвинуть таблицу прерываний с нуля, но можно поставить в ноль другую память. Не думал, что это объяснять надо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Чт авг 25, 2022 23:15:30 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
Не знаю на счет всех моделей STM32F0, но с теми что имел дело, имеют только один вывод BOOT и для того чтобы отзеркалить ОЗУ в начало адресного пространства, нужно изменить бит конфигурации который заместо BOOT1. То есть все чуть сложнее чем переставить перемычку и так или иначе нужно изменять данные во флеше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 02:47:08 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
Не знаю на счет всех моделей STM32F0, но с теми что имел дело
Ну это же просто. Открываем RM и смотрим биты MEM_MODE в SYSCFG_CFGR1. Без всяких перемычек и конфигурационных бит. Даже проще чем в VTOR записать.

Код:
#ifdef __DEBUG_SRAM__
 // REMAP SRAM -> 0x00000000 для отладки в SRAM
  SYSCFG->CFGR1 = _VAL2FLD(SYSCFG_CFGR1_MEM_MODE,3);
#endif


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 12:16:51 
Потрогал лапой паяльник
Аватар пользователя

Карма: -14
Рейтинг сообщений: -43
Зарегистрирован: Ср дек 30, 2020 23:05:29
Сообщений: 352
Рейтинг сообщения: 1
ddr4, если не нравится - не пользуйся ARMянами. Пользуйся восьмибитками: STM8, 5051 и т.д., и т.п. Там по умолчанию ни стартап, ни линкер-скрипт не нужны, т.к. все "знает компилятор". Правда, там убогий sdcc вместо gcc… Да и производительность (+периферия) намного слабей, хотя цена не сильно-то отличается.

ddr4 писал(а):
На AVR прокатывало.
Пишите дальше на AVR.
Не стоит сравнивать детский трехкалесный велосипед профессиональным мотоциклом! То что прокатывает на велосипеде, не факт что сработает на мотоцикле.

Я с радостью продолжал бы пользоваться AVR (ардуино) и меня там устраивает абсолютно всё, но не хватает RAM. Дип-чипы старших моделей Атмега644/1284 стоят в 3 раза дороже плат stm32. Приобрести платы на stm8 тоже нет возможности, а smd-чипы без разводки без надобности. Поэтому решил попробовать плату с stm32.
То что цена Атмега644/1284 в 3 раза выше stm32, видимо свидетельствует о их популярности, которая продиктована в том числе и простотой программирования. Которая включает в себя и отсутствие необходимости наблюдать низкоуровневые коды компилятора (в случае makefile-проекта) :)).
Я согласен что эти коды стандартны и ничем не мешают, однако наблюдать их приходится, а раз наблюдаешь, то появляется желание понять что это и как работает - а с этим проблема, которая вызывает отрицательные эмоции :) . Возможно в том числе, чтобы не видеть эти низкоуровневые скрипты люди используют Атмеги :) .
Понятно что можно использовать всякие Арудины-IDE в том числе и для stm32, но мне хотелось бы как и раньше, иметь небольшой makefile-проект на Си.
У меня прошивка Ардуины использует 2 кБ RAM на Атмега328, но приходится усложнять код, чтобы он влазил. И с целью упрощения кода и приобреталась stm32, однако быстрого упрощения не получилось. И когда наблюдаешь кучу стандартных обёрток (hal, cmsis, newlib) и startup.s + скрипты компоновщика, а hex - блинка весит 27кБ (больше чем hex большой прошивки на Ардуино) - это неприятно удивляет. Это ведь только начало, даже код не начал переводить, а уже столько (пусть и мнимых) проблем. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 12:33:20 
Друг Кота
Аватар пользователя

Карма: 17
Рейтинг сообщений: 467
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 5582
Откуда: Воронеж
Рейтинг сообщения: 0
В ардуине (та, которая IDE) от АВРов не видно почти ничего.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 12:56:23 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
появляется желание понять что это и как работает - а с этим проблема, которая вызывает отрицательные эмоции

Тогда лучше в это дело не лезть, если от него лишь отрицательные эмоции!
Если хочешь разобраться - разбирайся досконально, не хочешь — пользуйся абдуриной или всякими калокубами. Кстати, тебе, наверное, калокуб понравится: там вообще думать не нужно и тупо мышей щелкать...
Цитата:
hex - блинка весит 27кБ

Мегарукожопие. ЕМНИП, самый короткий блинк на STM32 — около 40 байт. Если добавить USB и минимальный функционал (период там изменять) - будет 4кБ. Чтобы родилось 27кБ, нужно сильно постараться.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 13:32:29 
Потрогал лапой паяльник
Аватар пользователя

Карма: -14
Рейтинг сообщений: -43
Зарегистрирован: Ср дек 30, 2020 23:05:29
Сообщений: 352
Рейтинг сообщения: 0
Да в Эклипсе в блинк-проекте есть "startup.c"
Посмотрите VisualGDB. Там под весь STM32 есть неплохие стартапы на С. Если назовёте камень, с которым работаете, могу собственного изготовления подкинуть прикольный.

Камень stm32f401. Я уже попривык к стартапу из Эклипса. В принципе понятно, если не считать описания секций в "sections.ld".
Спасибо, да было бы интересно посмотреть на прикольные стартапы.
Ниже тоже старт, но не понятно как он работает. Как мне кажется он ничего не инициализирует (RAM), применяется в примере блинк stm32f4.

startup_stm32f4.asm
Код:
global burn2_main
global burn2_systick

dd 0x20000678  
; ; Установить указатель стека
dd 0x08000009  
; Вектор сброса, и прыжок на адрес 8
B burn2_main          
; Ветка в main (это фактически в векторе прерываний ??)
align 4
dd 0x0  
; undefined 0xc
dd 0x0  
; undefined 0x10
dd 0x0  
; undefined 0x14
dd 0x0  
; undefined 0x18
dd 0x0  
; undefined 0x1c
dd 0x0  
; undefined 0x20
dd 0x0  
; undefined 0x24
dd 0x0  
; undefined 0x28
dd 0x0  
; undefined 0x2c
dd 0x0  
; undefined 0x30
dd 0x0  
; undefined 0x34
dd 0x0  
; undefined 0x38
dd 0x08000041  
; undefined 0x3c --> systick, метод на данный момент, чтобы перейти к следующему адресу
B burn2_systick  
; неопределённая 0x40 инструкция прыжка к systick обработчику
align 4

; сброс обработчиков:
dd 0x0  ; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined
dd 0x0  
; undefined


stm32f4.mmap
Код:
MEMORY flash LOCATION=0x08000000 SIZE=0x10000 {
 SECTION(code)
}

MEMORY ram LOCATION=0x20000000 SIZE=0x10000 {
 SECTION(data)
}


Для кортексов в стартапе определяется таблица векторов прерываний, адрес стека, вызов функции инициализации железа.

Про векторы прерываний в стартапе сказано только следующее:
Чем это может быть полезно сказать сложно. :)
Код:
 /* Определение секций */

SECTIONS
{
    /*
     * Для устройств Cortex-M начало кода запуска хранится в
     * разделе .isr_vector, который идет во FLASH.
     */
    .isr_vector : ALIGN(4)
    {
        FILL(0xFF)
       
        __vectors_start = ABSOLUTE(.) ;
        __vectors_start__ = ABSOLUTE(.) ; /* STM спец.определение */
        KEEP(*(.isr_vector))        /* Векторы прерываний */
       
      KEEP(*(.cfmconfig))         /* слова конфигурации Freescale */   
           
        /*
          * Этот раздел создан для удобства, чтобы хранить
          * код запуска в начале области флэш-памяти, надеясь, что
          * это повысит читабельность листинга.
        */

        *(.after_vectors .after_vectors.*)   /* Стартап код и ISR */

    } >FLASH


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 13:48:06 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Про векторы прерываний очень хорошо сказано в Programming Manual на серию Кортексов. Для M3, стоящем в F401 - это будет документ PM0214, стр.40. Табличка с определенной структурой, в которую помещаются значения адресов, по которым располагается тот или иной исполняемый код, вызываемый при наступлении события прерыавния/исключения. Вторая строчка таблички от начала называется reset Vector и она хранит адрес, по которому расположена первая инструкция исполняемого кода, вызываемая сразу после события сброса МК и которая будет выполнена первой инструкцией. Помещаться эта инструкция может в любом месте из диапазона разрешенных адресов для исполнения инструкций.
Скрипи загрузчика .ld размещает секции в бинарном файле по определенным адресам. Табличка векторов тоже может быть помещена не в самом начале флеша, а где-нить в другом месте, о чем нужно дополнительно сообщить микроконтроллеру в коде программы, изменив VTOR (там, где он есть).
Именно скрипт .ld будет ответственнен за то, что куда кладется на этапе компиляции
В зависимости от конкретной IDE и кмопилятора, состав и синтаксис файлов запуска может отличаться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 14:28:00 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
VladislavS писал(а):
Открываем RM и смотрим биты MEM_MODE в SYSCFG_CFGR1. Без всяких перемычек и конфигурационных бит.
Спасибо. Видимо я невнимательно читал RM на F0...

ddr4 писал(а):
Понятно что можно использовать всякие Арудины-IDE в том числе и для stm32, но мне хотелось бы как и раньше, иметь небольшой makefile-проект на Си.
Вы в ArduinoIDE писали makefile?

ddr4 писал(а):
И когда наблюдаешь кучу стандартных обёрток (hal, cmsis, newlib) и startup.s + скрипты компоновщика, а hex - блинка весит 27кБ
Что-то неправильно делаете.
Блинк 48 байт download/file.php?id=312468
Примерно килобайт на SPL download/file.php?id=318144

ddr4 писал(а):
Ниже тоже старт, но не понятно как он работает. Как мне кажется он ничего не инициализирует (RAM), применяется в примере блинк stm32f4.
Посмотрите стартап из архива и сравните с тем что у вас.


Вложения:
startup_stm32f401xe.zip [3.94 KiB]
Скачиваний: 56
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Зачем stm32 требует самостоятельно настраивать startup.s
СообщениеДобавлено: Пт авг 26, 2022 15:10:40 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
Про векторы прерываний в стартапе сказано только следующее:
Код:
 /* Определение секций */

SECTIONS
{
    /*
     * Для устройств Cortex-M начало кода запуска хранится в
     * разделе .isr_vector, который идет во FLASH.
     */
    .isr_vector : ALIGN(4)
    {
        FILL(0xFF)
       
        __vectors_start = ABSOLUTE(.) ;
        __vectors_start__ = ABSOLUTE(.) ; /* STM спец.определение */
        KEEP(*(.isr_vector))        /* Векторы прерываний */
       
      KEEP(*(.cfmconfig))         /* слова конфигурации Freescale */   
           
        /*
          * Этот раздел создан для удобства, чтобы хранить
          * код запуска в начале области флэш-памяти, надеясь, что
          * это повысит читабельность листинга.
        */

        *(.after_vectors .after_vectors.*)   /* Стартап код и ISR */

    } >FLASH
Вы путаете конфигурационный файл (скрипт) линкера и стартап. Первое это правила размещения кода и данных в памяти. Приведённый вами фрагмент рассказывает линкеру куда разместить таблицу. Стартап же это код и данные (та же таблица векторов), которые компилируются компилятором.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 118 ]    , 2, , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: shalfey и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y