|
|
  |
Хочу попробовать ARM, подскажите, что для этого нужно?, Какой проц выбрать, отлад. платку и какой софт? |
|
|
|
Jan 29 2007, 00:21
|

Любитель
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jan 29 2007, 00:37
|
Участник

Группа: Новичок
Сообщений: 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. Чего стоит опасаться? А то я пока разобрался что это грёбаная оптимизация  , ни мог понять куда девается моя пауза  , думал компилятор глючит.
|
|
|
|
|
Jan 29 2007, 01:00
|

Любитель
    
Группа: Свой
Сообщений: 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. Чего стоит опасаться? А то я пока разобрался что это грёбаная оптимизация  , ни мог понять куда девается моя пауза  , думал компилятор глючит. Я думаю вот что: 1. При отладке, например, удобнее, чтобы оптимизация была выключена. Иначе сложнее с асмом разбираться. Компилятор такие перлы иногда творит - ты теперь видел  2. По критериям разработчика - то есть тебя. В зависимости от того, какой код тебе надо - быстрый или компактный или и то и другое. 4. Интересно, значит, совсем цикл задержки пропал? Вот это оптимизация!!
Сообщение отредактировал sonycman - Jan 29 2007, 01:02
|
|
|
|
|
Jan 29 2007, 01:40
|
Участник

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

|
Спасибо за ответы, но я вообще имел в виду конкретно значения O-0, O-1… Эти значения где-нибудь описывают, особенности какие-нибудь? Или это всё условность, а особенности знает только кмпиляторописатели(и то может уже забыли, ведь их тысяча может быть) А простому юзеру остаётся, тупа переключать оптимизцию и сравнивать получившийся размер кода или быстродействие, и параллельно следит не рухнут ли отдельные участки кода или прога в целом? Вы советуете писать вначале прогу без оптимизации. А как вам такое умозаключение: Если написать огромный проект без оптимизации, он получится большого размера, медленнее, но в принципе будет работать так как написан. Далее включаем оптимизацию, код будет подвергнут жёсткому насилию со стороны компилятора, что наверняка вызовет множественные логические разрушения хаотичного порядка. Вполне возможна неадекватная работа программы, влоть до полного отказа работоспособности. Я имею ввиду алгоритм работы программы. И мы даже не будем знать из за чего, потому, что так как проект написан целиком, то кажущийся нам сбойный блок, может и не быть сбойным, а работать неправильно потому, что получил сбойные данные. Т.е. появляется пирамидальный эффект накопления ошибки  . Если же сразу включить оптимизацию, логические ошибки компилятора будут устранятся по мере их появления. Локализовать ошибку будет просто. А весь последующий код будет строится на правильно работающем фундаменте. Если в моих рассуждениях ошибка  ?
|
|
|
|
|
Jan 29 2007, 01:47
|

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

|
Цитата(Alex_inventor @ Jan 29 2007, 02:40)  А простому юзеру остаётся, тупа переключать оптимизцию и сравнивать получившийся размер кода или быстродействие, и параллельно следит не рухнут ли отдельные участки кода или прога в целом? Это ты верно заметил Вот что написано в хелпе: 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. Так ведь никто не заставляет тебя включать эти оптимизации. Не трогай их и всё  Можешь сам писать код максимально оптимизированно - как умеешь. А почему бы и сразу не выставить третий уровень оптимизации? Даже интересно потом будет трассировать
Сообщение отредактировал sonycman - Jan 29 2007, 01:54
|
|
|
|
|
Jan 29 2007, 02:30
|

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

|
Цитата(sonycman @ Jan 28 2007, 23:21)  А почему только 1-2 байтов? Что будет мешать зарядить буфер на передачу 32 байтов? Или 64? Там обсуждается прием SPI - 8-16 бит а промежуточного FIFO-то и нет. Причем в общем случае передачи без приема в SPI нет. Откуда-куда "заряжать"  . Кроме того даже "зарядив" тупо в одну сторону придется задуматься о поведении SS при передаче этого пакета. Цитата Да, понятно, что DMA буде тормозить CPU при доступе к памяти, но всё равно это лучше, чем записывать ручками каждый байт в SPI? Близко к "один хрен"  Цитата А в SAM7 порт SSP не точно такой-же, как в LPC? То есть в LPC SSP может работать в точности как обычный SPI, а у SAM7 нет? Вопроса не понял, как "простой" они все могут. В более изощренных применениях есть отличия возможно дающие предпочтение одному из применений. Но отличий в наворотах безоговорочно ставящих один из чипов на первое место лично я не отмечаю. Цитата Я же говорю, что эти два ARMа как два калеки - изъяны есть у обоих, нет идеала... Рассмотрите LPC23xx - как представитель семейства ARM7 он имеет много больше "идеальных" признаков. Подсказываю, что на этом форуме обсуждался
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 29 2007, 02:35
|
Участник

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

