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

 
 
18 страниц V  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
> Хочу попробовать ARM, подскажите, что для этого нужно?, Какой проц выбрать, отлад. платку и какой софт?
sonycman
сообщение Jan 29 2007, 00:21
Сообщение #121


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



2zltigo
Почитал, но не совсем понял некоторые моменты:
Цитата
DMA для укладки порций 1-2 байтов, причем сам контроллер DMA обслуживает только работу с линейным буфером. Сильно тоскливо - для более-менее реальной работы все равно обрабатывать
прерывание от каждых 1-2 байтов...

А почему только 1-2 байтов? Что будет мешать зарядить буфер на передачу 32 байтов? Или 64?

Да, понятно, что DMA буде тормозить CPU при доступе к памяти, но всё равно это лучше, чем записывать ручками каждый байт в SPI?

А в SAM7 порт SSP не точно такой-же, как в LPC?
То есть в LPC SSP может работать в точности как обычный SPI, а у SAM7 нет?

Цитата(Alex_inventor @ Jan 29 2007, 00:12) *
Доступ к UDP организован через шинный интерфейс APB. Доступ (чтение или запись) к буферу данных FIF

UDP - это USB Device Port.
APB - это вроде как Advanced Peripheral Bus.
А я говорил про DMA - Direct Memory Access, или по-другому Peripheral DMA Controller (PDC).
Всё это разные вещи.

У LPC2148 DMA имеется только для USB.
А у SAM7 наоборот - для всей периферии, кроме USB.

Я же говорю, что эти два ARMа как два калеки - изъяны есть у обоих, нет идеала...

Сообщение отредактировал sonycman - Jan 29 2007, 00:31
Go to the top of the page
 
+Quote Post
Alex_inventor
сообщение Jan 29 2007, 00:37
Сообщение #122


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744



Сделал маленькое исследование по оптимизации (RV)
Cтрока delay:
for (int d=0; d < usec; d+=5);

Код оптимизации О-0:

MOV R1,0x00000000
0x00000498 CMP R1,R0
BCS 0x000004A8
ADD R1,R1,#0x00000005
B 0x00000498
0x000004A8

Код оптимизации О-1:
То же что и O-0


Код оптимизации O-2:

MOV R1,#string(0x00000000)
0x00000498 CMP R1,R0
ADDCC R1,R1,#0x00000005
BCC 0x00000498

Код оптимизации O-3:

То же что и O-2

Если код оптимизации O-3 по времени, то эта строка вообще выкидывается. Видимо компилятор посчитал, что на неё нужно много времени и она не достойна быстрой программы.

Из всего вышесказанного возникают следующие вопросы:
1. Зачем вообще нужно ставить уровни и подуровни оптимизации, если можно оставить три вида максимально по коду, по времени, смешанное. Ну например в примере выше при O-0 и O-1 дополняется лишняя инструкция на пустом месте, в данном случае это 25% проигрыша, нельзя было что ли сразу как при O-2, O-3?
2. Как вообще (по каким критериям) выбирается эта оптимизация. В хелпе uVision ничего не сказано?
3. Какую оптимизацию посоветуете вы (при каких условиях)?
4. Чего стоит опасаться? А то я пока разобрался что это грёбаная оптимизация angry.gif , ни мог понять куда девается моя пауза wacko.gif , думал компилятор глючит.
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Jan 29 2007, 00:57
Сообщение #123


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



>> Если код оптимизации O-3 по времени, то эта строка
>> вообще выкидывается.
Сделай так:
for (<b>volatile</b> int d = 0; d < usec; d=+5);
С точки зрения оптимизатора цикл не имеет смысла, так как в теле цикла (и, наверное в дальнейшем) локальная переменная d не используется. Поэтому он этот цикл и выкинул. Если применить к d квалификатор volatile - все будет нормально.

>> Как вообще (по каким критериям) выбирается эта оптимизация
Отлаживаться - без оптимизации, а там смотря по требуемому времени и объему памяти
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 29 2007, 01:00
Сообщение #124


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Alex_inventor @ Jan 29 2007, 01:37) *
Из всего вышесказанного возникают следующие вопросы:
1. Зачем вообще нужно ставить уровни и подуровни оптимизации, если можно оставить три вида максимально по коду, по времени, смешанное. Ну например в примере выше при O-0 и O-1 дополняется лишняя инструкция на пустом месте, в данном случае это 25% проигрыша, нельзя было что ли сразу как при O-2, O-3?
2. Как вообще (по каким критериям) выбирается эта оптимизация. В хелпе uVision ничего не сказано?
3. Какую оптимизацию посоветуете вы (при каких условиях)?
4. Чего стоит опасаться? А то я пока разобрался что это грёбаная оптимизация angry.gif , ни мог понять куда девается моя пауза wacko.gif , думал компилятор глючит.


