|
|
  |
Время выполнения команд в Cortex-M3. |
|
|
|
Jan 7 2011, 09:59
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 17-04-09
Пользователь №: 47 882

|
Подскажите, пожалуйста, нет ли таблицы команд процессора Cortex-M3, в которой указывалось бы время их выполнения.
|
|
|
|
|
Jan 7 2011, 12:38
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 17-04-09
Пользователь №: 47 882

|
Спасибо за подсказку.
|
|
|
|
|
Jan 8 2011, 04:48
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
А зачем это Вам? Одной систмы команд мало, как уже сказано. Режим флеша, сочетание команд, работа шин... На stm32f103 Код str куда-то в APB2 inc r2 str куда-то в APB2 выполняются за то же время, что и Код str куда-то в APB2 str куда-то в APB2 Просто во втором случае вторая команда str ждёт готовности шины, а в первом -- нет, за такт команды инкремента шина освободилась (на запись, это ещё никаких чтений не замешалось  ).
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jan 11 2011, 03:59
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977

|
Цитата(Deka @ Jan 11 2011, 09:25)  Значит вывод такой, что просто по тактам программно протокол сделать довольно сложно. Нужно почти обязательно задействовать какое-либо аппаратное устройство. Оно может быть любым, лишь бы позволило сделать синхронизацию. Ок. Спасибо за пояснения. Да не, делаете цикл из трех команд и имеете задержку от 5 наносекунд до нескольких часов с шагом в n наносекунд. Чему равно n для данного проца - измеряете. Но если использовать аппаратное устройство, проц при этом можно занять чем то более интересным, чем декремент регистра в цикле.
|
|
|
|
|
Jan 11 2011, 04:16
|

Знающий
   
Группа: Свой
Сообщений: 531
Регистрация: 1-02-05
Из: Украина, Киев
Пользователь №: 2 342

|
Deka, весь вопрос в точности соблюдения времянок протокола. Если надо совсем-совсем точно - то запрещаете все ( прерывания) и по тактам выстраиваете протокол. Время исполнения протокола - любая ИДЕ покажет. Но если что-то нужно поменять - такая "пирамидка" рассыпается, и приходится ее строить заново. Если контроллер работает только с одним протоколом (устройством) - то такой подход понять можно, но если снаружи происходит еще несколько событий, на которые нужно реагировать - то в итоге вы их пропустите  Обычно жертвуют одним аппаратным таймером. Он в прерывании отмеряет время кратное всем процессам. В алгоритме протокола - сравнивают текущее число сработок таймера и предыдущее, если настало время что-то делать - делаем, нет - дальше ожидаем. При этом процессор в состоянии реагировать на остальные внешние и внутренние раздражители. Небольшое "дрожание" времени в протоколе наблюдаться будет (например из-за заходы в прерывания), но это плата за то, что такая "пирамидка" не распадется при изменении кода.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|