|
Вот оно даже как!  А я думал, что O-0…O-3 по возрастающей идёт. А на самом деле нет.  Я использую код O-2. Золотая середина. Асм получается вполне читабельным. Цитата Можешь сам писать код максимально оптимизировано - как умеешь. Писать то можно оптимизировано, но ведь это С. Оптимально только алгоритмы составлять можно, а оптимизация на уровни команд процессора – это исключительна работа компилятора. Совсем без оптимизации нельзя, так как есть ОГРОМНАЯ куча повторяющегося кода в любой программе. Пусть этот код и сваливает в кучу компилятор, и делает туда прыжки. Имхо, это безопасный вид оптимизации, но самый важный и результативный.
|
|
|
|
|
Jan 29 2007, 02:47
|

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

|
Цитата(zltigo @ Jan 29 2007, 03:30)  Там обсуждается прием SPI - 8-16 бит а промежуточного FIFO-то и нет. Причем в общем случае передачи без приема в SPI нет. Откуда-куда "заряжать"  . Ну, я планирую подключить к SPI порту ЖКИ дисплей от сотового Siemens S65 - 132х176 16 бит. Поток данных на него может быть большим - кусочек изображения 10 на 10 пикселей весит 200 байт. Разве не получится сделать так: заряжаю в буфер DMA 200 байт - запускаю SPI на передачу. Все 200 байт передаются без вмешательства CPU. Так ведь много лучше, чем по байту/слову "пихать"?  Цитата Рассмотрите LPC23xx Круто конечно, но TQFP 100 для меня многовато...
|
|
|
|
|
Jan 29 2007, 02:50
|
Участник

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

|
Цитата Э.... погорячились и сильно.... Ну prinf, разве что не написал? А что ещё нужно для начала? Показано как инитить, функции отправки свои, не библиотечные, что бы видеть как оно там крутится? Прерывания будут в следуюем релизе, я же говорил что проект постепенно наращивать буду. Чего вам такого принципиально не хватает? Ладно,изменю, чтобы глаза не резало.
Сообщение отредактировал Alex_inventor - Jan 29 2007, 02:54
|
|
|
|
|
Jan 29 2007, 02:55
|

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

|
Цитата(Alex_inventor @ Jan 29 2007, 03:35)  Писать то можно оптимизировано, но ведь это С. Оптимально только алгоритмы составлять можно, а оптимизация на уровни команд процессора – это исключительна работа компилятора. Можно делать вставки прямо на асме  Цитата Чего вам такого принципиально не хватает? Да нормально всё! Для начала-то. Работает Дерзай дальше. А мэтры, конечно, только морщиться будут от наших "потуг", это понятно
Сообщение отредактировал sonycman - Jan 29 2007, 02:59
|
|
|
|
|
Jan 29 2007, 03:05
|

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

|
Цитата(sonycman @ Jan 29 2007, 01:47)  Круто конечно, но TQFP 100 для меня многовато... Ужас  64 или 100 в чем проблема? Поскольку альтернатива не в DIP8, то уже все равно. Цитата(sonycman @ Jan 29 2007, 01:55)  А мэтры, конечно, только морщиться будут от наших "потуг", это понятно  Если это в "мой огород", то я не про потуги а про претензии  на что-то полезное о которых покаговорить крайне преждевременно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 29 2007, 03:07
|

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

|
Цитата(zltigo @ Jan 29 2007, 04:05)  Если это в "мой огород", то я не про потуги а про претензии  на что-то полезное о которых покаговорить крайне преждевременно. Согласен. Ну а насчёт SPI c передачей 200 байт - это реально сделать? Через DMA?
Сообщение отредактировал sonycman - Jan 29 2007, 03:09
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|