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

 
 
> Ногодрыгание у 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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 16)
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
SasaVitebsk
сообщение May 13 2009, 20:09
Сообщение #16


Гуру
******

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



Принято.
Я иногда так, а иногда этак. smile.gif Не определился ещё. Вообще надо будет более детально как-нибудь с препроцессором разобраться. smile.gif
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jun 1 2009, 11:09
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Между системной шиной и шиной портов стоит делитель ,по умолчанию он 1\4 biggrin.gif ,просто сделано
в целях экономии потребления
Думаю Филипс не против от того ,что бы немного раскочегарить его периферию поменяв значение делителя.
Фаст порты ,на мой взгляд,идут мимо периферии ,оставляя ее работать на малой скорости.
Еще,фаст портам нужна своя инициализация,не наступи на эти грабли. laughing.gif
Ну и еще ,для хорошей скорости нужен асм,в в доке на 2101\2103 там все расписано вместе с оциллограммами.
Go to the top of the page
 
+Quote Post

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

 


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


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