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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Ногодрыгание у ARM, Академический вопрос
SasaVitebsk
сообщение May 3 2009, 19:21
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Работаю с камнем LPC2106. Он меня полностью устраивает и прекрасно ложится под проект. Поэтому тот вопрос, который я задаю ниже - чисто академический, чтобы лучше узнать архитектуру. Мне не надо никак ускорять. Я просто хочу разобраться.

Итак. Запустил камень на частоте близкой к 60 (14.7456*4). Частоту проверил JLink Comander-ом. Подтверждено. Сконфигурировал MAM как положено. Делитель переферийной шины 1:1. То есть быстродействие "по максимуму". Учитывая, что, согласно описанию, производительность данного камня из флэши практически равна такойже из RAM, то пока этим пренебрегаем.

Выдаём прямоугольник на ножку прогой типа
Код
for(;; )
{
   OUT_EN_RS485;
   IN_EN_RS485;
}

Получаем асмовую прогу, по типу:
Код
   \                     ??main_5:
   \   000002AC   4018A0E3           MOV      R1,#+4194304
   \   000002B0   001080E5           STR      R1,[R0, #+0]
   \   000002B4   081080E5           STR      R1,[R0, #+8]
   \   000002B8   FBFFFFEA           B        ??main_5

Просмотрел систему команд ARM и высчитал (может ошибся) что данный цикл должен выполнятся 1+2+2+3 такта + ещё 3 такта на сброс конвеера. Итого 11 тактов. То есть при частоте 60МГц мы должны получить частоту ~ 5.45. Реально я получаю 3.5.

За счёт чего формируется доп задержка?
Как обстоят дела с этим в at91sam7s? (Интересуют конкретные цифры)
У STR711? STM32?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 3 2009, 19:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ May 3 2009, 22:21) *
Работаю ...

Стоит ознакомиться с User Manual на LPC2106/01 в части GPIO Usage Notes. Там все достаточно подробно - включая осциллограммы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 3 2009, 20:13
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



У меня там 5 строк. Никаких осциллограм и ничего вообще. Правда 2 пустых страницы. Документ, UM_LPC2106_2105_2104_2.pdf. Скачан с сайта производителя как UM для данной микросхемы. 2003 Oct 02 дата.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 3 2009, 20:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ May 3 2009, 23:13) *
UM для данной микросхемы. 2003 Oct 02 дата.

Раритет, однако. Текущий Rev. 02 — 8 April 2009 почему-бы не взять? http://www.standardics.nxp.com/support/doc...6&type=user , если работать собрались.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение May 3 2009, 20:20
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



До кучи еще ссылка на UM10275 Rev. 01 — 4 June 2008
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 3 2009, 20:33
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



biggrin.gif
Естественно уже нашёл-скачал-читаю. rolleyes.gif Занимательно. Похоже Тревор - тоже раритет из области - получить общее представление. smile.gif
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 3 2009, 20:42
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
Как обстоят дела с этим в at91sam7s? (Интересуют конкретные цифры)

В потоке (без переходов) на частоте 48 МГц получалось три такта (около 66 наносекунд) между изменениями состояния порта. Где-то в форуме про ARM я задавал свои вопросы начинающего.

http://electronix.ru/forum/index.php?showt...st&p=567800

Сообщение отредактировал Genadi Zawidowski - May 3 2009, 20:48
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 3 2009, 20:46
Сообщение #8


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Просмотрел систему команд ARM и высчитал (может ошибся) что данный цикл должен выполнятся 1+2+2+3 такта + ещё 3 такта на сброс конвеера.


Ошиблись. 1+2+2+3 и хватит. Конвейер вместе с выполнением перехода сбрасывается.

Данные цифры будут только при использовании Fast GPIO. При работе через обычную шину там один доступ в 7 тактов, чтоли, если мне память не изменяет.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 3 2009, 22:27
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



IAR for ARM 5.10. Файл iolpc2104.h издания 9.12.07. Про fast io ни сном ни духом. Кстати третий уже недочёт у IAR. Вообще файлы под конкретные камни не правят. Я, конечно сейчас и сам подправлю, но всё же. Должны же они отслеживать такие вещи. Им же явно присылают. sad.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 4 2009, 06:05
Сообщение #10


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
IAR for ARM 5.10. Файл iolpc2104.h


EWARM5.30, lpc2104.h
Код
...
/***************************************************************************
**
** GPIO
**
***************************************************************************/
__IO_REG32_BIT(IOPIN, 0xE0028000,__READ,__gpio_bits);
__IO_REG32_BIT(IOSET, 0xE0028004,__READ_WRITE,__gpio_bits);
__IO_REG32_BIT(IODIR, 0xE0028008,__READ_WRITE,__gpio_bits);
__IO_REG32_BIT(IOCLR, 0xE002800C,__WRITE,__gpio_bits);
__IO_REG32_BIT(FIO0DIR,0x3FFFC000,__READ_WRITE,__fgpio_bits);
...
__IO_REG32_BIT(FIO0MASK,0x3FFFC010,__READ_WRITE,__fgpio_bits);
...
__IO_REG32_BIT(FIO0PIN,0x3FFFC014,__READ_WRITE,__fgpio_bits);
...
__IO_REG32_BIT(FIO0SET,0x3FFFC018,__READ_WRITE,__fgpio_bits);
...
__IO_REG32_BIT(FIO0CLR,0x3FFFC01C,__WRITE     ,__fgpio_bits);
...


Как видите, все на месте wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 4 2009, 06:53
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Будьте так любезны - киданите этот файлик.

Пока что-то не заводится. Сделал свой .h - проверил по шагам на асме - всё пишется туда куда надо - в ответ тишина.
Вопрос: А с какого момента эта фича на камне присутствует? Может у меня старая ревизия камня?


PS: С файлом отбой. Всё что надо есть в 2101.h. smile.gif
Go to the top of the page
 
+Quote Post
bus16
сообщение May 4 2009, 07:42
Сообщение #12


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

Группа: Свой
Сообщений: 78
Регистрация: 10-01-07
Пользователь №: 24 270



А разве в 2106 есть Fast GPIO?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 4 2009, 07:50
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ May 4 2009, 09:53) *
А с какого момента эта фича на камне присутствует? Может у меня старая ревизия камня?

Черным по белому практически на первой странице скаченного Вами документа - New features implemented in..... Там еще и фичи кроме Fast GPIO описаны.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 4 2009, 08:47
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Всё сенькую. Отбой. У меня версия кристалла LPC2106F/00. smile.gif
Так что оценить прелести FAST я пока не смогу. Но мне пока это и без надобности. Просто любопытство. Буду знать что есть такая шняга и подправлю проект позже.
А сейчас сделаю в проекте так, чтобы это можно было подправить одной строкой. smile.gif

Торжественно ввожу в проект строчку

//#define FAST_GPIO // Поддержка кристаллов версии 01


smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение May 12 2009, 10:05
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(SasaVitebsk @ May 4 2009, 11:47) *
Торжественно ввожу в проект строчку

//#define FAST_GPIO // Поддержка кристаллов версии 01
smile.gif

Небольшой hint.
Если определение FAST_GPIO задаете в коде, а не в строке компилятора, то вводите лучше

#define FAST_GPIO FALSE // set to true when present

вместо #ifdef/ifndef пользуйте
#if FAST_GPIO
...

тады парсеры текста лучше понимают что к чему, и по клику на "FAST_GPIO" сразу видно вкл или откл.
FALSE/TRUE ессно должны быть определены раньше, как 0 и 1 ;>
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:54
Рейтинг@Mail.ru


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