Миландр

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

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 5 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Работа 1986ВЕ9х в Eclipse IDE
СообщениеДобавлено: 2021-май-29 19:02 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 75
Организация: АО "МНИИ" АГАТ"
Доброго всем дня!
Наконец то сделал рабочую сборку Eclipse для ARM и проверил ее на STM32. Потом сделал проект тестовый для 1986ВЕ92. Взял исходники из KEIL и запихнул в Eclipse. Долго мучался с настройками и компилятором. В конце-концов что-то компилирует, но компилирует какой-то хлам. Т.е. адреса в таблице векторов и адреса функций все одинаковые.
Я в Eclipse и GCC не силен, может у кого нибудь есть рабочий шаблон проекта 1986ВЕ9х для Eclipse? Буду очень признателен.


Вернуться к началу
 Заголовок сообщения: Re: Работа 1986ВЕ9х в Eclipse IDE
СообщениеДобавлено: 2021-июн-01 16:30 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 306
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
ElectroAlex писал(а): *
Доброго всем дня!
Наконец то сделал рабочую сборку Eclipse для ARM и проверил ее на STM32. Потом сделал проект тестовый для 1986ВЕ92. Взял исходники из KEIL и запихнул в Eclipse. Долго мучался с настройками и компилятором. В конце-концов что-то компилирует, но компилирует какой-то хлам. Т.е. адреса в таблице векторов и адреса функций все одинаковые.
Я в Eclipse и GCC не силен, может у кого нибудь есть рабочий шаблон проекта 1986ВЕ9х для Eclipse? Буду очень признателен.
Здравствуйте!

К сожалению, официально поддержкой микроконтроллеров Миландр в среде Eclipse компания Миландр не занимается, но не исключено, что такие работы будут проведены в будущем. В свою очередь, важно отметить большой вклад участников этого форума в развитие данной темы, поэтому в качестве справки обратите, пожалуйста, внимание на тему форума, где разбирается запуск микроконтроллера К1986ВЕ92QI в среде Eclipse.

В целом окружение для работы с микроконтроллерами на базе архитектуры ARM или схожей с ней в среде Eclipse сводится к написанию двух файлов: файла startup.s и файла сборщика *.ld. Первый файл традиционно описывает ключевые параметры по куче/стеку, а также таблице векторов прерываний, когда как файл линковки описывает адреса, по которым будет располагаться программа, написанная разработчиком. Вероятно, описанное Вами поведение связано именно с некорректным описанием файла *.ld или вовсе его отсутствием. В таком случае за основу Вы можете взять проект пользователя, а в качестве практики для самостоятельной разработки взять исходные заготовки от компании ARM под компилятор GCC как по файлу startup.s, так и по файлу *.ld - файлы доступны в составе библиотеки CMSIS репозитория ARM на GitHub

Соответственно, в самой базовой конфигурации, файл линковки должен отображать корректные адреса с размером как внутренней памяти, так и памяти ОЗУ. Например, для микроконтроллеров семейства 1986ВЕ9х это должно выглядеть следующим образом:
...
__ROM_BASE = 0x08000000;
__ROM_SIZE = 0x00020000;
...
__RAM_BASE = 0x20000000;
__RAM_SIZE = 0x00008000;
...
Спасибо за обращение.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Работа 1986ВЕ9х в Eclipse IDE
СообщениеДобавлено: 2021-июн-10 21:53 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 75
Организация: АО "МНИИ" АГАТ"
Написал тестовый проект. Даже заработало.
Для теста сделал вызов прерывания таймера №2, при этом в прерывание программа входит, а из прерывания не может выйти (зависает на месте). Может кто догадывается в чем причина?
Проект приложил.


Вложения:
MDR32USBBootloader.zip [96.61 КБ]
9 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Работа 1986ВЕ9х в Eclipse IDE
СообщениеДобавлено: 2021-июн-10 23:46 
Не в сети

Зарегистрирован: 2018-мар-18 15:49
Сообщения: 249
Организация: StartMilandr.ru
В таймере надо сбросить бит
MDR_TIMER2->STATUS &= ~TIMER_STATUS_CNT_ARR;
и сделать это первой операцией, а то будет двойное прерывание
https://github.com/StartMilandr/Bugs/tr ... EventClear

UPD: Ссылка старая, лучше писать 0 в биты которые надо стереть, чем маскировать регистр через чтение-модификацию-запись
__STATIC_INLINE void     MDR_Timer_ClearEvent(MDR_TIMER_Type *TIMERx, uint32_t eventFlags) {TIMERx->STATUS = ~eventFlags;}
__STATIC_INLINE void     MDR_Timer_ClearEventAll(MDR_TIMER_Type *TIMERx) {TIMERx->STATUS = 0;}


Вернуться к началу
 Заголовок сообщения: Re: Работа 1986ВЕ9х в Eclipse IDE
СообщениеДобавлено: 2021-июн-11 16:01 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 75
Организация: АО "МНИИ" АГАТ"
Да действительно, недосмотрел. Глаз уже замылился - думал что напутал с инициализацией стека или настройками памяти.
Спасибо за подсказку.


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

Часовой пояс: UTC+03:00


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

Сейчас этот форум просматривают: Google [Bot] и 2 гостя


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

Перейти: 

cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB