Страница 5 из 9
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 01:52:56
kris95
Дак ясно то не со мной, а с тобой. Что кое кто по3,14здеть любит
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 01:56:22
Arlleex
kris95 писал(а):Дак ясно то не со мной, а с тобой. Что кое кто по3,14здеть любит
воздержусь...
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 10:42:01
Satyr
ELcat писал(а):Надоело как-то возиться с AVRками, захотелось мощщи

решил освоить ARM7.
Несколько не оптимальное решение. Мощь там средненькая, и чтука устаревшая.
ARMы на ядре Cortex-M3 стоят сейчас практически как ARM7, а по частотам и производительности на мегагерц заметно впереди. Так что какой смысл ?
С AVR тоже соскакивать не обязательно. Есть AVR32 - по удельной производительности не хуже кортекса. И перифирия и гибкость ее разброса по ногам интереснее, чем во всех виденных мной вещах на ARMах. Вот только недолюбливают у нас продавцы AVR32 - реально дефицит.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 10:45:55
Satyr
ELcat писал(а):
товать. Я сам знаком только с CodeVision AVR, но я решил работать в IAR, просто показалось, что эта среда более популярна в нете.
Среда там весьма архаична, но компиляторы IAR очень суровы.
Для AVR32 разница в производительности кода, компиленного GNU и IAR компилером легко может достигать 1.5 и более раз.
Но цены на IAR ужосающие...
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 10:50:10
Satyr
neonix писал(а):. Я вот всё ищу ARM7 или CortexM3 с внешней SDRAM, ибо хочеться по настоящему больших объёмов памяти
А что искать ? это не проблема. Практически у всех производителей на чипы от 100 ног это часто есть. EBI, EMI и подобными терминами называется в анонсах.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 11:01:24
SII
ELcat писал(а):SII Честно, не могу допереть. Допустим у меня задача с максимально возможной скоростью выдвинуть какую-то последовательность констант, допустим для инициализации чего-то там не важно чего. В AVR всё просто
PORTB=00;
PORTB=0F;
PORTB=B5;
PORTB=BA;
PORTB=04;
PORTB=17;
Такая последовательность вылетит за 6 циклов ядра, у ARMа же для решения подобной задачи потребуется в два раза больше циклов. Если я не прав, то поправь меня.

Не 6, а 12 циклов (загрузка константы в регистр, вывод регистра в порт). В АРМах -- ровно столько же (во всяком случае, в AT91SAM9261 и AT91SAM7X..., но подозреваю, что и в остальных АТМЕЛовских тоже): загрузка в регистр, затем вывод в порт PIO_ODSR. А теперь подсчитайте, сколько тактов нужно АРМу и сколько АВРке для изменения значения одного бита порта при сохранении неизменными всех остальных.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 12:47:45
Increasing
Где в Украине можно приобрести эту сладкую парочку микроконтроллеров на ядре ARM Cortex M3? По человеческим ценам естественно.
LPC1343FBD48 -1 шт.
STM32F103C8T6 -1 шт.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 12:57:25
neonix
Satyr писал(а):
А что искать ? это не проблема. Практически у всех производителей на чипы от 100 ног это часто есть. EBI, EMI и подобными терминами называется в анонсах.
Увы не у всех чипов контроллер внешней памяти имеет возможность подключения SDRAM. Камни с SDRAM контроллером можно пересчитать на пальцах одной руки

Например у STM нет ни одного Cortex M3 МК с интерфейсом к SDRAM. У NXP только пару чипов из старых ARM7, ну и новый LPC 1800 который пока фиг купишь. У Atmel всего одно семейство с ядром ARM7, но его щас не купить из-за проблем с поставкой чипов у производителя. Так, что наличие EBI и EMI еще ничего не говорит

Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 13:00:13
stas00n
SII писал(а):ELcat писал(а):SII Честно, не могу допереть. Допустим у меня задача с максимально возможной скоростью выдвинуть какую-то последовательность констант, допустим для инициализации чего-то там не важно чего. В AVR всё просто
PORTB=00;
PORTB=0F;
PORTB=B5;
PORTB=BA;
PORTB=04;
PORTB=17;
Такая последовательность вылетит за 6 циклов ядра, у ARMа же для решения подобной задачи потребуется в два раза больше циклов. Если я не прав, то поправь меня.