Я думаю вот что:
1. При отладке, например, удобнее, чтобы оптимизация была выключена. Иначе сложнее с асмом разбираться. Компилятор такие перлы иногда творит - ты теперь видел smile.gif
2. По критериям разработчика - то есть тебя. В зависимости от того, какой код тебе надо - быстрый или компактный или и то и другое.
4. Интересно, значит, совсем цикл задержки пропал? Вот это оптимизация!! biggrin.gif

Сообщение отредактировал sonycman - Jan 29 2007, 01:02
Go to the top of the page
 
+Quote Post
Alex_inventor
сообщение Jan 29 2007, 01:40
Сообщение #125


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744



Спасибо за ответы, но я вообще имел в виду конкретно значения O-0, O-1…
Эти значения где-нибудь описывают, особенности какие-нибудь? Или это всё условность, а особенности знает только кмпиляторописатели(и то может уже забыли, ведь их тысяча может быть) А простому юзеру остаётся, тупа переключать оптимизцию и сравнивать получившийся размер кода или быстродействие, и параллельно следит не рухнут ли отдельные участки кода или прога в целом?
Вы советуете писать вначале прогу без оптимизации. А как вам такое умозаключение:
Если написать огромный проект без оптимизации, он получится большого размера, медленнее, но в принципе будет работать так как написан. Далее включаем оптимизацию, код будет подвергнут жёсткому насилию со стороны компилятора, что наверняка вызовет множественные логические разрушения хаотичного порядка. Вполне возможна неадекватная работа программы, влоть до полного отказа работоспособности. Я имею ввиду алгоритм работы программы. И мы даже не будем знать из за чего, потому, что так как проект написан целиком, то кажущийся нам сбойный блок, может и не быть сбойным, а работать неправильно потому, что получил сбойные данные. Т.е. появляется пирамидальный эффект накопления ошибки smile3046.gif .
Если же сразу включить оптимизацию, логические ошибки компилятора будут устранятся по мере их появления. Локализовать ошибку будет просто. А весь последующий код будет строится на правильно работающем фундаменте.
Если в моих рассуждениях ошибка blink.gif ?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 29 2007, 01:47
Сообщение #126


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Alex_inventor @ Jan 29 2007, 02:40) *
А простому юзеру остаётся, тупа переключать оптимизцию и сравнивать получившийся размер кода или быстродействие, и параллельно следит не рухнут ли отдельные участки кода или прога в целом?


Это ты верно заметил biggrin.gif
Вот что написано в хелпе:

Optimization - Control compiler code optimization for the generated code:
Default: Use the compiler default or the setting of a higher Target or Group level.
Level 0 (-O0): Turn off all optimization, except some simple source transformations.
Level 1 (-O1): Turn off optimizations that seriously degrade the debug view.
Level 2 (-O2): High optimization (default level). The debug view might be less satisfactory because the mapping of object code to source code is not always clear.
Level 3 (-O3): Maximum optimization. Note that Level 3 in combination with Optimize for Time may generate more code that Level 2 since it may unroll loops.
Optimize for Time - Reduce execution time at the possible expense of a larger code size.

Так ведь никто не заставляет тебя включать эти оптимизации. Не трогай их и всё smile.gif
Можешь сам писать код максимально оптимизированно - как умеешь.

А почему бы и сразу не выставить третий уровень оптимизации?
Даже интересно потом будет трассировать smile.gif

Сообщение отредактировал sonycman - Jan 29 2007, 01:54
Go to the top of the page
 
+Quote Post
Alex_inventor
сообщение Jan 29 2007, 02:16
Сообщение #127


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744



Выкладываю обещанный, вымученный проект. Проект даёт возможность начать работать с UART, рассчитан на новичков и даёт неплохой старт. Госпада жду от вас подобные проекты с подробнейшими коментариями. smile.gif cheers.gif

Сообщение отредактировал Alex_inventor - Jan 29 2007, 02:53
Прикрепленные файлы
Прикрепленный файл  ARM_first.rar ( 58.49 килобайт ) Кол-во скачиваний: 86
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 29 2007, 02:30
Сообщение #128


Гуру
******

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



Цитата(sonycman @ Jan 28 2007, 23:21) *
А почему только 1-2 байтов? Что будет мешать зарядить буфер на передачу 32 байтов? Или 64?

Там обсуждается прием SPI - 8-16 бит а промежуточного FIFO-то и нет. Причем в общем случае передачи без приема в SPI нет. Откуда-куда "заряжать" smile.gif.
Кроме того даже "зарядив" тупо в одну сторону придется задуматься о поведении
SS при передаче этого пакета.
Цитата
Да, понятно, что DMA буде тормозить CPU при доступе к памяти, но всё равно это лучше, чем записывать ручками каждый байт в SPI?

