Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1700 User manual
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
shahr
http://www.standardics.nxp.com/support/doc...ual.lpc17xx.pdf

upd. Если заметите какие-либо явные ошибки, неточности или отсутствие важной информации, напишите, пожалуйста, сюда и продублируйте личным сообщением. На стилистику давайте внимания не обращать.
miv
Цитата(shahr @ Jun 8 2009, 13:30) *

Дык с 5-го числа лежит ! smile.gif
Кстати кто-то говорил что там таймеры 16 бит ! Я чот не увидел, вроде нормальные 32 бита ??
shahr
Цитата(miv @ Jun 8 2009, 13:32) *
Дык с 5-го числа лежит ! smile.gif
Кстати кто-то говорил что там таймеры 16 бит ! Я чот не увидел, вроде нормальные 32 бита ??


Это в STM32 таймеры 16 бит.
miv
Цитата(shahr @ Jun 8 2009, 13:36) *
Это в STM32 таймеры 16 бит.

А !!!! Ну наверно.
-=Sergei=-
Цитата(shahr @ Jun 8 2009, 13:30) *
http://www.standardics.nxp.com/support/doc...ual.lpc17xx.pdf

upd. Если заметите какие-либо явные ошибки, неточности или отсутствие важной информации, напишите, пожалуйста, сюда и продублируйте личным сообщением. На стилистику давайте внимания не обращать.


Ну и как всегда реклама:
Enhanced flash memory accelerator enables high-speed 100 MHz operation with zero wait states.

Расходится с делом:
Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock.

Теперь ждем обновленные электрические характеристики, а то на самом вкусном пока TBD стоит....
etoja
Не торопись.
Как говорил классик:
Всё у нас получится, Феликс Эдмундович.
KRS
Цитата(-=Sergei=- @ Jun 8 2009, 14:31) *
Ну и как всегда реклама:
Enhanced flash memory accelerator enables high-speed 100 MHz operation with zero wait states.

Расходится с делом:
Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock.

Ничего не расходится!
Написано же акселератор позволяет!
Mitsufan
Цитата(-=Sergei=- @ Jun 8 2009, 13:31) *
Ну и как всегда реклама:
Enhanced flash memory accelerator enables high-speed 100 MHz operation with zero wait states.

Расходится с делом:
Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock.

Теперь ждем обновленные электрические характеристики, а то на самом вкусном пока TBD стоит....


Для доступа к памяти акселератор использует 5 CPU циклов на 100 МГц, а ядру отдает без задержек...
miv
Цитата(-=Sergei=- @ Jun 8 2009, 14:31) *
Ну и как всегда реклама:
Enhanced flash memory accelerator enables high-speed 100 MHz operation with zero wait states.

Расходится с делом:
Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock.

Теперь ждем обновленные электрические характеристики, а то на самом вкусном пока TBD стоит....

Так на сколько я понял 5 циклов это к Flash а после акселератора zero.
Т.е. если акселератор не включен то при 100 - 5 циклов доступа к инструкциям типа,
а если акселератор включён то доступ к инструкциям zero циклов. У него же там шина 128 бит.
Или чот я не понял ?
GetSmart
Цитата(miv @ Jun 8 2009, 15:47) *
...
а если акселератор включён то доступ к инструкциям zero циклов. У него же там шина 128 бит.
Или чот я не понял ?

128 бит = 4 инструкции. Но не все инструкции однотактовые. Если хотя бы одна из инструкций будет двухтактовая то должно работать без тормозов, имхо. А вот если поставить подряд много NOP-ов, то наверное скорость упадёт до 80 MIPS.
-=Sergei=-
Цитата(miv @ Jun 8 2009, 14:47) *
Так на сколько я понял 5 циклов это к Flash а после акселератора zero.
Т.е. если акселератор не включен то при 100 - 5 циклов доступа к инструкциям типа,
а если акселератор включён то доступ к инструкциям zero циклов. У него же там шина 128 бит.
Или чот я не понял ?



