Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-ноя-22 05:02

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: startup.mca
СообщениеДобавлено: 2012-ноя-06 10:23 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
hello!
С чем едят startup.mca?
что такое ?start (в keil-овском startup вызывается сразу mail)
как редактировать startup, чтобы вызывались свои обработчики прерываний?
Пытался прикрутить Freertos - зависает где-то между system_init и main.
Проект прикрепил.
Этот же проект в кейле работает.


Вложения:
phyton.rar [955.9 КБ]
Скачиваний: 159
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: startup.mca
СообщениеДобавлено: 2012-ноя-13 06:23 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
Спасибо за ответ из службы поддержки, конкретно Степанову Игорю ООО "Ангиоскан-Электроникс"

1. Проблема вызвана ошибкой в линкере MCLINK, которая связана с алгоритмом
удаления неиспользуемого кода для функций, размещаемых в RAM. Спасибо Вам
большое за обнаружение этой ошибки. Мы сейчас работаем над ее исправлением
(ожидается, что ошибка будет исправлена в ближайшем релизе CodeMaster-ARM).
Для обхода ошибки достаточно исключить из Вашего проекта модуль
MDR32F9Qx_eeprom.c - единственный, в котором используются RAM-функции (в
проекте он реально не используется).

По работе с startup:

2. Метка ?cstart - это начало служебного startup-кода, который выполняется
до передачи управления в функцию main: инициализация статических переменных,
копирование кода RAM-функций, инициализация heap (если в программе
используются функции работы с динамической памятью стандартной библиотеки
C). Этот код выполняется после вызова C-функции SystemInit(), реализация
которой по умолчанию в рамках библиотеки "MDR32F9Qx Standard Peripherals
Library" включена в модуль
CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\system_MDR32F9Qx.c. Для того,
чтобы выполнить собственный startup-код, рекомендуется создать свой модуль,
скопировав в него содержимое system_MDR32F9Qx.c, адаптировать и включить его
в проект вместо system_MDR32F9Qx.c. В частности, вызов собственных функций,
которые должны выполняться на этапе strartup, можно включить в тело функции
SystemInit, после вызова SystemCoreClockUpdate (реализация которой также
находится в модуле system_MDR32F9Qx.c). При реализации собственного
startup-кода нужно помнить, что на этом этапе статические переменные еще не
инициализированы.

3. Для перекрытия обработчика прерывания достаточно реализовать в своем
проекте функцию с таким же именем, которое задано в таблице векторов
прерываний (__Vectors) модуля startup_1986BE9x.mca. Только если по каким-то
причинам обработчики прерываний должны иметь другую конвенцию имен, нужно
делать свой вариант startup_1986BE9x.mca и редактировать таблицу __Vectors
(так как это сделано у Вас). В любом случае, комментировать модули с
реализацией обработчиков по умолчанию, или писать свои аналогичные заглушки
не обязательно - это низкоприоритетные библиотечные модули, которые в случае
перекрытия обработчиков линковаться не будут. Также, см. п. "Обработка
прерываний" (раздел "Обработка прерываний для моделей Cortex-M") Руководства
по компилятору Си CMC-ARM.


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

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB