реклама на сайте
подробности

 
 
> STM32F103ZE - время исполнения кода?, Странности.
pr0m
сообщение Jan 22 2011, 20:12
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 22-06-05
Из: Таганрог
Пользователь №: 6 233



Всем привет.
Делаю первые шаги в освоении АРМ-ов. Стоит задача сделать DDS (синтезатор сигналов, до 400кГц, тональные, ЛЧМ). Решил реализовать на этом камне. Всё работает, но! Тот участок кода, к-й и реализует алгоритм DDS (инкремент аккумулятора фазы, выборка значения из таблицы формы сигнала, запись в регистр ЦАП-а) в симуляторе исполняется с абсолютно детерминированным количеством тактов (13), а в реальной железке меняется от 13 до 16 от прошивки к прошивке, причём эти прошивки отличаются в участках кода, не имеющих никакого отношения к основному алгоритму..... wacko.gif Это происходит даже после единственного изменения в исходном коде - изменения начального значения некой переменной в некой процедуре инициализации с одной цифры на другую. Обратил внимание, что при этом ничтожном изменении, содержимое выходного файла прошивки меняется радикально.
DMA, прерывания не использую.
Оптимизации кода выключены, код DDS написан на ассемблере, отдельным модулем! Весь алгоритм основан на точном значении количества тактов кода DDS, а у меня он живёт своей жизнью... Keil 4.14.


Прошу поделиться советами и прочими соображениями!


--------------------
Правильно поставленный вопрос - половина ответа...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vptr
сообщение Jan 22 2011, 20:47
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 15-11-07
Пользователь №: 32 363



есть мнение что в АРМах (Кортексах) время выпонения команд не детерминировано.

вот цитата:
Архитектура микроконтроллера с ARM-ядром значительно отличается от архитектур традиционных 8-и и 16-и разрядных микроконтроллеров, и прежде всего тем что в ней используется иерархия внутренних шин соединенных межшинными интерфейсами. Шины могут работать на разных частотах, за доступ к шинам могут конкурировать много внутренних модулей микроконтроллера, обмены данными по шинам могут заканчиваться ошибками за которыми следует следить программными средствами. Это приводит к тому, что отсутствует строгий детерминизм времени выполнения инструкций как это присуще простейшим микроконтроллерам. Во многом такое положение связано с высокими частотами на которых работает ARM ядро, на таких частотах уже не способна работать FLASH...

полный текст http://www.indemsys.ru/knowledge-base-mate...x-overview.html
это про STR91x. но тенденция понятна.

Сообщение отредактировал IgorKossak - Jan 22 2011, 20:49
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 20:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016