Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как работать с SAM7 с максимальным быстродействием
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
bookevg
Разбирался с SAM7 и есть пару вопросов:
т.к. SAM7 читает данные из flash с нулевым циклом ожидания максимум на 30МГц, то необходимо использовать один цикл ожидания в режиме ARM при частоте процессора выше 30МГц (можно сказать, что частота процессора и частота работы со flash одинаковые - в активном режиме) и нулевой цикл ожидания в режиме Thumb при любой частоте процессора
Тогда построение системы, работающей с максимальным быстродействие и применяющей USB-порт, может быть нескольких типов:
1. Частота ядра процессора д.б. около 27,429МГц (192/7) с нулевым циклом ожидания чтения данных из внутреннего flash процессора.
2. Частота ядра процессора д.б. около 48МГц с нулевым циклом ожидания чтения данных из внутреннего flash процессора и все ПО должно работать в режиме Thumb. Единственная проблема в данном случае это работа в режиме прерываний, т.к. в начале возникновения прерывания процессор переключается в режим ARM: т.о. надо сделать как минимум две команды, это jump и переключиться в режим Thumb - данный вариант мною не проверелся - насколько его правомочно применять?
3. Частота ядра процессора д.б. около 48МГц с одним циклом ожидания чтения данных из внутреннего flash процессора, но в местах ПО, где необходимо максимальное быстродействие:
3.1. Отключать прерывания и переходить в режим Thumb+нулевой цикл ожидания
3.2. Размещать кусок ПО в ОЗУ и вновь отключать прерывания, но при этом работать в режиме ARM+нулевой цикл ожидания
3.3. Запрещать вложенные прерывания, а в прерываниях работать или в режиме Thumb+нулевой цикл ожидания или в режиме ARM+обработчик в ОЗУ+нулевой цикл ожидания


Какие еще возможны варианты или уточнения?
DASM
так процессор сам в ARM переходит при прерываниях, если я ничего не забыл. А так да, критичные куски имеет смысл делать __ramfunc
bookevg
Больше всего меня интересует 2-ой вариант. Т.к. он наиболее предпочтительный
bookevg
Пункт 1 надо убрать, т.к. делителя на 7 нет.
Пункт 3.2 надо заменить на:
3.2. Размещать кусок ПО в ОЗУ при этом можно работать в режиме ARM или Thumb - т.к. ПО размещено в ОЗУ, то проц работает на максимальной частоте 48МГц без циклов ожиданий чтения.

Прав ли я: если программа расположена в ОЗУ, то цикл ожидания чтения из flash не вмешивается в работу? - скоро проверим, результаты сообщим.
bookevg
Опыт показал, что размещение функции в ОЗУ увеличивает скорость работы. Выбор режима зависит от вычислительных требований, режим ARM работает быстрее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.