Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2013-июл-24 19:52 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Скажите, кто знает, чем отличается программа, отлаживаемая в симуляторе, от той же программы, загруженной через JEm-ARM-v2 в микропроцессор 1986ВЕ91Т на отл.плате?
Работаю в ФИТОН-овском CodeMaster-ARM версии 2.32.00. Программа (в числе прочего) считает свою контрольную сумму в EEPROM по алгоритму CRC32 (от начала таблицы векторов до конца последнего перемещаемого сегмента).
Несколько раз пересобираю проект в симуляторе, запускаю и записываю контрольную сумму, она, разумеется, каждый раз одинаковая.
Подключаю отладочную плату через JEm-ARM-v2, несколько раз записываю (с предварительным стиранием EEPROM) программу - без перетрансляции - в микропроцессор и запускаю оттуда - контрольная сумма тоже каждый раз получается одинаковая, но другая, чем была в симуляторе.
Беру другой, более сложный проект (основа та же, но для другого изделия) - и с ним та же история: КС программы в симуляторе одна, в МП на отл.плате другая. В этом втором проекте считается (той же подпрограммой) ещё и КС эталонного массива констант (абсолютный раздел в EEPROM), так вот эта сумма в симуляторе и в МП совпадают.
Почему так может происходить? Ведь программа в симуляторе и в МП та же самая! Или при записи в МП в программу вносятся какие-то изменения?

_________________
Странник


Последний раз редактировалось stranderer 2013-июл-24 19:55, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2013-июл-25 08:11 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1271
Откуда: АО "ПКК Миландр"
stranderer писал(а):
Скажите, кто знает, чем отличается программа, отлаживаемая в симуляторе, от той же программы, загруженной через JEm-ARM-v2 в микропроцессор 1986ВЕ91Т на отл.плате?
Работаю в ФИТОН-овском CodeMaster-ARM версии 2.32.00. Программа (в числе прочего) считает свою контрольную сумму в EEPROM по алгоритму CRC32 (от начала таблицы векторов до конца последнего перемещаемого сегмента).
Несколько раз пересобираю проект в симуляторе, запускаю и записываю контрольную сумму, она, разумеется, каждый раз одинаковая.
Подключаю отладочную плату через JEm-ARM-v2, несколько раз записываю (с предварительным стиранием EEPROM) программу - без перетрансляции - в микропроцессор и запускаю оттуда - контрольная сумма тоже каждый раз получается одинаковая, но другая, чем была в симуляторе.
Беру другой, более сложный проект (основа та же, но для другого изделия) - и с ним та же история: КС программы в симуляторе одна, в МП на отл.плате другая. В этом втором проекте считается (той же подпрограммой) ещё и КС эталонного массива констант (абсолютный раздел в EEPROM), так вот эта сумма в симуляторе и в МП совпадают.
Почему так может происходить? Ведь программа в симуляторе и в МП та же самая! Или при записи в МП в программу вносятся какие-то изменения?


Попробуйте выгрузить их и сравнить.
Скорее всего дело в неиспользуемых ячейках, во Flash они единичках, а в симуляторе в нулях.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2013-июл-25 20:13 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Спасибо, попробую. А "неиспользуемые ячейки" -- это GAP-ы, возникающие при выравнивании или что-то ещё?

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2013-июл-27 22:02 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
-=Sergei=- писал(а):
Попробуйте выгрузить их и сравнить.
Скорее всего дело в неиспользуемых ячейках, во Flash они единичках, а в симуляторе в нулях.


Я не понял, как можно выгрузить программу из EEPROM микропроцессора в файл. Подскажите, пожалуйста, как это сделать?

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2013-авг-27 13:36 
Не в сети
Moderator

Зарегистрирован: 2010-мар-31 10:44
Сообщения: 54
Откуда: ООО "Фирма Фитон"
stranderer писал(а):
-=Sergei=- писал(а):
Попробуйте выгрузить их и сравнить.
Скорее всего дело в неиспользуемых ячейках, во Flash они единичках, а в симуляторе в нулях.


Я не понял, как можно выгрузить программу из EEPROM микропроцессора в файл. Подскажите, пожалуйста, как это сделать?

Меню Файл / Записать файл из памяти процессора... В открывшемся диалоге указываете начальный и конечный адреса сохраняемого блока памяти, выбираете формат файла, указываете имя файла и жмете ОК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2014-мар-01 10:43 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Спасибо!

Кто-нибудь знает, есть ли способ во время трансляции С-модуля в CMC-ARM определить, какой отладчик выбран? Хотя бы симулятор или что-то другое. Есть ли какой-нибудь предопределённый #define, переменная или ещё что-то?

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2014-мар-03 11:57 
Не в сети
Moderator

Зарегистрирован: 2010-мар-31 10:44
Сообщения: 54
Откуда: ООО "Фирма Фитон"
stranderer писал(а):
Кто-нибудь знает, есть ли способ во время трансляции С-модуля в CMC-ARM определить, какой отладчик выбран? Хотя бы симулятор или что-то другое. Есть ли какой-нибудь предопределённый #define, переменная или ещё что-то?
Ничего такого нет. Поясните, для чего Вы собирались это использовать? Возможно, я предложу другое решение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2014-мар-03 14:08 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Здравствуйте.
Сложность в том, что в программе есть циклы опроса состояния периферии, которые при отладке в симуляторе не кончаются никогда (поскольку симулятор "не знает" ничего о периферии. Сейчас я задаю (или комментирую) "врукопашную" #define SIMULATE 1 и использую условную трансляцию, но иногда забываю, и тогда всё работает неправильно. Хотелось как-то автоматизировать...

Другая трудность (в другом проекте): нужно получить задержки (в разных местах от 0.5 до 20 мкс) с точностью 25 нс (это 2 команды при частоте процессора 80 МГц). Для маленьких задержек (2 мкс и менее) я использую обычный цикл ожидания (по счётчику) - там как раз 2 команды в цикле, а для больших приходится использовать таймер (потому что имеются обработчики нескольких прерываний, которые могут непредсказуемо растягивать циклы опроса), но цикл опроса состояния таймера уже 4 команды, если же задействовать прерывания от таймера и команду WFI для ожидания прерывания, то она может срабатывать и от любого другого прерывания. Пока что я не придумал, как дожидаться именно нужного...

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2014-мар-03 14:44 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1011
Откуда: Тула
stranderer писал(а):
....
Другая трудность (в другом проекте): нужно получить задержки (в разных местах от 0.5 до 20 мкс) с точностью 25 нс (это 2 команды при частоте процессора 80 МГц). Для маленьких задержек (2 мкс и менее) я использую обычный цикл ожидания (по счётчику) - там как раз 2 команды в цикле, а для больших приходится использовать таймер (потому что имеются обработчики нескольких прерываний, которые могут непредсказуемо растягивать циклы опроса), но цикл опроса состояния таймера уже 4 команды, если же задействовать прерывания от таймера и команду WFI для ожидания прерывания, то она может срабатывать и от любого другого прерывания. Пока что я не придумал, как дожидаться именно нужного...

Жесточайший реалтайм у Вас. И при этом допустимы недетерминированные по длительности прерывания?...

Может Вам поможет системный таймер? Примерно таким образом:
1. записать ( величину задержки - дельта*) в LOAD
2. записать её же (для краткости) в VAL
3. мониторить флаг COUNTFLAG
остаётся вычислить дельта инструкций на записи и уточнить смысл регистра CAL.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Симулятор vs JEm-ARM-v2
СообщениеДобавлено: 2014-мар-03 16:28 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Увы! Времянка, формируемая устройством, синхронная, а внешние прерывания (ExtInt1, ExtInt2, а особенно UART, SPI) асинхронные, заранее неизвестно, когда именно они случатся и сколько займёт обработка полученной информации (поскольку она м.б. разной). На системном таймере реализован генератор опорной частоты 1 МГц (хотели 2, но не получается, т.к. обработчик прерываний системного таймера - всего-то 4 команды - начинает сильно влиять на формируемую времянку). В принципе для проверки то ли прерывание случилось можно было бы использовать флаг, выставляемый обработчиком таймера, и в случае неудачи снова в WFI уходить, но боюсь, что это сильно дольше по времени, чем опрос состояния таймера, хотя надо будет проверить...
Тем не менее, СПАСИБО!

_________________
Странник


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

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


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

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


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

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