Скорость доступа к флеш по технологии 0.18 примрено 30 нс. По этому процессор может выдергивать из Флеш инструкцию (будем считать для простоты что они все 32 бита) на каждый свой цикл, только если его частота менее 33 МГц. Для того что бы процессор мог работать на большей частоте например 66 Мгц, он должен выдерхивать из флеш по две инструкции за 30 нс (флеш становится 64 битной) и в этом случае пока он выполняет первую инструкцию 15 нс и затем вторую еще 15 нс, успевают выдернуться из памяти еще две инструкции после чего все повторяется. Вот так оно и живет с нулевой задержкой. Но живет оно ровно до тех пор пока может предстказать адрес выдергиваемых на будующее инструкций. НО КАК ТОЛЬКО адрес не совпал, например витвление или прерывание, то контроллер флеша генерирует паузу по шине инструкций процессору, так как ему надо 30 нс выдернуть непредсказанные адреса.

Таким образом пока программа линейно выполняется будут честные ноль циклов задержки (у NXP Флеш 128 битная, от 4 до 8 инструкций за раз), но как только какое либо ветвление или прерывание вне этих предвыбранных адресов, получайте полностью 5 циклов дополнительной задержки при 100 МГц.

Ну а теперь для своих алгоритмов прикиньте сколько ASM инструкций занимают ваши циклы FOR ?

На моей задаче с 0 циклом задержки выполняется условно 4,7 млн. циклов, при 5 циклах задержки 8 млн циклов.

Вот и думал, что они что то придумали.... Но нет.

Хотя как я понял они SRAM смапировали в область кода, вот от туда действительно можно гнать алгоритм на всех парах.
KRS
Цитата(GetSmart @ Jun 8 2009, 15:01) *
128 бит = 4 инструкции. Но не все инструкции однотактовые. Если хотя бы одна из инструкций будет двухтактовая то должно работать без тормозов, имхо. А вот если поставить подряд много NOP-ов, то наверное скорость упадёт до 80 MIPS.

В THUMB2 NOP - 16 битная! так что их 8 влезет

Цитата(-=Sergei=- @ Jun 8 2009, 15:05) *
Таким образом пока программа линейно выполняется будут честные ноль циклов задержки (у NXP Флеш 128 битная, от 4 до 8 инструкций за раз), но как только какое либо ветвление или прерывание вне этих предвыбранных адресов, получайте полностью 5 циклов дополнительной задержки при 100 МГц.

Ну а теперь для своих алгоритмов прикиньте сколько ASM инструкций занимают ваши циклы FOR ?

а ARM7 все нормально с ветвлениями было. ( кроме прерываний конечно)
Вы конкретный цикл приведите, который у вас из Flash работает медленнее чем из встроенной SRAM
GetSmart
Цитата(KRS @ Jun 8 2009, 16:10) *
В THUMB2 NOP - 16 битная! так что их 8 влезет

Да, точно. Я и забыл что там инструкции поменяли.

Но ведь можно и 32 битных однотактовых инструкций поставить более 4 штук подряд smile.gif
-=Sergei=-
Цитата(KRS @ Jun 8 2009, 15:10) *
а ARM7 все нормально с ветвлениями было. ( кроме прерываний конечно)
Вы конкретный цикл приведите, который у вас из Flash работает медленнее чем из встроенной SRAM


unsigned char y;
unsigned int m1[256];
unsigned int m2[256];
unsigned int m3[256];

for (y=0;y<=255;y++)
m1[y] = m2[y]*m3[y];



