Перейти к содержанию
    

Простые вопросы по кортексам

Здравствуйте. Насколько я понимаю, вопросы по кортексам тоже сюда писать?

 

Так как к кортексам только подступаю, а отладочную плату привезти обещают в обозримом будущем, то изучаю их по даташитам и кейлу (до 32 кБ он условно-бесплатный).

Имеются совсем дилетантскае вопросы. Смотрю на примере LPC1102 и LPC1311.

 

1. Почему в кейле нет симуляции периферии кортексов? Или это я плохо смотрел? Можно ли как её подключить? Есть ли там понятие Fast GPIO?

 

2. Каковы наклюдные расходы (примерно в тактах) входа в обработчик внешних прерываний? Есть ли смысл программу писать а ассемблере?

 

3. Насколько я понял, блоки MAM отсутствует и FIQ отсутствуют? Или у кортексов с выборкой команд всё хорошо? Программа может выполняться только из флеша?

 

5. Можно ли настроить выход из спящего режима по SPI? По завершению приёма байта или по приёму первого бита? Или просыпание лучше завести от внешнего прерывания?

 

6. Сколько примерно тактов (если не сложно ответить) будет занимать каждая команда в таком вот простом коде:

 

int i = 0;
int datas[1000];

for (i = 0; i < 1000; ++i){
    datas[i] = IOPIN;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Почему в кейле нет симуляции периферии кортексов? Или это я плохо смотрел? Можно ли как её подключить? Есть ли там понятие Fast GPIO?

 

Ответом на этот и большую часть других вопросов является то, что Cortex, а точней, Cortex-M -- это семейство процессорных ядер, а не конкретный микроконтроллер. Наличие той или иной периферии, ускорителя памяти, возможность использования периферии для пробуждения процессора -- всё это зависит от конкретной модели микроконтроллера, а не от того, какое именно у него ядро. Дело ядра -- лишь выполнять программы.

 

Скорость выполнения кода сама по себе -- одна машинная команда за такт, но достигается она за счёт работы конвейера. Поэтому переходы и прерывания уменьшают скорость (возникают "лишние" такты из-за необходимости выборки и декодирования команд при пустом конвейере). Скорость выборки кода из флэш-памяти зависит опять-таки от модели микроконтроллера, напряжения питания и тактовой частоты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Найдите книжки Josef Yiu по Cortex-M0 -M3, и там прочтете ответы на все вопросы. Где искать, знаете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Cortex-M -- это семейство процессорных ядер

Я, скорее всего буду применять либо продукцию LPC либо ST.

 

Найдите книжки Josef Yiu по Cortex

 

Спасибо. Скачал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Почему в кейле нет симуляции периферии кортексов? Или это я плохо смотрел? Можно ли как её подключить? Есть ли там понятие Fast GPIO?

плохо смотрели. Все там есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

плохо смотрели. Все там есть

 

У меня keil4. Контроллер - LPC1102. Создал проект, откомпилил.

Запустил дебаггер.

Смотрю перифералс. А там только Cjre Peripherals. Или так и должно быть?

Хотелось бы и порты ввода-вывода и таймеры и etc.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Далеко не для всех микроконтроллеров имеются возможности отображать состояние периферии. В некоторых случаях может помочь формальное использование в разработке похожего контроллера -- но надо самому чётко понимать различия между ними, чтобы и программа собиралась правильно, и с отображением периферии проблем не возникало. Ну а в некоторых, увы, никак...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня keil4. Контроллер - LPC1102

я смотрел в 5-ке, в 4-ке смогу посмотреть завтра

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть 5 keil ?

как он, много поменяли? совместимость версий проэктов 4го и 5го соблюдается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть 5 keil ?

как он, много поменяли? совместимость версий проэктов 4го и 5го соблюдается?

соблюдается, обратная совместимость есть. Лучше поставить и посмотреть :)

http://www.keil.com/update/whatsnew.asp?p=RVMDK&v=5.00

http://www.keil.com/update/relnotes/MDK500.htm

 

keil 5 есть? Где скачать можно?

в местных закромах вроде было, также тут можно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчера появился Keil 5.01

ага, они поменяли формат пакетов. Старый PackInstaller их не кушает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня keil4. Контроллер - LPC1102. Создал проект, откомпилил.

Запустил дебаггер.

Смотрю перифералс. А там только Cjre Peripherals. Или так и должно быть?

Хотелось бы и порты ввода-вывода и таймеры и etc.

 

Большую часть периферии в кейле перенесли в новый механизм: View -> System Viewer, потыкайте по меню (этот пункт появляется только в активной дебаг-сессии).

 

 

PS сильно заморачиваться подсчётом тактов на кортексах не стоит. Куча шин, хитро связанных друг с другом, каждая со своей частотой и таймаутами, ведомыми только разработчику чипа. Меряйте окончательную производительность, это интересней.

Особенно заметна эта проблема на low-end чипах, когда производитель сосредотачивается на энерго- и деньго-сберегающих технологиях, а не на скорости.

Я как-то экспериментировал с SSP (продвинутый SPI) на LPC1111.

Тупой код

while (len--)
{
   while (STATUS_REG == BUSY);
   DATA_REG = *data++;
}

Работал на порядок, наверное, медленнее, чем должно было быть по результатам подсчёта тактов. Переделал в критичных местах на использование аппаратного FIFO, убрав часть запросов к регистру статуса - стало заметно быстрее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS сильно заморачиваться подсчётом тактов на кортексах не стоит.

+

хотя все такты и расписаны (конвеер отключим :) ), никто не будет, на мой взгляд, заниматься настолько глубоко симуляцией. Расчет времени возможно. Кейл даже может что-т показать в плане времени. Да вот все никак не было возможности проверить, потому как отдельный камень со всей своей периферией - это сферический конь. Как там с ним и кто будет общаться - вот тут уже и все симуляторы сломались

Что касаемо времени критических обработок - грамотное распределение приоритетов прерываний, короткие обработчики и сохранение критических данных (по скорости) где-то в TCM

 

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

Почему чипа? AHB и APB разве не стандартизированы ARM?

 

стало заметно быстрее.

у меня тоже софтварный UART на 8051 больше 9600 не мог, ему там еще кучу дел нужно было делать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...