Не 6, а 12 циклов (загрузка константы в регистр, вывод регистра в порт).
Тут согласен - на АВР запись в порт константы - 2 машиных цикла:
Код: Выделить всё
LDI r16,0; загрузка константы
OUT portb,r16; запись в порт
SII писал(а):
В АРМах -- ровно столько же (во всяком случае, в AT91SAM9261 и AT91SAM7X..., но подозреваю, что и в остальных АТМЕЛовских тоже): загрузка в регистр, затем вывод в порт PIO_ODSR.
В АРМах всего на 1 цикл больше:
Код: Выделить всё
ldr r2, [pc, #368] ; взятие адреса в r2
movs r3, #209 ; грузим 8-битную константу 0xd1
str r3, [r2] ; запись по адресу из r2
или
Код: Выделить всё
ldr r2, [pc, #320] ; взятие адреса в r2
ldr r3, [pc, #324] ; взятие константы из памяти в r3
str r3, [r2, #24] ;запись
SII писал(а):
А теперь подсчитайте, сколько тактов нужно АРМу и сколько АВРке для изменения значения одного бита порта при сохранении неизменными всех остальных.
Тут гораздо прикольней, АВР-ке надо 1 инструкцию, например
а вот арму надо в лучшем случае минимум 5, компилятор часто растягивает на 6-8 циклов:
Код: Выделить всё
ldr r1, [pc, #316] ; взятие адреса порта в r1
ldr r2, [r1] ;читаем значение порта в r2
movs r3, #2 ;маска для поразрядного ИЛИ в r3
orrs r3, r2 ;ИЛИ
str r3, [r1] ;сохраняем новое значение в порт
Кроме того, для хранения адреса к примеру, порта для обращения к нему, для хранения констант расходуется по 4 байта флеши, часто по многу раз.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 13:10:26
stas00n
Справедливости ради могу отметить, что если надо поменять более 1 бита, на авр получается почти так же:
Ну а если надо оперировать более чем 1 байтом, арм выигрывает однозначно (на авр, понятно, количество инструкций возрастает пропорционально)
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 13:12:55
Satyr
neonix писал(а):Satyr писал(а):
А что искать ? это не проблема. Практически у всех производителей на чипы от 100 ног это часто есть. EBI, EMI и подобными терминами называется в анонсах.
Увы не у всех чипов контроллер внешней памяти имеет возможность подключения SDRAM. Камни с SDRAM контроллером можно пересчитать на пальцах одной руки
Аа, прям принципиально сдрам надо ? То, что попадалось на глаза, обычно давало подсоединить 2-4 банка по 64мега максимум чего либо. Да и с какой скорость оно работать будет - тоже вопрос. Возможно, и самому захочется за те же деньги поменьше, но SRAM и пошустрей.
Валяется у меня платка на AVR32 с SDRAM - можно померять. НО! видел камни, где часть SRAM напрямую к ядру приделана, половина через внутреннюю шину. Так вот даже там вторая работает не так шустро, как первая. А внешняя SDRAM, да ядро без кеша...
Т.е. вопрос довольно научный.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 13:38:55
ELcat
SII Дело в том, что у АВРок команды 16битные, поэтому 8битная константа идёт с командой в комплекте
Increasing на imrad есть, посмотри цены, мож подойдёт.
Satyr я смотрел и на АВР32 и на С3М, но на момен написания этой статьи у меня уже было прикуплено годом ранее пара атмеловских сам7 камней, ну не выкидать же. По поводу АВР32, я ими впечатлён, но их в украине нету и я не нашёл паябельных в их числе. Да и вообще с такими темпами развития микроконтроллерной индустрии скоро будете спрашивать "а почему не применил ARM11 QuadCore 1,2ГГц в LQFP-100 корпусе?"
Жека, который Stalker46 и Kris95, а вы случайно не парочка кроликов-тролликов? То что вы делаете, это не хорошо!
Всем! Количество и расположение конденсаторов не зависит от вольтажа контроллера, просто так сложилось, что более новые технологии более быстрых контроллеров рассчитаны на более низкие напряжения. Это связано со степенью интеграции, поскольку становятся меньшими пробивные напряжения, и с тем, что емкостя внутренних линий и связей гораздо быстрее перезарядить до 1,8в, чем до 5. Количество и расположение конденсаторов зависит от требований к помехозащищённости системы, которая в свою очередь определяется величиной потребляемого тока, быстродействием и чувствительностью входных и внутренних цепей к пульсациям питающего напряжения. Я видел, как ребята стартовали филипковский АРМ7 контроллер, распаянный на макетку-переходник, соединённый проводами несколько см с основной платой, на которой стояли кондёры по питанию, и это чудо ещё и работало. Плохая разводка ещё не значит, что не будет работать, она лишь задаёт степень вероятности, с которой будут возникать сбои. И хвати, наконец, жевать одно и то же!
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 14:09:12
SII
ELcat писал(а):SII Дело в том, что у АВРок команды 16битные, поэтому 8битная константа идёт с командой в комплекте

А адрес порта?

Команды CBI/SBI позволяют установить или сбросить одиночный бит, но только для 32 первых портов (и выполняются, кстати, два цикла, а не один, как OUT, позволяющая обращаться к 64 портам).
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 14:15:35
SII
stas00n писал(а):SII писал(а):
А теперь подсчитайте, сколько тактов нужно АРМу и сколько АВРке для изменения значения одного бита порта при сохранении неизменными всех остальных.
Тут гораздо прикольней, АВР-ке надо 1 инструкцию, например
а вот арму надо в лучшем случае минимум 5, компилятор часто растягивает на 6-8 циклов:
Код: Выделить всё
ldr r1, [pc, #316] ; взятие адреса порта в r1
ldr r2, [r1] ;читаем значение порта в r2
movs r3, #2 ;маска для поразрядного ИЛИ в r3
orrs r3, r2 ;ИЛИ
str r3, [r1] ;сохраняем новое значение в порт
Кроме того, для хранения адреса к примеру, порта для обращения к нему, для хранения констант расходуется по 4 байта флеши, часто по многу раз.
Компилятор сразу отбрасываем -- если он тупой, это не значит, что у процессора плохая система команд

Ну а теперь собственно по теме.
Во-первых, у SBI, как я писал постом выше, ограниченный набор адресуемых портов, а значит, это не полноценное решение. Во-вторых, она выполняется 2 цикла, а не один. В-третьих, на АРМе вовсе не требуется пять команд, просто надо другие порты использовать: PIO_SODR для установки, PIO_CODR для сброса, так что остаётся три команды. Ну а в-четвёртых, запись в эти порты позволяет установить или сбросить несколько произвольных разрядов одновременно, не затрагивая остальные, ну а на AVR такой возможности нет. Так что... АРМ лучше

Другое дело, что глупо напрямую сравнивать 8- и 32-разрядные процессоры (это примерно то же самое, что сравнивать мелкую легковушку с 10-тонным грузовиком).
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 14:35:06
neonix
Satyr ну я думаю на ARM7 или Cortex M3 без кеша производительность с SDRAM упадет, но не на порядок. На AT91SAM9260 c ядром ARM9 и кешем, разницы в производительности между SDRAM и SRAM вообще не видно. Я готов смириться со снижением производительности ради повышения объёма памяти

Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 17:53:51
Satyr
neonix писал(а):На AT91SAM9260 c ядром ARM9 и кешем, разницы в производительности между SDRAM и SRAM вообще не видно.
Ну то другое дело. Там конвеер и кеш. SDRAM тем и примечательна, что скорость большая, да латентность тоже -)) С предвыборкой в кеш пофиг, а вот без...
Валяется у меня такая чтука, но на тему SDRAM не мерял, надо будет при случае поглядеть

Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 21:18:34
Stepan
Таки давайте не засирать тему, "старт на коленке", а в бой уже пошли промышленные платы.
Хотя я тоже для первого пуска сам решил не разводить, купил вот
такого зверя за тыщу с чем то на основе at91sam7s256 + доп флеш память.
А вообще тут главное пересесть на новую платформу ИМХО, загрузить программу в проц и запустить отладку с житагом.
Потом перейти на другой арм легче будет. Я в кейле пробую, пока нравится, хотя после ассемблера тяжеловато идет. Но скоро первый USB проектик вылупится

.
Как писать код это можно ориентироваться на
примеры от производителя , хотя отладки там заложено слишком много, иногда и поудалять не грех.
Ну а для общего образования рекомендую почитать:
http://microsin.ru/content/category/5/36/44/ - там есть и "записи чайника" и "FreeRTOS" (начинающим читать с конца)...
http://forum.ixbt.com/topic.cgi?id=48:5248 - хорошая подборка ссылок в первом посте
http://www.gaw.ru/html.cgi/txt/doc/micr ... arh_sam7s/ - ну и ГАВ конечно!(сам не читал)
еще и DI-Halt на эту тему пописывать начал

, хорошо пишет, правда о других камнях.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 21:29:02
Stepan
Кстати я для кейла ещё JTAG не нашел, спецы, может посоветуете?
но вот
ссыль сейчас читаю.
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 22:18:19
SII
Stepan писал(а):Таки давайте не засирать тему, "старт на коленке", а в бой уже пошли промышленные платы
Ну, лично я б и рекомендовал начинать именно с промышленных плат

Во всяком случае, с мелких модулей, где распаяны процессор, стабилизатор, кварц и, может, какая-нить датафлэшка. Ибо ручками паять корпус, у которого около сотни ног, весьма напряжно (да и плату под него делать тоже).
Re: AT91SAM7 старт с коленки
Добавлено: Пт ноя 05, 2010 23:28:03
stas00n
SII писал(а):Во-первых, у SBI, как я писал постом выше, ограниченный набор адресуемых портов, а значит, это не полноценное решение. Во-вторых, она выполняется 2 цикла, а не один.
Этот момент я не учел, спасибо.
SII писал(а):В-третьих, на АРМе вовсе не требуется пять команд, просто надо другие порты использовать: PIO_SODR для установки, PIO_CODR для сброса, так что остаётся три команды.
У меня нету такого прибамбаса для портов (есть для некоторой другой периферии, для прерываний и еще чего-то; у меня камень NXP LPC1114 - ядро cortex M0). А код я приводил не для порта I/O, а для какого-то другого периферийного регистра (по-моему таймера), но суть та же.
SII писал(а):Другое дело, что глупо напрямую сравнивать 8- и 32-разрядные процессоры
Дык напрямую и не сравниваем. Разная разрядность, разная архитектура, в каждом свои прелести. В армах производительность, в аврах - простота и компактность кода.