Близко к "один хрен" sad.gif

Цитата
А в SAM7 порт SSP не точно такой-же, как в LPC?
То есть в LPC SSP может работать в точности как обычный SPI, а у SAM7 нет?

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

Цитата
Я же говорю, что эти два ARMа как два калеки - изъяны есть у обоих, нет идеала...

Рассмотрите LPC23xx - как представитель семейства ARM7 он имеет много больше "идеальных" признаков. Подсказываю, что на этом форуме обсуждался smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Alex_inventor
сообщение Jan 29 2007, 02:35
Сообщение #129


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744



Вот оно даже как! blink.gif А я думал, что O-0…O-3 по возрастающей идёт. А на самом деле нет. cranky.gif Я использую код O-2. Золотая середина. Асм получается вполне читабельным.
Цитата
Можешь сам писать код максимально оптимизировано - как умеешь.

Писать то можно оптимизировано, но ведь это С. Оптимально только алгоритмы составлять можно, а оптимизация на уровни команд процессора – это исключительна работа компилятора. Совсем без оптимизации нельзя, так как есть ОГРОМНАЯ куча повторяющегося кода в любой программе. Пусть этот код и сваливает в кучу компилятор, и делает туда прыжки. Имхо, это безопасный вид оптимизации, но самый важный и результативный.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 29 2007, 02:37
Сообщение #130


Гуру
******

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



Цитата(Alex_inventor @ Jan 29 2007, 01:16) *
Проект показывает все аспекты работы с UART

Э.... погорячились sad.gif и сильно....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 29 2007, 02:47
Сообщение #131


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Jan 29 2007, 03:30) *
Там обсуждается прием SPI - 8-16 бит а промежуточного FIFO-то и нет. Причем в общем случае передачи без приема в SPI нет. Откуда-куда "заряжать" smile.gif.


Ну, я планирую подключить к SPI порту ЖКИ дисплей от сотового Siemens S65 - 132х176 16 бит.
Поток данных на него может быть большим - кусочек изображения 10 на 10 пикселей весит 200 байт.
Разве не получится сделать так: заряжаю в буфер DMA 200 байт - запускаю SPI на передачу.
Все 200 байт передаются без вмешательства CPU.
Так ведь много лучше, чем по байту/слову "пихать"? smile.gif

Цитата
Рассмотрите LPC23xx

Круто конечно, но TQFP 100 для меня многовато...
Go to the top of the page
 
+Quote Post
Alex_inventor
сообщение Jan 29 2007, 02:50
Сообщение #132


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744



Цитата
Э.... погорячились и сильно....

Ну prinf, разве что не написал? А что ещё нужно для начала? Показано как инитить, функции отправки свои, не библиотечные, что бы видеть как оно там крутится? Прерывания будут в следуюем релизе, я же говорил что проект постепенно наращивать буду. Чего вам такого принципиально не хватает? Ладно,изменю, чтобы глаза не резало.

Сообщение отредактировал Alex_inventor - Jan 29 2007, 02:54
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 29 2007, 02:55
Сообщение #133


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Alex_inventor @ Jan 29 2007, 03:35) *
Писать то можно оптимизировано, но ведь это С. Оптимально только алгоритмы составлять можно, а оптимизация на уровни команд процессора – это исключительна работа компилятора.

Можно делать вставки прямо на асме smile.gif

Цитата
Чего вам такого принципиально не хватает?

Да нормально всё! Для начала-то.
Работает smile.gif w00t.gif
Дерзай дальше.
А мэтры, конечно, только морщиться будут от наших "потуг", это понятно twak.gif

Сообщение отредактировал sonycman - Jan 29 2007, 02:59
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 29 2007, 03:05
Сообщение #134


Гуру
******

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



Цитата(sonycman @ Jan 29 2007, 01:47) *
Круто конечно, но TQFP 100 для меня многовато...

Ужас smile.gif 64 или 100 в чем проблема? Поскольку альтернатива не в DIP8, то уже все равно.



Цитата(sonycman @ Jan 29 2007, 01:55) *
А мэтры, конечно, только морщиться будут от наших "потуг", это понятно twak.gif

Если это в "мой огород", то я не про потуги а про претензии sad.gif на что-то полезное о которых пока
говорить крайне преждевременно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 29 2007, 03:07
Сообщение #135


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Jan 29 2007, 04:05) *
Если это в "мой огород", то я не про потуги а про претензии sad.gif на что-то полезное о которых пока
говорить крайне преждевременно.

Согласен.

Ну а насчёт SPI c передачей 200 байт - это реально сделать? Через DMA?

Сообщение отредактировал sonycman - Jan 29 2007, 03:09
Go to the top of the page
 
+Quote Post

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

 


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


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