0x080000D4 2000 MOVS r0,#0x00
0x080000D6 E00D B 0x080000F4
0x080000D8 F50D6180 ADD r1,SP,#0x400
0x080000DC F8511020 LDR r1,[r1,r0,LSL #2]
0x080000E0 466A MOV r2,sp
0x080000E2 F8522020 LDR r2,[r2,r0,LSL #2]
0x080000E6 4351 MULS r1,r2,r1
0x080000E8 F50D6200 ADD r2,SP,#0x800
0x080000EC F8421020 STR r1,[r2,r0,LSL #2]
0x080000F0 1C41 ADDS r1,r0,#1
0x080000F2 B2C8 UXTB r0,r1
0x080000F4 28FF CMP r0,#0xFF
0x080000F6 DDEF BLE 0x080000D8

На этом форе, на каждый новый цикл имеем дополнительную задержку в 5 тактов процессора при 100МГц.

С SRAM это будет выполняться в 2 раза быстрей, только если SRAM для процессора адресуем меньше чем 0x2000_0000. Тогда Cortex будет лазить за ними через I и D шины.
KRS
Цитата(-=Sergei=- @ Jun 8 2009, 15:21) *

А вы на чипе реально померяли?
С помощью SysTick или у NXP там еще таймер специальный есть.

Потому что когда я исследовал ARM7. У него цикл, попроще правда, из FLASH работал быстрее чем из SRAM встроенной.
GetSmart
Цитата(KRS @ Jun 8 2009, 16:50) *
Потому что когда я исследовал ARM7. У него цикл, попроще правда, из FLASH работал быстрее чем из SRAM встроенной.

Врёте-с?
Это что за ARM такой и что за цикл?
Быстрее он никак в принципе не может, в пределе может догнать раму, но не перегнать.

Я имею ввиду внутреннюю раму проца.
KRS
Цитата(GetSmart @ Jun 8 2009, 15:58) *
Врёте-с?
Это что за ARM такой и что за цикл?
Быстрее он никак в принципе не может, в пределе может догнать раму, но не перегнать.

Я имею ввиду внутреннюю раму проца.

NXP (тогда еще Philips) что то говорил про ускорение переходов. Так то переход выполняется 2 такта, А вроде если цикл короткий (или переход) и попадал в 128 бит загруженных акселератором - выполнялся быстрее.
-=Sergei=-
Цитата(KRS @ Jun 8 2009, 15:50) *
А вы на чипе реально померяли?
С помощью SysTick или у NXP там еще таймер специальный есть.

Потому что когда я исследовал ARM7. У него цикл, попроще правда, из FLASH работал быстрее чем из SRAM встроенной.



Нет, на NXP не смотрел.

В железе смотрел на STM32 и нашем чипе.

В обычном случае, кода код во Флеш, а данные в SRAM, процессор работает бы быстрее чем когда и код и данные в SRAM из за того, что в этом случае нет конфликтов доступа в память за инструкциями и за данными. Т.е. эти доступы могут выполняться параллельно.

У NXP в области кода программ (0x0000-0x1FFF_FFFF) реализовано помимо флеш памяти еще и обычное ОЗУ (кроме того, которое выше 0x2000_0000). Если это ОЗУ проинитить кодом программы, то это позволит выполнять алгоритм гораздо быстрее, чем из флеш.
Но паять таки, если в эту память не будет конфликтов доступа за инструкциями и данными.
KRS
Цитата(-=Sergei=- @ Jun 8 2009, 16:02) *
Нет, на NXP не смотрел.

В железе смотрел на STM32 и нашем чипе.

Да STM32 вообще тормознутый чип!
Один плюс маленький и дешевый.
-=Sergei=-
Цитата(KRS @ Jun 8 2009, 16:06) *
Да STM32 вообще тормознутый чип!
Один плюс маленький и дешевый.



NXP не намного быстрее будет.
Прибавка в тактовой частоте от 72 Мгц (STM32) до 100 Мгц (NXP) в производительности даст не более 10%. (Мое ИМХО, надо мерить)
GetSmart
Цитата(-=Sergei=- @ Jun 8 2009, 17:12) *
NXP не намного быстрее будет.
Прибавка в тактовой частоте от 72 Мгц (STM32) до 100 Мгц (NXP) в производительности даст не более 10%. (Мое ИМХО, надо мерить)

А это почему? Если при выполнении проги из флэш нет ненужных циклов ожиданий. Вроде должно быть пропорционально, грубо на 40%. За счёт чего будут тормоза?

Разве что загрузка констант из флэш адресов будет подтормаживать, но это уже зависит от конкретной программы. Да и в простых циклах этих тормозов обычно не бывает, т.к. компилятор пытается всё сразу загрузить в регистры, ещё до первой итерации цикла. Моё ИМХО процентов на 30 NXP должен быть быстрее.
-=Sergei=-
Цитата(GetSmart @ Jun 8 2009, 16:17) *
А это почему? Если при выполнении проги из флэш нет ненужных циклов ожиданий. Вроде должно быть пропорционально, грубо на 40%. За счёт чего будут тормоза?



Опять сначала. Флеш по определению медленная память. Время доступа ~30 нс. По этому когда процессор работает на больших частотах, то контроллер флеш памяти иногда вставляет циклы ожидания для того что бы подгрузить новые данные из флеш, когда он не смог правильно предсказать предвыборку (ветвление алгоритма или прерывания).

0000 Flash accesses use 1 CPU clock. Use for up to 20 MHz CPU clock.
0001 Flash accesses use 2 CPU clocks. Use for up to 40 MHz CPU clock.
0010 Flash accesses use 3 CPU clocks. Use for up to 60 MHz CPU clock.
0011 Flash accesses use 4 CPU clocks. Use for up to 80 MHz CPU clock.
0100 Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock.
0101 Flash accesses use 6 CPU clocks. This “safe” setting will work under any conditions.

Таким образом, если надо что бы процессор работал на 100 Мгц. необходимо флеш акселератору установить 5 циклов на доступ в флеш. А это значит, что при непредсказанных переходах или прерываниях ядро будет остановлено на 5 циклов, пока из флеш будут извлечены новые данные.
shahr
Цитата(-=Sergei=- @ Jun 8 2009, 16:12) *
NXP не намного быстрее будет.
Прибавка в тактовой частоте от 72 Мгц (STM32) до 100 Мгц (NXP) в производительности даст не более 10%. (Мое ИМХО, надо мерить)


Это сравнение на ОДИНАКОВОЙ тактовой частоте.
miv
Цитата(-=Sergei=- @ Jun 8 2009, 15:05) *
Хотя как я понял они SRAM смапировали в область кода, вот от туда действительно можно гнать алгоритм на всех парах.

Что значит смапировали ???
Это же фон-нейман !! Или нет ??
Единственно что в код не записать просто так потому что флеш.
Так и в ARM7-TDMI было !! т.е. есть smile.gif
Большой плюс что в Cortex Thumb-2 декодер команд который понимает смесь Thumb и ARm инструкций

Да там не только в частоте дело !!!

Да там не только в частоте дело !!!

Цитата(-=Sergei=- @ Jun 8 2009, 16:27) *
Опять сначала. Флеш по определению медленная память. Время доступа ~30 нс. По этому когда процессор работает на больших частотах, то контроллер флеш памяти иногда вставляет циклы ожидания для того что бы подгрузить новые данные из флеш, когда он не смог правильно предсказать предвыборку (ветвление алгоритма или прерывания).

0000 Flash accesses use 1 CPU clock. Use for up to 20 MHz CPU clock.
0001 Flash accesses use 2 CPU clocks. Use for up to 40 MHz CPU clock.
0010 Flash accesses use 3 CPU clocks. Use for up to 60 MHz CPU clock.
0011 Flash accesses use 4 CPU clocks. Use for up to 80 MHz CPU clock.
0100 Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock.
0101 Flash accesses use 6 CPU clocks. This “safe” setting will work under any conditions.

Таким образом, если надо что бы процессор работал на 100 Мгц. необходимо флеш акселератору установить 5 циклов на доступ в флеш. А это значит, что при непредсказанных переходах или прерываниях ядро будет остановлено на 5 циклов, пока из флеш будут извлечены новые данные.

Да это понятно !!!! что так и просиходит smile.gif))
И зачем PDF цитировать все ж наверно читали.
alexQ
2shahr

непонятки с АЦП.

в фичах на камень (начало шита) написано 1МГц,

кой-где и кой-кто говорил про 400КГц beer.gif ,

а в разделе мануала конкретно уже про ацп написано 200КГц.

В результате сколько "вешать в граммах" ????
KRS
Цитата(miv @ Jun 8 2009, 16:36) *
Что значит смапировали ???
Это же фон-нейман !! Или нет ??

Уже нет! Это гарвард внутри есть ICODE DCODE
GetSmart
Цитата(-=Sergei=- @ Jun 8 2009, 17:27) *
Опять сначала. Флеш по определению медленная память. Время доступа ~30 нс. По этому когда процессор работает на больших частотах, то контроллер флеш памяти иногда вставляет циклы ожидания для того что бы подгрузить новые данные из флеш, когда он не смог правильно предсказать предвыборку (ветвление алгоритма или прерывания).
...
Таким образом, если надо что бы процессор работал на 100 Мгц. необходимо флеш акселератору установить 5 циклов на доступ в флеш. А это значит, что при непредсказанных переходах или прерываниях ядро будет остановлено на 5 циклов, пока из флеш будут извлечены новые данные.

Теорию я знаю не хуже вас. Вы сравнили STM32 и NXP, у которых ядра одинаковые. Частота у NXP на 40% выше. Приведите конретные примеры, хотя бы текстом. Я прекрасно знаю как работает ARM7 NXP и так же могу предположить как повлияет на быстродействие увеличение тактовой и уменьшение ширины инструкции.
shahr
Цитата(alexQ @ Jun 8 2009, 16:42) *
В результате сколько "вешать в граммах" ????


200kHz на текущей ревизии. 1МГц в следующей.
KRS
да у STM даже простой цикл из RAM работал быстрее, чем из flash ( при 72 Mhz)
а у LPC ( ARM7) одинаоковое число циклов было что из RAM что из FLASH и в ARM и в THUMB режимах, если они в кортекс впихали тот же акселератор...

плюс еще у NXP ICODE на SRAM тоже идет и SRAM два банка что еще может ускорить, особенно с DMA
-=Sergei=-
Цитата(shahr @ Jun 8 2009, 16:30) *
Это сравнение на ОДИНАКОВОЙ тактовой частоте.



Там выложены результаты тестирования LPC1768
http://www.eembc.org/home.php

Спасибо shahr за наводку.

Там тесты при частоте 72 МГц, 100 МГц (+38%) и 120 (+68) МГц
Вообщем, при приросте частоты на 38%, производительность увеличилась на от 26% до 38% в зависимости от задачи.
GetSmart
Цитата(-=Sergei=- @ Jun 8 2009, 18:19) *
Вообщем, при приросте частоты на 38%, производительность увеличилась на от 26% до 38% в зависимости от задачи.

Я уже подраться хотел smile.gif
KRS
Цитата(-=Sergei=- @ Jun 8 2009, 17:19) *
Там тесты при частоте 72 МГц, 100 МГц (+38%) и 120 (+68) МГц
Вообщем, при приросте частоты на 38%, производительность увеличилась на от 26% до 38% в зависимости от задачи.

так это у самого LPC и выросла производительность. А вот по сравнению с STM32 еще больше прирост будет!
meister
По UM: System Tick Timer

В разделе "System Tick Timer" описано, что он "щелкает" через каждые 10мс, а в разделе "Внутренняя периферия Cortex" написано, что он работает от клоков ядра и может "щелкать" хоть каждые 100 тактов.
KRS
Цитата(meister @ Jun 9 2009, 10:44) *
По UM: System Tick Timer

В разделе "System Tick Timer" описано, что он "щелкает" через каждые 10мс, а в разделе "Внутренняя периферия Cortex" написано, что он работает от клоков ядра и может "щелкать" хоть каждые 100 тактов.

Так это если запистаь туда калиброванное значение! то на 100 Mhz будет 10 ms период прерывания. Там вроде так и написано.
Vitaliy_ARM
Не понял одного момента, можно ли запустить синхронизацию GPDMA от ноги PIO, например по нарастающему фронту DMA берет байт с порта и кладет в память?
KRS
Цитата(Vitaliy_ARM @ Jun 10 2009, 10:42) *
Не понял одного момента, можно ли запустить синхронизацию GPDMA от ноги PIO, например по нарастающему фронту DMA берет байт с порта и кладет в память?

Судя по даташиту нельзя! Можно от TIMER match.
Наверное можно извратится и законфигурить таймер на по фронту ноги (CAP input) и настроить match что бы сразу срабатывал на запрос DMA.
shahr
Цитата(Vitaliy_ARM @ Jun 10 2009, 10:42) *
Не понял одного момента, можно ли запустить синхронизацию GPDMA от ноги PIO, например по нарастающему фронту DMA берет байт с порта и кладет в память?


Нет, так напрямую сделать нельзя.
Vitaliy_ARM
Цитата(shahr @ Jun 10 2009, 15:41) *
Нет, так напрямую сделать нельзя.


Получается, что DMA с потром работает так же, как и у ST. Пора бы уже было и сделать. maniac.gif
Очень помагает при изобретении на таких процессорах, например Camera Interface.
И еще кучу всего можно было бы сделать при помощи такой возможности.
На счет таймера, надо пробовать.
shahr
Цитата(Vitaliy_ARM @ Jun 10 2009, 16:01) *
Пора бы уже было и сделать. maniac.gif


Сделаем. Сделаем ещё круче - на любой пин можно будет завести любое периферийное устройство.
santa2.gif
miv
Цитата(shahr @ Jun 10 2009, 16:13) *
Сделаем. Сделаем ещё круче - на любой пин можно будет завести любое периферийное устройство.
santa2.gif

И когда ждать сиё чудо ??
Vitaliy_ARM
Цитата(miv @ Jun 10 2009, 16:48) *
И когда ждать сиё чудо ??


Судя по всему, не раньше чем через 2 года rolleyes.gif
researcher
Обещали, во втором квартале 2009. Квартал практически на исходе smile.gif .
Кто в курсе, когда появится в свободной продаже чипы и киты?

Цитата(Vitaliy_ARM @ Jun 15 2009, 10:18) *
Судя по всему, не раньше чем через 2 года rolleyes.gif
Dog Pawlowa
Цитата(researcher @ Jun 28 2009, 21:24) *
Обещали, во втором квартале 2009. Квартал практически на исходе smile.gif .
Кто в курсе, когда появится в свободной продаже чипы и киты?

Сам я не хочу бежать впереди паровоза, но кто заказал образцы, уже их получают.
Нагуглите "Thank you NXP".
Если же "свободная продажа" это дядя Вася в ларьке у вокзала, то еще придется подождать. rolleyes.gif
sergvks
Цитата(shahr @ Jun 10 2009, 15:13) *
Сделаем. Сделаем ещё круче - на любой пин можно будет завести любое периферийное устройство.

Как раз ищу нечто подобное, как хоть это будет называться ?
shahr
Какой-нибудь LPC smile.gif
demiurg_spb
Цитата(shahr @ Jun 10 2009, 16:13) *
Сделаем. Сделаем ещё круче...
И побольше озу с батарейным питанием вкрячьте - средний необходимый минимум по моим прикидкам (0,5 - 1)Кб. Спасибоsmile.gif
adnega
И выводы пошустрее, SPI с делителем на два....
shahr
Цитата(adnega @ Jul 12 2009, 22:34) *
И выводы пошустрее, SPI с делителем на два....


куда уж шустрее? 2 такта.
а SPI с делителем на 2 - SSP.
fmdost
Цитата(demiurg_spb @ Jul 12 2009, 22:08) *
И побольше озу с батарейным питанием вкрячьте - средний необходимый минимум по моим прикидкам (0,5 - 1)Кб. Спасибоsmile.gif

+1
researcher
Процесс пошел smile.gif.

Ассортимент пополнился первой платой на основе ARM Cortex-M3 LPC1768.
http://www.starterkit.ru/html/index.php?na...p=view&id=8

SK-MLPC1768
http://www.starterkit.ru/html/index.php?na...=view&id=27
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.