Миландр

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

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




Начать новую тему  Ответить на тему  [ 3 сообщения ] 
Автор Сообщение
СообщениеДобавлено: 2017-окт-10 10:32 
Не в сети
Аватара пользователя

Зарегистрирован: 2010-июл-23 13:20
Сообщения: 68
Откуда: КБ "Аметист"
Добрый день.

Работаем с 1986ВЕ4У1 (код даты 1610), gcc (gcc-arm-none-eabi-5_4-2016q3), openocd (0.10.0, адаптер - Segger J-Link) и emdr1986x-std-per-lib (master).ard

Нарисовал простой пример (архив в приложении), ранее отлично работавший в перечисленной связке на 1986ВЕ91Т, и получил следующую проблему: при возврате из первой С-функции (любой) возникает HardFault. Порывшись в интернетах нашел предположение, что это связано с порчей стека при переходе.

Собственно, вопрос: есть ли у кого-нибудь заведомо рабочий пример для ВЕ4 для gcc?


Вложения:
Комментарий к файлу: Пример программы для ВЕ4 (gcc)
test_ve4.zip [98.3 КБ]
316 скачиваний
Вернуться к началу
СообщениеДобавлено: 2017-окт-11 08:42 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1603
Откуда: Тула
А как выглядит asm-код возврата и какое содержимое стека и регистров ядра при этом?

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2020-сен-14 17:46 
Не в сети
Аватара пользователя

Зарегистрирован: 2020-сен-14 13:14
Сообщения: 1
Организация: НПП "Стрела"
Всем доброго дня! Хотел поделиться опытом прошивки и отладки 1986ВЕ4У через OpenOCD+Eclipse. Надеюсь, это окажется кому-то полезным.

Проблема возникала при попытке отладить контроллер, который после прожига в абстрактных местах мог упасть в HardFault. Начав копать в направлении размещения программы в памяти, я обратил внимание, что OpenOCD не может корректно стереть внутренню flash. После некоторых экспериментов я нашёл конфигурацию, при которой всё корректно работает.
Команда создания банка флеш-памяти:
flash bank $_CHIPNAME.flash mdr 0x00000000 0x20000 0 0 $_TARGETNAME 0 256 1
Параметры команды по порядку слева направо:
  • Имя банка флеш-памяти
  • Драйвер работы с флеш-памятью (в нашем случае mdr - NOR flash on Milandr Cortex-M based controllers)
  • Начальный адрес 0х00000000.
  • Общий объём 131072 (0x20000) байта.
  • Ширина чипа флеш-памяти в байтах. Игнорируется. (Width of the flash chip, in bytes; ignored for most microcontroller drivers)
  • Ширина шины доступа к чипу в байтах. Игнорируется (Width of the data bus used to access the chip, in bytes; ignored for most microcontroller drivers)
  • Имя цели, через которое идёт подача команд на контроллер памяти.
  • 0 - основная память
  • Количество страниц - 256 (по 512 байт).
  • В 1 одной странице 1 сектор.

Полное описание команд работы со внутренней флеш-памятью можно посмотреть здесь:
http://openocd.org/doc/html/Flash-Commands.html

К сообщению прикрепляю архив со скриптом запуска и картинками настройки конифгурации в Eclipse.
Файл 1986ve4u.cfg перенести в {путь до openocd}/scripts/target/. В моём случае это /usr/local/share/openocd/scripts/target.


Вложения:
1986ve4u_openocd.zip [166.82 КБ]
137 скачиваний
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 3 сообщения ] 

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


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

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


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

Перейти: 

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