Миландр

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

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




Начать новую тему  Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 2020-авг-09 22:46 
Не в сети

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 341
Организация: ФГУП "РФЯЦ-ВНИИЭФ"
Выкладываю, что у меня получилось.
Поддерживаются 1986ВЕ1/3/4/91/92/93, 1901ВЦ1. Не поддеоживается 1986ВЕ8.
Дополнения, пожелания, исправления, конструктивная критика приветствуются.
В перспективе, он должен быть ещё и кросскомпилируемым. Пока что тестировался только на компиляторе ARM v5.06.
Заготовка под прочие компиляторы в виде макросов и блока условной компиляции уже имеется.
Важен файл линкер-скрипта MDR1986_MemAlloc_ARM.sct. Надо использовать именно его, а не тот, что генерирует Кейл. Там задаются размеры и размещение стека и кучи, чего нет в кейловском. Там это задавалось иным способом в ассемблерном стартапе.
Здесь концепция такая, что раз за размещение объектов в памяти отвечает линкер, то и всё описание стека и кучи должно быть сосредоточено именно в линкер-скрипте, а не в сишных или ассемблерных исходниках.
За основу были взяты файлы CMSIS с сайта ARM (скачать отсюда) и подход, описанный в этом сообщении.
В официальной документации ARM подход к определению стека и кучи описан тут. Использован вариант: Use a scatter file to define ARM_LIB_STACKHEAP, ARM_LIB_STACK, or ARM_LIB_HEAP regions.
Имеющийся в паке/SPL подход к определению стека и кучи в ассемблерном стартапе - это первый вариант в списке: Use the symbols __initial_sp, __heap_base, and __heap_limit. Его минус - данные имена могут быть определены только в ассемблерном файле или в ассемблерной вставке. Т.е. полноценного безассемблерного стартапа при таком подходе сделать не получится.

В архиве во вложении проект для Кейл 5.
Сам стартап - в папке .\RTE\Device\Starup\
Линкер-скрипт - в папке .\MemAlloc\

Как пользоваться в среде Кейл 5:
1. В опциях проекта выбираем интересующий нас МК (для этого должен быть установлен пак для 1986)
2. Добавляем в проект файл system_MDR... для выбранного МК (из папки .\RTE\Device\System\ )
3. В файле линкер-скрипта MDR1986_MemAlloc_ARM.sct (лежит в папке .\MemAlloc\ ) раскомментируем строку с целевым МК.
4. Пересобираем проект. Заходим в отладку, видим в окне переменных нашу таблицу векторов.


Вложения:
Startup_MDR1986VE_1901VC.zip [545.91 КБ]
169 скачиваний
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 1 сообщение ] 

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


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

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


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

Перейти: 

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